@mzebley/mark-down 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inline.ts","../../../node_modules/yaml/browser/dist/nodes/identity.js","../../../node_modules/yaml/browser/dist/visit.js","../../../node_modules/yaml/browser/dist/doc/directives.js","../../../node_modules/yaml/browser/dist/doc/anchors.js","../../../node_modules/yaml/browser/dist/doc/applyReviver.js","../../../node_modules/yaml/browser/dist/nodes/toJS.js","../../../node_modules/yaml/browser/dist/nodes/Node.js","../../../node_modules/yaml/browser/dist/nodes/Alias.js","../../../node_modules/yaml/browser/dist/nodes/Scalar.js","../../../node_modules/yaml/browser/dist/doc/createNode.js","../../../node_modules/yaml/browser/dist/nodes/Collection.js","../../../node_modules/yaml/browser/dist/stringify/stringifyComment.js","../../../node_modules/yaml/browser/dist/stringify/foldFlowLines.js","../../../node_modules/yaml/browser/dist/stringify/stringifyString.js","../../../node_modules/yaml/browser/dist/stringify/stringify.js","../../../node_modules/yaml/browser/dist/stringify/stringifyPair.js","../../../node_modules/yaml/browser/dist/log.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js","../../../node_modules/yaml/browser/dist/nodes/addPairToJSMap.js","../../../node_modules/yaml/browser/dist/nodes/Pair.js","../../../node_modules/yaml/browser/dist/stringify/stringifyCollection.js","../../../node_modules/yaml/browser/dist/nodes/YAMLMap.js","../../../node_modules/yaml/browser/dist/schema/common/map.js","../../../node_modules/yaml/browser/dist/nodes/YAMLSeq.js","../../../node_modules/yaml/browser/dist/schema/common/seq.js","../../../node_modules/yaml/browser/dist/schema/common/string.js","../../../node_modules/yaml/browser/dist/schema/common/null.js","../../../node_modules/yaml/browser/dist/schema/core/bool.js","../../../node_modules/yaml/browser/dist/stringify/stringifyNumber.js","../../../node_modules/yaml/browser/dist/schema/core/float.js","../../../node_modules/yaml/browser/dist/schema/core/int.js","../../../node_modules/yaml/browser/dist/schema/core/schema.js","../../../node_modules/yaml/browser/dist/schema/json/schema.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/float.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/int.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/set.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js","../../../node_modules/yaml/browser/dist/schema/tags.js","../../../node_modules/yaml/browser/dist/schema/Schema.js","../../../node_modules/yaml/browser/dist/stringify/stringifyDocument.js","../../../node_modules/yaml/browser/dist/doc/Document.js","../../../node_modules/yaml/browser/dist/errors.js","../../../node_modules/yaml/browser/dist/compose/resolve-props.js","../../../node_modules/yaml/browser/dist/compose/util-contains-newline.js","../../../node_modules/yaml/browser/dist/compose/util-flow-indent-check.js","../../../node_modules/yaml/browser/dist/compose/util-map-includes.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-map.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-seq.js","../../../node_modules/yaml/browser/dist/compose/resolve-end.js","../../../node_modules/yaml/browser/dist/compose/resolve-flow-collection.js","../../../node_modules/yaml/browser/dist/compose/compose-collection.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-scalar.js","../../../node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js","../../../node_modules/yaml/browser/dist/compose/compose-scalar.js","../../../node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js","../../../node_modules/yaml/browser/dist/compose/compose-node.js","../../../node_modules/yaml/browser/dist/compose/compose-doc.js","../../../node_modules/yaml/browser/dist/compose/composer.js","../../../node_modules/yaml/browser/dist/parse/cst-visit.js","../../../node_modules/yaml/browser/dist/parse/cst.js","../../../node_modules/yaml/browser/dist/parse/lexer.js","../../../node_modules/yaml/browser/dist/parse/line-counter.js","../../../node_modules/yaml/browser/dist/parse/parser.js","../../../node_modules/yaml/browser/dist/public-api.js","../src/errors.ts","../src/front-matter.ts","../../../node_modules/marked/src/defaults.ts","../../../node_modules/marked/src/helpers.ts","../../../node_modules/marked/src/Tokenizer.ts","../../../node_modules/marked/src/rules.ts","../../../node_modules/marked/src/Lexer.ts","../../../node_modules/marked/src/Renderer.ts","../../../node_modules/marked/src/TextRenderer.ts","../../../node_modules/marked/src/Parser.ts","../../../node_modules/marked/src/Hooks.ts","../../../node_modules/marked/src/Instance.ts","../../../node_modules/marked/src/marked.ts","../src/markdown.ts"],"sourcesContent":["import { parseFrontMatter, type FrontMatterResult } from \"./front-matter\";\nimport { renderMarkdown } from \"./markdown\";\n\nexport interface InlineMarkdownOptions {\n selector?: string;\n processFrontMatter?: boolean;\n applyMetaToDom?: boolean;\n}\n\nconst DEFAULT_SELECTOR = \"[data-markdown]\";\n\nexport function enhanceInlineMarkdown(options: InlineMarkdownOptions = {}): void {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const selector = options.selector ?? DEFAULT_SELECTOR;\n const processFrontMatter = options.processFrontMatter !== false;\n const applyMetaToDom = options.applyMetaToDom !== false;\n\n const elements = Array.from(document.querySelectorAll<HTMLElement>(selector));\n for (const element of elements) {\n if (element.dataset.markdownProcessed === \"true\") {\n continue;\n }\n processElement(element, { processFrontMatter, applyMetaToDom });\n }\n}\n\nfunction processElement(\n element: HTMLElement,\n options: { processFrontMatter: boolean; applyMetaToDom: boolean }\n): void {\n const raw = element.textContent ?? \"\";\n let frontMatter: FrontMatterResult | undefined;\n\n if (options.processFrontMatter) {\n try {\n frontMatter = parseFrontMatter(raw);\n } catch (error) {\n console.warn(\"[mark↓ inline] Failed to parse front matter for element:\", error);\n frontMatter = undefined;\n }\n }\n\n const body = frontMatter?.content ?? raw;\n const html = renderMarkdown(body);\n\n element.innerHTML = html;\n element.dataset.markdownProcessed = \"true\";\n\n if (options.applyMetaToDom && frontMatter?.hasFrontMatter) {\n applyMetaAttributes(element, frontMatter);\n }\n}\n\nfunction applyMetaAttributes(element: HTMLElement, frontMatter: FrontMatterResult): void {\n const { slug, meta, extra } = frontMatter;\n\n if (slug) {\n if (!element.id) {\n element.id = slug;\n }\n element.dataset.slug = slug;\n }\n\n if (meta.title) {\n element.dataset.title = meta.title;\n }\n\n if (meta.tags?.length) {\n element.dataset.tags = meta.tags.join(\",\");\n }\n\n const variant = typeof extra.variant === \"string\" ? extra.variant.trim() : \"\";\n if (variant) {\n element.classList.add(`md-block--${variant}`);\n }\n\n}\n","const ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexport { ALIAS, DOC, MAP, NODE_TYPE, PAIR, SCALAR, SEQ, hasAnchor, isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq };\n","import { isDocument, isNode, isPair, isCollection, isMap, isSeq, isScalar, isAlias } from './nodes/identity.js';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (isMap(node))\n return visitor.Map?.(key, node, path);\n if (isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (isPair(node))\n return visitor.Pair?.(key, node, path);\n if (isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexport { visit, visitAsync };\n","import { isNode } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && isNode(doc.contents)) {\n const tags = {};\n visit(doc.contents, (_key, node) => {\n if (isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexport { Directives };\n","import { isScalar, isCollection } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (isScalar(ref.node) || isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexport { anchorIsValid, anchorNames, createNodeAnchors, findNewAnchor };\n","/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexport { applyReviver };\n","import { hasAnchor } from './identity.js';\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexport { toJS };\n","import { applyReviver } from '../doc/applyReviver.js';\nimport { NODE_TYPE, isDocument } from './identity.js';\nimport { toJS } from './toJS.js';\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexport { NodeBase };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { visit } from '../visit.js';\nimport { ALIAS, isAlias, isCollection, isPair, hasAnchor } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nclass Alias extends NodeBase {\n constructor(source) {\n super(ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit(doc, {\n Node: (_key, node) => {\n if (isAlias(node) || hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexport { Alias };\n","import { SCALAR } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends NodeBase {\n constructor(value) {\n super(SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexport { Scalar, isScalarValue };\n","import { Alias } from '../nodes/Alias.js';\nimport { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (isDocument(value))\n value = value.contents;\n if (isNode(value))\n return value;\n if (isPair(value)) {\n const map = ctx.schema[MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[MAP]\n : Symbol.iterator in Object(value)\n ? schema[SEQ]\n : schema[MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexport { createNode };\n","import { createNode } from '../doc/createNode.js';\nimport { isNode, isPair, isCollection, isScalar } from './identity.js';\nimport { NodeBase } from './Node.js';\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && isScalar(node) ? node.value : node;\n else\n return isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexport { Collection, collectionFromPath, isEmptyPath };\n","/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexport { indentComment, lineComment, stringifyComment };\n","const FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexport { FOLD_BLOCK, FOLD_FLOW, FOLD_QUOTED, foldFlowLines };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { foldFlowLines, FOLD_FLOW, FOLD_QUOTED, FOLD_BLOCK } from './foldFlowLines.js';\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines(`${start}${foldedValue}${end}`, indent, FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.BLOCK_FOLDED:\n case Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexport { stringifyString };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { isPair, isAlias, isNode, isScalar, isCollection } from '../nodes/identity.js';\nimport { stringifyComment } from './stringifyComment.js';\nimport { stringifyString } from './stringifyString.js';\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (isScalar(node) || isCollection(node)) && node.anchor;\n if (anchor && anchorIsValid(anchor)) {\n anchors.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : isScalar(node)\n ? stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexport { createStringifyContext, stringify };\n","import { isCollection, isNode, isScalar, isSeq } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (isCollection(key) || (!isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n isCollection(key) ||\n (isScalar(key)\n ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexport { stringifyPair };\n","function debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n console.warn(warning);\n }\n}\n\nexport { debug, warn };\n","import { isScalar, isAlias, isSeq, isMap } from '../../nodes/identity.js';\nimport { Scalar } from '../../nodes/Scalar.js';\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (isScalar(key) &&\n (!key.type || key.type === Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexport { addMergeToJSMap, isMergeKey, merge };\n","import { warn } from '../log.js';\nimport { isMergeKey, addMergeToJSMap } from '../schema/yaml-1.1/merge.js';\nimport { createStringifyContext } from '../stringify/stringify.js';\nimport { isNode } from './identity.js';\nimport { toJS } from './toJS.js';\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (isMergeKey(ctx, key))\n addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (isNode(key) && ctx?.doc) {\n const strCtx = createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexport { addPairToJSMap };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyPair } from '../stringify/stringifyPair.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { NODE_TYPE, PAIR, isNode } from './identity.js';\n\nfunction createPair(key, value, ctx) {\n const k = createNode(key, undefined, ctx);\n const v = createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, NODE_TYPE, { value: PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (isNode(key))\n key = key.clone(schema);\n if (isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexport { Pair, createPair };\n","import { isNode, isPair } from '../nodes/identity.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexport { stringifyCollection };\n","import { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { Collection } from './Collection.js';\nimport { MAP, isPair, isScalar } from './identity.js';\nimport { Pair, createPair } from './Pair.js';\nimport { isScalarValue } from './Scalar.js';\n\nfunction findPair(items, key) {\n const k = isScalar(key) ? key.value : key;\n for (const it of items) {\n if (isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair(pair, pair?.value);\n }\n else\n _pair = new Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (isScalar(prev.value) && isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexport { YAMLMap, findPair };\n","import { isMap } from '../../nodes/identity.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)\n};\n\nexport { map };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { Collection } from './Collection.js';\nimport { SEQ, isScalar } from './identity.js';\nimport { isScalarValue } from './Scalar.js';\nimport { toJS } from './toJS.js';\n\nclass YAMLSeq extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (isScalar(prev) && isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexport { YAMLSeq };\n","import { isSeq } from '../../nodes/identity.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)\n};\n\nexport { seq };\n","import { stringifyString } from '../../stringify/stringifyString.js';\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexport { string };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexport { nullTag };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexport { boolTag };\n","function stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexport { stringifyNumber };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intHex, intOct };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { boolTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intOct, int, intHex } from './int.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n boolTag,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float\n];\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { map } from '../common/map.js';\nimport { seq } from '../common/seq.js';\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map, seq].concat(jsonScalars, jsonError);\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyString } from '../../stringify/stringifyString.js';\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.BLOCK_LITERAL);\n if (type !== Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexport { binary };\n","import { isSeq, isPair, isMap } from '../../nodes/identity.js';\nimport { createPair, Pair } from '../../nodes/Pair.js';\nimport { Scalar } from '../../nodes/Scalar.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nfunction resolvePairs(seq, onError) {\n if (isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (isPair(item))\n continue;\n else if (isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair(new Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = isPair(item) ? item : new Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexport { createPairs, pairs, resolvePairs };\n","import { isScalar, isPair } from '../../nodes/identity.js';\nimport { toJS } from '../../nodes/toJS.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\nimport { resolvePairs, createPairs } from './pairs.js';\n\nclass YAMLOMap extends YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (isPair(pair)) {\n key = toJS(pair.key, '', ctx);\n value = toJS(pair.value, key, ctx);\n }\n else {\n key = toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs = createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs = resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs.items) {\n if (isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexport { YAMLOMap, omap };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar(false),\n stringify: boolStringify\n};\n\nexport { falseTag, trueTag };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intBin, intHex, intOct };\n","import { isMap, isPair, isScalar } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { YAMLMap, findPair } from '../../nodes/YAMLMap.js';\n\nclass YAMLSet extends YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair(key.key, null);\n else\n pair = new Pair(key, null);\n const prev = findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = findPair(this.items, key);\n return !keepPair && isPair(pair)\n ? isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexport { YAMLSet, set };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexport { floatTime, intTime, timestamp };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { binary } from './binary.js';\nimport { trueTag, falseTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intBin, intOct, int, intHex } from './int.js';\nimport { merge } from './merge.js';\nimport { omap } from './omap.js';\nimport { pairs } from './pairs.js';\nimport { set } from './set.js';\nimport { intTime, floatTime, timestamp } from './timestamp.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n trueTag,\n falseTag,\n intBin,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float,\n binary,\n merge,\n omap,\n pairs,\n set,\n intTime,\n floatTime,\n timestamp\n];\n\nexport { schema };\n","import { map } from './common/map.js';\nimport { nullTag } from './common/null.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { boolTag } from './core/bool.js';\nimport { floatNaN, floatExp, float } from './core/float.js';\nimport { intOct, intHex, int } from './core/int.js';\nimport { schema } from './core/schema.js';\nimport { schema as schema$1 } from './json/schema.js';\nimport { binary } from './yaml-1.1/binary.js';\nimport { merge } from './yaml-1.1/merge.js';\nimport { omap } from './yaml-1.1/omap.js';\nimport { pairs } from './yaml-1.1/pairs.js';\nimport { schema as schema$2 } from './yaml-1.1/schema.js';\nimport { set } from './yaml-1.1/set.js';\nimport { timestamp, intTime, floatTime } from './yaml-1.1/timestamp.js';\n\nconst schemas = new Map([\n ['core', schema],\n ['failsafe', [map, seq, string]],\n ['json', schema$1],\n ['yaml11', schema$2],\n ['yaml-1.1', schema$2]\n]);\nconst tagsByName = {\n binary,\n bool: boolTag,\n float,\n floatExp,\n floatNaN,\n floatTime,\n int,\n intHex,\n intOct,\n intTime,\n map,\n merge,\n null: nullTag,\n omap,\n pairs,\n seq,\n set,\n timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary,\n 'tag:yaml.org,2002:merge': merge,\n 'tag:yaml.org,2002:omap': omap,\n 'tag:yaml.org,2002:pairs': pairs,\n 'tag:yaml.org,2002:set': set,\n 'tag:yaml.org,2002:timestamp': timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge)\n ? schemaTags.concat(merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexport { coreKnownTags, getTags };\n","import { MAP, SCALAR, SEQ } from '../nodes/identity.js';\nimport { map } from './common/map.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { getTags, coreKnownTags } from './tags.js';\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? getTags(compat, 'compat')\n : compat\n ? getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? coreKnownTags : {};\n this.tags = getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, MAP, { value: map });\n Object.defineProperty(this, SCALAR, { value: string });\n Object.defineProperty(this, SEQ, { value: seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexport { Schema };\n","import { isNode } from '../nodes/identity.js';\nimport { createStringifyContext, stringify } from './stringify.js';\nimport { indentComment, lineComment } from './stringifyComment.js';\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexport { stringifyDocument };\n","import { Alias } from '../nodes/Alias.js';\nimport { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';\nimport { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { toJS } from '../nodes/toJS.js';\nimport { Schema } from '../schema/Schema.js';\nimport { stringifyDocument } from '../stringify/stringifyDocument.js';\nimport { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';\nimport { applyReviver } from './applyReviver.js';\nimport { createNode } from './createNode.js';\nimport { Directives } from './directives.js';\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, NODE_TYPE, { value: DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [NODE_TYPE]: { value: DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode(value, tag, ctx);\n if (flow && isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (isEmptyPath(path))\n return !keepScalar && isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (isEmptyPath(path))\n return this.contents !== undefined;\n return isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexport { Document };\n","class YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexport { YAMLError, YAMLParseError, YAMLWarning, prettifyError };\n","function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexport { resolveProps };\n","function containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexport { containsNewline };\n","import { containsNewline } from './util-contains-newline.js';\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexport { flowIndentCheck };\n","import { isScalar } from '../nodes/identity.js';\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (isScalar(a) && isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexport { mapIncludes };\n","import { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexport { resolveBlockMap };\n","import { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveProps } from './resolve-props.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexport { resolveBlockSeq };\n","function resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexport { resolveEnd };\n","import { isPair } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexport { resolveFlowCollection };\n","import { isNode } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveBlockMap } from './resolve-block-map.js';\nimport { resolveBlockSeq } from './resolve-block-seq.js';\nimport { resolveFlowCollection } from './resolve-flow-collection.js';\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = isNode(res)\n ? res\n : new Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexport { composeCollection };\n","import { Scalar } from '../nodes/Scalar.js';\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexport { resolveBlockScalar };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexport { resolveFlowScalar };\n","import { isScalar, SCALAR } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { resolveBlockScalar } from './resolve-block-scalar.js';\nimport { resolveFlowScalar } from './resolve-flow-scalar.js';\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = isScalar(res) ? res : new Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexport { composeScalar };\n","function emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexport { emptyScalarPosition };\n","import { Alias } from '../nodes/Alias.js';\nimport { isScalar } from '../nodes/identity.js';\nimport { composeCollection } from './compose-collection.js';\nimport { composeScalar } from './compose-scalar.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { emptyScalarPosition } from './util-empty-scalar-position.js';\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexport { composeEmptyNode, composeNode };\n","import { Document } from '../doc/Document.js';\nimport { composeNode, composeEmptyNode } from './compose-node.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexport { composeDoc };\n","import { Directives } from '../doc/directives.js';\nimport { Document } from '../doc/Document.js';\nimport { YAMLWarning, YAMLParseError } from '../errors.js';\nimport { isCollection, isPair } from '../nodes/identity.js';\nimport { composeDoc } from './compose-doc.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new YAMLWarning(pos, code, message));\n else\n this.errors.push(new YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexport { Composer };\n","const BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexport { visit };\n","export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar.js';\nexport { stringify } from './cst-stringify.js';\nexport { visit } from './cst-visit.js';\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexport { BOM, DOCUMENT, FLOW_END, SCALAR, isCollection, isScalar, prettyToken, tokenType };\n","import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexport { Lexer };\n","/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexport { LineCounter };\n","import { tokenType } from './cst.js';\nimport { Lexer } from './lexer.js';\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexport { Parser };\n","import { Composer } from './compose/composer.js';\nimport { Document } from './doc/Document.js';\nimport { prettifyError, YAMLParseError } from './errors.js';\nimport { warn } from './log.js';\nimport { isDocument } from './nodes/identity.js';\nimport { LineCounter } from './parse/line-counter.js';\nimport { Parser } from './parse/parser.js';\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;\n return { lineCounter, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n const docs = Array.from(composer.compose(parser.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer.compose(parser.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document(value, _replacer, options).toString(options);\n}\n\nexport { parse, parseAllDocuments, parseDocument, stringify };\n","export class SnippetNotFoundError extends Error {\n readonly slug: string;\n\n constructor(slug: string) {\n super(`Snippet with slug '${slug}' was not found in the manifest.`);\n this.name = \"SnippetNotFoundError\";\n this.slug = slug;\n }\n}\n\nexport class ManifestLoadError extends Error {\n readonly cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = \"ManifestLoadError\";\n this.cause = cause instanceof Error ? cause : cause ? new Error(String(cause)) : undefined;\n }\n}\n","import { parse as parseYaml } from \"yaml\";\nimport { ManifestLoadError } from \"./errors\";\nimport type { SnippetMeta } from \"./types\";\n\nexport interface FrontMatterResult {\n content: string;\n meta: Partial<SnippetMeta>;\n extra: Record<string, unknown>;\n slug?: string;\n hasFrontMatter: boolean;\n}\n\nconst FRONT_MATTER_PATTERN = /^(?:\\uFEFF)?[ \\t\\r\\n]*---\\s*\\r?\\n([\\s\\S]*?)\\r?\\n---\\s*\\r?\\n?/;\n\nexport function parseFrontMatter(raw: string): FrontMatterResult {\n const match = FRONT_MATTER_PATTERN.exec(raw);\n if (!match) {\n return { content: raw, meta: {}, extra: {}, hasFrontMatter: false };\n }\n\n const yamlSection = match[1];\n let data: unknown;\n try {\n data = parseYaml(yamlSection) ?? {};\n } catch (error) {\n throw new ManifestLoadError(\"Failed to parse snippet front-matter.\", error);\n }\n\n if (!isRecord(data)) {\n return { content: raw.slice(match[0].length), meta: {}, extra: {}, hasFrontMatter: true };\n }\n\n const { known, extra } = splitFrontMatter(data);\n\n return {\n content: raw.slice(match[0].length),\n meta: known.meta,\n extra,\n slug: known.slug,\n hasFrontMatter: true\n };\n}\n\nfunction splitFrontMatter(\n data: Record<string, unknown>\n): { known: { meta: Partial<SnippetMeta>; slug?: string }; extra: Record<string, unknown> } {\n const meta: Partial<SnippetMeta> = {};\n const extra: Record<string, unknown> = {};\n let slug: string | undefined;\n\n for (const [key, value] of Object.entries(data)) {\n switch (key) {\n case \"slug\":\n slug = typeof value === \"string\" ? value : undefined;\n break;\n case \"title\":\n if (typeof value === \"string\") {\n meta.title = value;\n }\n break;\n case \"type\":\n if (typeof value === \"string\") {\n meta.type = value;\n }\n break;\n case \"order\":\n if (typeof value === \"number\") {\n meta.order = value;\n }\n break;\n case \"tags\":\n meta.tags = normalizeTags(value);\n break;\n case \"group\":\n if (typeof value === \"string\" || value === null) {\n meta.group = value;\n }\n break;\n case \"draft\":\n if (typeof value === \"boolean\") {\n meta.draft = value;\n }\n break;\n default:\n extra[key] = value;\n break;\n }\n }\n\n return { known: { meta, slug }, extra };\n}\n\nfunction normalizeTags(value: unknown): string[] | undefined {\n if (!value) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((item) => String(item));\n }\n if (typeof value === \"string\") {\n return value\n .split(\",\")\n .map((tag) => tag.trim())\n .filter(Boolean);\n }\n return undefined;\n}\n\nfunction isRecord(candidate: unknown): candidate is Record<string, unknown> {\n return Boolean(candidate) && typeof candidate === \"object\" && !Array.isArray(candidate);\n}\n","/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}$+<=>`^|~';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n/**\n * exports\n */\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { block, inline } from './rules.ts';\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport { unescape } from './helpers.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n","import { marked } from \"marked\";\n\nexport function renderMarkdown(markdown: string): string {\n const html = marked.parse(markdown);\n\n if (typeof html === \"string\") {\n return html;\n }\n\n throw new Error(\"renderMarkdown unexpectedly returned a Promise\");\n}\n"],"mappings":"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","names":["tag","res","res","_a","map","schema","node","schema","i","end","isBlock","tag","options","_a","tag","tag","map","value","map","schema","options","stringify","comment","str","schema","map","map","schema","schema","seq","seq","schema","tag","intIdentify","schema","seq","schema","pairs","map","schema","pairs","omap","seq","floatNaN","floatExp","float","intIdentify","intResolve","n","intStringify","intOct","int","intHex","schema","set","map","res","schema","intOct","int","intHex","floatNaN","floatExp","float","schema","tag","tags","merge","schema","options","options","tag","res","tag","composeNode","composeEmptyNode","tag","map","composeNode","composeEmptyNode","tag","seq","composeNode","composeEmptyNode","tag","isMap","map","CN","tag","value","end","tag","schema","_a","tag","options","options","options","BREAK","SKIP","REMOVE","visit","SCALAR","SCALAR","i","ch","SCALAR","list","map","start","seq","options","options","parser","tag","escape","html","link","lexer","options","list","tag","text","block","parser","tokens","args","ret","walkTokens","src","html","options","html"]}
1
+ {"version":3,"sources":["https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Tokenizer.ts","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Parser.ts","../../../node_modules/domelementtype/lib/index.js","../../../node_modules/domhandler/lib/node.js","../../../node_modules/domhandler/lib/index.js","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/encode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","../../../node_modules/dom-serializer/lib/foreignNames.js","../../../node_modules/dom-serializer/lib/index.js","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/stringify.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/traversal.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/manipulation.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/querying.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/legacy.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/helpers.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/feeds.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/index.ts","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/index.ts","../../../node_modules/escape-string-regexp/index.js","../../../node_modules/is-plain-object/dist/is-plain-object.js","../../../node_modules/deepmerge/dist/cjs.js","../../../node_modules/parse-srcset/src/parse-srcset.js","../../../node_modules/picocolors/picocolors.browser.js","../../../node_modules/postcss/lib/css-syntax-error.js","../../../node_modules/postcss/lib/stringifier.js","../../../node_modules/postcss/lib/stringify.js","../../../node_modules/postcss/lib/symbols.js","../../../node_modules/postcss/lib/node.js","../../../node_modules/postcss/lib/comment.js","../../../node_modules/postcss/lib/declaration.js","../../../node_modules/postcss/lib/container.js","../../../node_modules/postcss/lib/at-rule.js","../../../node_modules/postcss/lib/document.js","../../../node_modules/nanoid/non-secure/index.cjs","../../../node_modules/postcss/lib/previous-map.js","../../../node_modules/postcss/lib/input.js","../../../node_modules/postcss/lib/root.js","../../../node_modules/postcss/lib/list.js","../../../node_modules/postcss/lib/rule.js","../../../node_modules/postcss/lib/fromJSON.js","../../../node_modules/postcss/lib/map-generator.js","../../../node_modules/postcss/lib/tokenize.js","../../../node_modules/postcss/lib/parser.js","../../../node_modules/postcss/lib/parse.js","../../../node_modules/postcss/lib/warning.js","../../../node_modules/postcss/lib/result.js","../../../node_modules/postcss/lib/warn-once.js","../../../node_modules/postcss/lib/lazy-result.js","../../../node_modules/postcss/lib/no-work-result.js","../../../node_modules/postcss/lib/processor.js","../../../node_modules/postcss/lib/postcss.js","../../../node_modules/sanitize-html/index.js","../src/inline.ts","../../../node_modules/yaml/browser/dist/nodes/identity.js","../../../node_modules/yaml/browser/dist/visit.js","../../../node_modules/yaml/browser/dist/doc/directives.js","../../../node_modules/yaml/browser/dist/doc/anchors.js","../../../node_modules/yaml/browser/dist/doc/applyReviver.js","../../../node_modules/yaml/browser/dist/nodes/toJS.js","../../../node_modules/yaml/browser/dist/nodes/Node.js","../../../node_modules/yaml/browser/dist/nodes/Alias.js","../../../node_modules/yaml/browser/dist/nodes/Scalar.js","../../../node_modules/yaml/browser/dist/doc/createNode.js","../../../node_modules/yaml/browser/dist/nodes/Collection.js","../../../node_modules/yaml/browser/dist/stringify/stringifyComment.js","../../../node_modules/yaml/browser/dist/stringify/foldFlowLines.js","../../../node_modules/yaml/browser/dist/stringify/stringifyString.js","../../../node_modules/yaml/browser/dist/stringify/stringify.js","../../../node_modules/yaml/browser/dist/stringify/stringifyPair.js","../../../node_modules/yaml/browser/dist/log.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js","../../../node_modules/yaml/browser/dist/nodes/addPairToJSMap.js","../../../node_modules/yaml/browser/dist/nodes/Pair.js","../../../node_modules/yaml/browser/dist/stringify/stringifyCollection.js","../../../node_modules/yaml/browser/dist/nodes/YAMLMap.js","../../../node_modules/yaml/browser/dist/schema/common/map.js","../../../node_modules/yaml/browser/dist/nodes/YAMLSeq.js","../../../node_modules/yaml/browser/dist/schema/common/seq.js","../../../node_modules/yaml/browser/dist/schema/common/string.js","../../../node_modules/yaml/browser/dist/schema/common/null.js","../../../node_modules/yaml/browser/dist/schema/core/bool.js","../../../node_modules/yaml/browser/dist/stringify/stringifyNumber.js","../../../node_modules/yaml/browser/dist/schema/core/float.js","../../../node_modules/yaml/browser/dist/schema/core/int.js","../../../node_modules/yaml/browser/dist/schema/core/schema.js","../../../node_modules/yaml/browser/dist/schema/json/schema.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/float.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/int.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/set.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js","../../../node_modules/yaml/browser/dist/schema/tags.js","../../../node_modules/yaml/browser/dist/schema/Schema.js","../../../node_modules/yaml/browser/dist/stringify/stringifyDocument.js","../../../node_modules/yaml/browser/dist/doc/Document.js","../../../node_modules/yaml/browser/dist/errors.js","../../../node_modules/yaml/browser/dist/compose/resolve-props.js","../../../node_modules/yaml/browser/dist/compose/util-contains-newline.js","../../../node_modules/yaml/browser/dist/compose/util-flow-indent-check.js","../../../node_modules/yaml/browser/dist/compose/util-map-includes.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-map.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-seq.js","../../../node_modules/yaml/browser/dist/compose/resolve-end.js","../../../node_modules/yaml/browser/dist/compose/resolve-flow-collection.js","../../../node_modules/yaml/browser/dist/compose/compose-collection.js","../../../node_modules/yaml/browser/dist/compose/resolve-block-scalar.js","../../../node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js","../../../node_modules/yaml/browser/dist/compose/compose-scalar.js","../../../node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js","../../../node_modules/yaml/browser/dist/compose/compose-node.js","../../../node_modules/yaml/browser/dist/compose/compose-doc.js","../../../node_modules/yaml/browser/dist/compose/composer.js","../../../node_modules/yaml/browser/dist/parse/cst-visit.js","../../../node_modules/yaml/browser/dist/parse/cst.js","../../../node_modules/yaml/browser/dist/parse/lexer.js","../../../node_modules/yaml/browser/dist/parse/line-counter.js","../../../node_modules/yaml/browser/dist/parse/parser.js","../../../node_modules/yaml/browser/dist/public-api.js","../src/errors.ts","../src/front-matter.ts","../../../node_modules/marked/src/defaults.ts","../../../node_modules/marked/src/helpers.ts","../../../node_modules/marked/src/Tokenizer.ts","../../../node_modules/marked/src/rules.ts","../../../node_modules/marked/src/Lexer.ts","../../../node_modules/marked/src/Renderer.ts","../../../node_modules/marked/src/TextRenderer.ts","../../../node_modules/marked/src/Parser.ts","../../../node_modules/marked/src/Hooks.ts","../../../node_modules/marked/src/Instance.ts","../../../node_modules/marked/src/marked.ts","../src/markdown.ts","../src/sanitize.ts"],"sourcesContent":[null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param data The content of the data node\n */\n function DataNode(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Text;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"nodeType\", {\n get: function () {\n return 3;\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Comment;\n return _this;\n }\n Object.defineProperty(Comment.prototype, \"nodeType\", {\n get: function () {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, data) || this;\n _this.name = name;\n _this.type = domelementtype_1.ElementType.Directive;\n return _this;\n }\n Object.defineProperty(ProcessingInstruction.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(children) {\n var _this = _super.call(this) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar CDATA = /** @class */ (function (_super) {\n __extends(CDATA, _super);\n function CDATA() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.CDATA;\n return _this;\n }\n Object.defineProperty(CDATA.prototype, \"nodeType\", {\n get: function () {\n return 4;\n },\n enumerable: false,\n configurable: true\n });\n return CDATA;\n}(NodeWithChildren));\nexports.CDATA = CDATA;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Root;\n return _this;\n }\n Object.defineProperty(Document.prototype, \"nodeType\", {\n get: function () {\n return 9;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n _this.type = type;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new CDATA(children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_js_1 = require(\"./node.js\");\n__exportStar(require(\"./node.js\"), exports);\n// Default options\nvar defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_js_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_js_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_js_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n var node = new node_js_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_js_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_js_1.Text(\"\");\n var node = new node_js_1.CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_js_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n",null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\nexports.attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_js_1 = require(\"./foreignNames.js\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? entities_1.encodeXML\n : entities_1.escapeAttribute;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return \"\".concat(key, \"=\\\"\").concat(encode(value), \"\\\"\");\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.render = render;\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\".concat(elem.name);\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \".concat(attribs);\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\".concat(elem.name, \">\");\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\".concat(elem.data, \">\");\n}\nfunction renderText(elem, opts) {\n var _a;\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? (0, entities_1.encodeXML)(data)\n : (0, entities_1.escapeText)(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\".concat(elem.children[0].data, \"]]>\");\n}\nfunction renderComment(elem) {\n return \"<!--\".concat(elem.data, \"-->\");\n}\n",null,null,null,null,null,null,null,null,null,"'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n\n let aside = text => text\n let mark = text => text\n let highlight = text => text\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n if (terminalHighlight) {\n highlight = text => terminalHighlight(text)\n }\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n let maxWidth = String(end).length\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20\n let subLineStart = Math.max(0, this.column - padding)\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n )\n let subLine = line.slice(subLineStart, subLineEnd)\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line\n .slice(0, Math.min(this.column - 1, padding - 1))\n .replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(subLine) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(line) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n return ' ' + aside(gutter) + highlight(line)\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n if (position && typeof position.offset !== 'undefined') {\n return position.offset\n }\n\n let column = 1\n let line = 1\n let offset = 0\n\n for (let i = 0; i < inputCSS.length; i++) {\n if (line === position.line && column === position.column) {\n offset = i\n break\n }\n\n if (inputCSS[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return offset\n}\n\nclass Node {\n get proxyOf() {\n return this\n }\n\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts = {}) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n positionInside(index) {\n let column = this.source.start.column\n let line = this.source.start.line\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let offset = sourceOffset(inputString, this.source.start)\n let end = offset + index\n\n for (let i = offset; i < end; i++) {\n if (inputString[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line, offset: end }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts = {}) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let start = {\n column: this.source.start.column,\n line: this.source.start.line,\n offset: sourceOffset(inputString, this.source.start)\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line,\n offset:\n typeof this.source.end.offset === 'number'\n ? // `source.end.offset` is exclusive, so we don't need to add 1\n this.source.end.offset\n : // Since line/column in this.source.end is inclusive,\n // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n // So, we add 1 to convert it to exclusive.\n sourceOffset(inputString, this.source.end) + 1\n }\n : {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n\n if (opts.word) {\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(index + opts.word.length)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line,\n offset: sourceOffset(inputString, opts.start)\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line,\n offset: sourceOffset(inputString, opts.end)\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n if (value == null) continue\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts = {}) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markTreeDirty(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markTreeDirty(i)\n }\n }\n}\n\nclass Container extends Node {\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markTreeDirty(i)\n\n if (!i.raws) i.raws = {}\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size | 0\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n","'use strict'\n\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n let uriMatch = text.match(charsetUri) || text.match(uri)\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length))\n }\n\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n if (input[lineToIndexCache]) return input[lineToIndexCache]\n let lines = input.css.split('\\n')\n let lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n input[lineToIndexCache] = lineToIndex\n return lineToIndex\n}\n\nclass Input {\n get from() {\n return this.file || this.id\n }\n\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n this.document = this.css\n if (opts.document) this.document = opts.document.toString()\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let endColumn, endLine, endOffset, offset, result\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n offset = start.offset\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n offset = this.fromLineAndColumn(line, column)\n }\n if (typeof end.offset === 'number') {\n endOffset = end.offset\n let pos = this.fromOffset(endOffset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n endOffset = this.fromLineAndColumn(end.line, end.column)\n }\n } else if (!column) {\n offset = line\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n offset = this.fromLineAndColumn(line, column)\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromLineAndColumn(line, column) {\n let lineToIndex = getLineToIndex(this)\n let index = lineToIndex[line - 1]\n return index + column - 1\n }\n\n fromOffset(offset) {\n let lineToIndex = getLineToIndex(this)\n let lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.startsWith('# sourceMappingURL=')) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let last, lines\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, content, escape, next, quote\n let currentToken, escaped, escapePos, n, prev\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let prev, token, type\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().startsWith('!') && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().startsWith('!')) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n prev.source.end = this.getPosition(token[2])\n prev.source.end.offset += prev.raws.ownSemicolon.length\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word ' + tokens[0][1],\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n get content() {\n return this.css\n }\n\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = ''\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nconst Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.5.6'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","const htmlparser = require('htmlparser2');\nconst escapeStringRegexp = require('escape-string-regexp');\nconst { isPlainObject } = require('is-plain-object');\nconst deepmerge = require('deepmerge');\nconst parseSrcset = require('parse-srcset');\nconst { parse: postcssParse } = require('postcss');\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n 'img', 'audio', 'video', 'picture', 'svg',\n 'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n const n = [];\n each(a, function(v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nfunction isEmptyObject(obj) {\n for (const key in obj) {\n if (has(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n return parsedSrcset.map(function(part) {\n if (!part.url) {\n throw new Error('URL missing');\n }\n\n return (\n part.url +\n (part.w ? ` ${part.w}w` : '') +\n (part.h ? ` ${part.h}h` : '') +\n (part.d ? ` ${part.d}x` : '')\n );\n }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n if (html == null) {\n return '';\n }\n if (typeof html === 'number') {\n html = html.toString();\n }\n\n let result = '';\n // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n let tempResult = '';\n\n function Frame(tag, attribs) {\n const that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n this.openingTagLength = 0;\n this.mediaChildren = [];\n\n this.updateParentNodeText = function() {\n if (stack.length) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n\n this.updateParentNodeMediaChildren = function() {\n if (stack.length && mediaTags.includes(this.tag)) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.mediaChildren.push(this.tag);\n }\n };\n }\n\n options = Object.assign({}, sanitizeHtml.defaults, options);\n options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n const tagAllowed = function (name) {\n return options.allowedTags === false || (options.allowedTags || []).indexOf(name) > -1;\n };\n\n // vulnerableTags\n vulnerableTags.forEach(function (tag) {\n if (tagAllowed(tag) && !options.allowVulnerableTags) {\n console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n }\n });\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n const nonTextTagsArray = options.nonTextTags || [\n 'script',\n 'style',\n 'textarea',\n 'option'\n ];\n let allowedAttributesMap;\n let allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function(attributes, tag) {\n allowedAttributesMap[tag] = [];\n const globRegex = [];\n attributes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n }\n const allowedClassesMap = {};\n const allowedClassesGlobMap = {};\n const allowedClassesRegexMap = {};\n each(options.allowedClasses, function(classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n\n if (Array.isArray(classes)) {\n const globRegex = [];\n allowedClassesMap[tag] = [];\n allowedClassesRegexMap[tag] = [];\n classes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else if (obj instanceof RegExp) {\n allowedClassesRegexMap[tag].push(obj);\n } else {\n allowedClassesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedClassesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n }\n });\n\n const transformTagsMap = {};\n let transformTagsAll;\n each(options.transformTags, function(transform, tag) {\n let transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === 'string') {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n let depth;\n let stack;\n let skipMap;\n let transformMap;\n let skipText;\n let skipTextDepth;\n let addedText = false;\n\n initializeState();\n\n const parser = new htmlparser.Parser({\n onopentag: function(name, attribs) {\n if (options.onOpenTag) {\n options.onOpenTag(name, attribs);\n }\n\n // If `enforceHtmlBoundary` is `true` and this has found the opening\n // `html` tag, reset the state.\n if (options.enforceHtmlBoundary && name === 'html') {\n initializeState();\n }\n\n if (skipText) {\n skipTextDepth++;\n return;\n }\n const frame = new Frame(name, attribs);\n stack.push(frame);\n\n let skip = false;\n const hasText = !!frame.text;\n let transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (!tagAllowed(name) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n skip = true;\n skipMap[depth] = true;\n if (options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') {\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n }\n }\n depth++;\n if (skip) {\n if (options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') {\n // We want the contents but not this tag\n if (frame.innerText && !hasText) {\n const escaped = escapeHtml(frame.innerText);\n if (options.textFilter) {\n result += options.textFilter(escaped, name);\n } else {\n result += escaped;\n }\n addedText = true;\n }\n return;\n }\n tempResult = result;\n result = '';\n }\n result += '<' + name;\n\n if (name === 'script') {\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n frame.innerText = '';\n }\n }\n\n const isBeingEscaped = skip && (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape');\n const shouldPreserveEscapedAttributes = isBeingEscaped && options.preserveEscapedAttributes;\n\n if (shouldPreserveEscapedAttributes) {\n each(attribs, function(value, a) {\n result += ' ' + a + '=\"' + escapeHtml((value || ''), true) + '\"';\n });\n } else if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function(value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n // If the value is empty, check if the attribute is in the allowedEmptyAttributes array.\n // If it is not in the allowedEmptyAttributes array, and it is a known non-boolean attribute, delete it\n // List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&\n (options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {\n delete frame.attribs[a];\n return;\n }\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n let passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap ||\n (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n for (const o of allowedAttributesMap[name]) {\n if (isPlainObject(o) && o.name && (o.name === a)) {\n passedAllowedAttributesMapCheck = true;\n let newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n const splitStrArray = value.split(' ');\n for (const s of splitStrArray) {\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'script' && a === 'src') {\n\n let allowed = true;\n\n try {\n const parsed = parseUrl(value);\n\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n const allowedHostname = (options.allowedScriptHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n allowed = false;\n }\n\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'iframe' && a === 'src') {\n let allowed = true;\n try {\n const parsed = parseUrl(value);\n\n if (parsed.isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true\n // unless allowedIframeHostnames or allowedIframeDomains specified\n allowed = has(options, 'allowIframeRelativeUrls')\n ? options.allowIframeRelativeUrls\n : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n let parsed = parseSrcset(value);\n parsed.forEach(function(value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function(v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = stringifySrcset(filter(parsed, function(v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n const allowedSpecificClasses = allowedClassesMap[name];\n const allowedWildcardClasses = allowedClassesMap['*'];\n const allowedSpecificClassesGlob = allowedClassesGlobMap[name];\n const allowedSpecificClassesRegex = allowedClassesRegexMap[name];\n const allowedWildcardClassesRegex = allowedClassesRegexMap['*'];\n const allowedWildcardClassesGlob = allowedClassesGlobMap['*'];\n const allowedClassesGlobs = [\n allowedSpecificClassesGlob,\n allowedWildcardClassesGlob\n ]\n .concat(allowedSpecificClassesRegex, allowedWildcardClassesRegex)\n .filter(function (t) {\n return t;\n });\n if (allowedSpecificClasses && allowedWildcardClasses) {\n value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);\n } else {\n value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);\n }\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n if (options.parseStyleAttributes) {\n try {\n const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });\n const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.warn('Failed to parse \"' + name + ' {' + value + '}' + '\", If you\\'re running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547');\n }\n delete frame.attribs[a];\n return;\n }\n } else if (options.allowedStyles) {\n throw new Error('allowedStyles option cannot be used together with parseStyleAttributes: false.');\n }\n }\n result += ' ' + a;\n if (value && value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n } else if (options.allowedEmptyAttributes.includes(a)) {\n result += '=\"\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += ' />';\n } else {\n result += '>';\n if (frame.innerText && !hasText && !options.textFilter) {\n result += escapeHtml(frame.innerText);\n addedText = true;\n }\n }\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n frame.openingTagLength = result.length - frame.tagPosition;\n },\n ontext: function(text) {\n if (skipText) {\n return;\n }\n const lastFrame = stack[stack.length - 1];\n let tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (options.disallowedTagsMode === 'completelyDiscard' && !tagAllowed(tag)) {\n text = '';\n } else if ((options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') && ((tag === 'script') || (tag === 'style'))) {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else if (!addedText) {\n const escaped = escapeHtml(text, false);\n if (options.textFilter) {\n result += options.textFilter(escaped, tag);\n } else {\n result += escaped;\n }\n }\n if (stack.length) {\n const frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function(name, isImplied) {\n if (options.onCloseTag) {\n options.onCloseTag(name, isImplied);\n }\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n const frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n\n if (frame.tag !== name) {\n // Another case of bad markup.\n // Push to stack, so that it will be used in future closing tags.\n stack.push(frame);\n return;\n }\n\n skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n depth--;\n const skip = skipMap[depth];\n if (skip) {\n delete skipMap[depth];\n if (options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') {\n frame.updateParentNodeText();\n return;\n }\n tempResult = result;\n result = '';\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter) {\n const filterResult = options.exclusiveFilter(frame);\n if (filterResult === 'excludeTag') {\n if (skip) {\n // no longer escaping the tag since it's not added at all\n result = tempResult;\n tempResult = '';\n }\n // remove the opening tag from the result\n result = result.substring(0, frame.tagPosition) + result.substring(frame.tagPosition + frame.openingTagLength);\n return;\n } else if (filterResult) {\n result = result.substring(0, frame.tagPosition);\n return;\n }\n }\n\n frame.updateParentNodeMediaChildren();\n frame.updateParentNodeText();\n\n if (\n // Already output />\n options.selfClosing.indexOf(name) !== -1 ||\n // Escaped tag, closing tag is implied\n (isImplied && !tagAllowed(name) && [ 'escape', 'recursiveEscape' ].indexOf(options.disallowedTagsMode) >= 0)\n ) {\n if (skip) {\n result = tempResult;\n tempResult = '';\n }\n return;\n }\n\n result += '</' + name + '>';\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n addedText = false;\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function initializeState() {\n result = '';\n depth = 0;\n stack = [];\n skipMap = {};\n transformMap = {};\n skipText = false;\n skipTextDepth = 0;\n }\n\n function escapeHtml(s, quote) {\n if (typeof (s) !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n if (quote) {\n s = s.replace(/\"/g, '&quot;');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&amp;') // Match ampersands not part of existing HTML entity\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n if (quote) {\n s = s.replace(/\"/g, '&quot;');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n // eslint-disable-next-line no-control-regex\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n while (true) {\n const firstIndex = href.indexOf('<!--');\n if (firstIndex === -1) {\n break;\n }\n const lastIndex = href.indexOf('-->', firstIndex + 4);\n if (lastIndex === -1) {\n break;\n }\n href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);\n }\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n // Allow more characters after the first so we don't get faked\n // out by certain schemes browsers accept\n const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n const scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n function parseUrl(value) {\n value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n if (value.startsWith('relative:')) {\n // An attempt to exploit our workaround for base URLs being\n // mandatory for relative URL validation in the WHATWG\n // URL parser, reject it\n throw new Error('relative: exploit attempt');\n }\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. Here we are concerned just with allowed hostnames and\n // whether to allow relative URLs.\n //\n // Build a placeholder \"base URL\" against which any reasonable\n // relative URL may be parsed successfully\n let base = 'relative://relative-site';\n for (let i = 0; (i < 100); i++) {\n base += `/${i}`;\n }\n\n const parsed = new URL(value, base);\n\n const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n return {\n isRelativeUrl,\n url: parsed\n };\n }\n /**\n * Filters user input css properties by allowlisted regex attributes.\n * Modifies the abstractSyntaxTree object.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - The modified tree.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n const astRules = abstractSyntaxTree.nodes[0];\n let selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = deepmerge(\n allowedStyles[astRules.selector],\n allowedStyles['*']\n );\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return abstractSyntaxTree;\n }\n\n /**\n * Extracts the style attributes from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center !important;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes\n .reduce(function(extractedAttributes, attrObject) {\n extractedAttributes.push(\n `${attrObject.prop}:${attrObject.value}${attrObject.important ? ' !important' : ''}`\n );\n return extractedAttributes;\n }, [])\n .join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the allowlist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass the allowlist.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is allowlisted...\n if (has(selectedRule, attributeObject.prop)) {\n const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed, allowedGlobs) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function(clss) {\n return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {\n return glob.test(clss);\n });\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: [\n // Sections derived from MDN element categories and limited to the more\n // benign categories.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n // Content sectioning\n 'address', 'article', 'aside', 'footer', 'header',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n 'main', 'nav', 'section',\n // Text content\n 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n 'hr', 'li', 'menu', 'ol', 'p', 'pre', 'ul',\n // Inline text semantics\n 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n 'em', 'i', 'kbd', 'mark', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby',\n 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n // Table content\n 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'\n ],\n // Tags that cannot be boolean\n nonBooleanAttributes: [\n 'abbr', 'accept', 'accept-charset', 'accesskey', 'action',\n 'allow', 'alt', 'as', 'autocapitalize', 'autocomplete',\n 'blocking', 'charset', 'cite', 'class', 'color', 'cols',\n 'colspan', 'content', 'contenteditable', 'coords', 'crossorigin',\n 'data', 'datetime', 'decoding', 'dir', 'dirname', 'download',\n 'draggable', 'enctype', 'enterkeyhint', 'fetchpriority', 'for',\n 'form', 'formaction', 'formenctype', 'formmethod', 'formtarget',\n 'headers', 'height', 'hidden', 'high', 'href', 'hreflang',\n 'http-equiv', 'id', 'imagesizes', 'imagesrcset', 'inputmode',\n 'integrity', 'is', 'itemid', 'itemprop', 'itemref', 'itemtype',\n 'kind', 'label', 'lang', 'list', 'loading', 'low', 'max',\n 'maxlength', 'media', 'method', 'min', 'minlength', 'name',\n 'nonce', 'optimum', 'pattern', 'ping', 'placeholder', 'popover',\n 'popovertarget', 'popovertargetaction', 'poster', 'preload',\n 'referrerpolicy', 'rel', 'rows', 'rowspan', 'sandbox', 'scope',\n 'shape', 'size', 'sizes', 'slot', 'span', 'spellcheck', 'src',\n 'srcdoc', 'srclang', 'srcset', 'start', 'step', 'style',\n 'tabindex', 'target', 'title', 'translate', 'type', 'usemap',\n 'value', 'width', 'wrap',\n // Event handlers\n 'onauxclick', 'onafterprint', 'onbeforematch', 'onbeforeprint',\n 'onbeforeunload', 'onbeforetoggle', 'onblur', 'oncancel',\n 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'onclose',\n 'oncontextlost', 'oncontextmenu', 'oncontextrestored', 'oncopy',\n 'oncuechange', 'oncut', 'ondblclick', 'ondrag', 'ondragend',\n 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart',\n 'ondrop', 'ondurationchange', 'onemptied', 'onended',\n 'onerror', 'onfocus', 'onformdata', 'onhashchange', 'oninput',\n 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup',\n 'onlanguagechange', 'onload', 'onloadeddata', 'onloadedmetadata',\n 'onloadstart', 'onmessage', 'onmessageerror', 'onmousedown',\n 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout',\n 'onmouseover', 'onmouseup', 'onoffline', 'ononline', 'onpagehide',\n 'onpageshow', 'onpaste', 'onpause', 'onplay', 'onplaying',\n 'onpopstate', 'onprogress', 'onratechange', 'onreset', 'onresize',\n 'onrejectionhandled', 'onscroll', 'onscrollend',\n 'onsecuritypolicyviolation', 'onseeked', 'onseeking', 'onselect',\n 'onslotchange', 'onstalled', 'onstorage', 'onsubmit', 'onsuspend',\n 'ontimeupdate', 'ontoggle', 'onunhandledrejection', 'onunload',\n 'onvolumechange', 'onwaiting', 'onwheel'\n ],\n disallowedTagsMode: 'discard',\n allowedAttributes: {\n a: [ 'href', 'name', 'target' ],\n // We don't currently allow img itself by default, but\n // these attributes would make sense if we did.\n img: [ 'src', 'srcset', 'alt', 'title', 'width', 'height', 'loading' ]\n },\n allowedEmptyAttributes: [\n 'alt'\n ],\n // Lots of these won't come up by default because we don't allow them\n selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n // URL schemes we permit\n allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n allowProtocolRelative: true,\n enforceHtmlBoundary: false,\n parseStyleAttributes: true,\n preserveEscapedAttributes: false\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n merge = (merge === undefined) ? true : merge;\n newAttribs = newAttribs || {};\n\n return function(tagName, attribs) {\n let attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};\n","import { parseFrontMatter, type FrontMatterResult } from \"./front-matter\";\nimport { renderMarkdown } from \"./markdown\";\nimport { sanitizeMarkup, type SanitizeOptions } from \"./sanitize\";\n\nexport interface InlineMarkdownOptions {\n selector?: string;\n processFrontMatter?: boolean;\n applyMetaToDom?: boolean;\n sanitize?: SanitizeOptions;\n}\n\nconst DEFAULT_SELECTOR = \"[data-markdown]\";\n\nexport function enhanceInlineMarkdown(\n options: InlineMarkdownOptions = {},\n): void {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const selector = options.selector ?? DEFAULT_SELECTOR;\n const processFrontMatter = options.processFrontMatter !== false;\n const applyMetaToDom = options.applyMetaToDom !== false;\n const sanitize = options.sanitize;\n\n let elements: HTMLElement[] = [];\n try {\n elements = Array.from(document.querySelectorAll<HTMLElement>(selector));\n } catch (error) {\n console.warn(\"[mark↓ inline] Invalid selector provided:\", error);\n return;\n }\n for (const element of elements) {\n if (element.dataset.markdownProcessed === \"true\") {\n continue;\n }\n processElement(element, { processFrontMatter, applyMetaToDom, sanitize });\n }\n}\n\nfunction processElement(\n element: HTMLElement,\n options: {\n processFrontMatter: boolean;\n applyMetaToDom: boolean;\n sanitize?: SanitizeOptions;\n },\n): void {\n const raw = element.textContent ?? \"\";\n let frontMatter: FrontMatterResult | undefined;\n\n if (options.processFrontMatter) {\n try {\n frontMatter = parseFrontMatter(raw);\n } catch (error) {\n console.warn(\n \"[mark↓ inline] Failed to parse front matter for element:\",\n error,\n );\n frontMatter = undefined;\n }\n }\n\n const body = frontMatter?.content ?? raw;\n let html = renderMarkdown(body);\n if (options.sanitize) {\n html = sanitizeMarkup(html, options.sanitize);\n }\n\n element.innerHTML = html;\n element.dataset.markdownProcessed = \"true\";\n\n if (options.applyMetaToDom && frontMatter?.hasFrontMatter) {\n applyMetaAttributes(element, frontMatter);\n }\n}\n\nfunction applyMetaAttributes(\n element: HTMLElement,\n frontMatter: FrontMatterResult,\n): void {\n const { slug, meta, extra } = frontMatter;\n\n if (slug) {\n if (!element.id) {\n element.id = slug;\n }\n element.dataset.slug = slug;\n }\n\n if (meta.title) {\n element.dataset.title = meta.title;\n }\n\n if (meta.tags?.length) {\n element.dataset.tags = meta.tags.join(\",\");\n }\n\n const variant = typeof extra.variant === \"string\" ? extra.variant.trim() : \"\";\n if (variant) {\n element.classList.add(`md-block--${variant}`);\n }\n}\n","const ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexport { ALIAS, DOC, MAP, NODE_TYPE, PAIR, SCALAR, SEQ, hasAnchor, isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq };\n","import { isDocument, isNode, isPair, isCollection, isMap, isSeq, isScalar, isAlias } from './nodes/identity.js';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (isMap(node))\n return visitor.Map?.(key, node, path);\n if (isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (isPair(node))\n return visitor.Pair?.(key, node, path);\n if (isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexport { visit, visitAsync };\n","import { isNode } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && isNode(doc.contents)) {\n const tags = {};\n visit(doc.contents, (_key, node) => {\n if (isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexport { Directives };\n","import { isScalar, isCollection } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (isScalar(ref.node) || isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexport { anchorIsValid, anchorNames, createNodeAnchors, findNewAnchor };\n","/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexport { applyReviver };\n","import { hasAnchor } from './identity.js';\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexport { toJS };\n","import { applyReviver } from '../doc/applyReviver.js';\nimport { NODE_TYPE, isDocument } from './identity.js';\nimport { toJS } from './toJS.js';\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexport { NodeBase };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { visit } from '../visit.js';\nimport { ALIAS, isAlias, isCollection, isPair, hasAnchor } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nclass Alias extends NodeBase {\n constructor(source) {\n super(ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit(doc, {\n Node: (_key, node) => {\n if (isAlias(node) || hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexport { Alias };\n","import { SCALAR } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends NodeBase {\n constructor(value) {\n super(SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexport { Scalar, isScalarValue };\n","import { Alias } from '../nodes/Alias.js';\nimport { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (isDocument(value))\n value = value.contents;\n if (isNode(value))\n return value;\n if (isPair(value)) {\n const map = ctx.schema[MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[MAP]\n : Symbol.iterator in Object(value)\n ? schema[SEQ]\n : schema[MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexport { createNode };\n","import { createNode } from '../doc/createNode.js';\nimport { isNode, isPair, isCollection, isScalar } from './identity.js';\nimport { NodeBase } from './Node.js';\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && isScalar(node) ? node.value : node;\n else\n return isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexport { Collection, collectionFromPath, isEmptyPath };\n","/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexport { indentComment, lineComment, stringifyComment };\n","const FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexport { FOLD_BLOCK, FOLD_FLOW, FOLD_QUOTED, foldFlowLines };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { foldFlowLines, FOLD_FLOW, FOLD_QUOTED, FOLD_BLOCK } from './foldFlowLines.js';\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines(`${start}${foldedValue}${end}`, indent, FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.BLOCK_FOLDED:\n case Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexport { stringifyString };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { isPair, isAlias, isNode, isScalar, isCollection } from '../nodes/identity.js';\nimport { stringifyComment } from './stringifyComment.js';\nimport { stringifyString } from './stringifyString.js';\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (isScalar(node) || isCollection(node)) && node.anchor;\n if (anchor && anchorIsValid(anchor)) {\n anchors.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : isScalar(node)\n ? stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexport { createStringifyContext, stringify };\n","import { isCollection, isNode, isScalar, isSeq } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (isCollection(key) || (!isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n isCollection(key) ||\n (isScalar(key)\n ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexport { stringifyPair };\n","function debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n console.warn(warning);\n }\n}\n\nexport { debug, warn };\n","import { isScalar, isAlias, isSeq, isMap } from '../../nodes/identity.js';\nimport { Scalar } from '../../nodes/Scalar.js';\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (isScalar(key) &&\n (!key.type || key.type === Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexport { addMergeToJSMap, isMergeKey, merge };\n","import { warn } from '../log.js';\nimport { isMergeKey, addMergeToJSMap } from '../schema/yaml-1.1/merge.js';\nimport { createStringifyContext } from '../stringify/stringify.js';\nimport { isNode } from './identity.js';\nimport { toJS } from './toJS.js';\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (isMergeKey(ctx, key))\n addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (isNode(key) && ctx?.doc) {\n const strCtx = createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexport { addPairToJSMap };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyPair } from '../stringify/stringifyPair.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { NODE_TYPE, PAIR, isNode } from './identity.js';\n\nfunction createPair(key, value, ctx) {\n const k = createNode(key, undefined, ctx);\n const v = createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, NODE_TYPE, { value: PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (isNode(key))\n key = key.clone(schema);\n if (isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexport { Pair, createPair };\n","import { isNode, isPair } from '../nodes/identity.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexport { stringifyCollection };\n","import { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { Collection } from './Collection.js';\nimport { MAP, isPair, isScalar } from './identity.js';\nimport { Pair, createPair } from './Pair.js';\nimport { isScalarValue } from './Scalar.js';\n\nfunction findPair(items, key) {\n const k = isScalar(key) ? key.value : key;\n for (const it of items) {\n if (isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair(pair, pair?.value);\n }\n else\n _pair = new Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (isScalar(prev.value) && isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexport { YAMLMap, findPair };\n","import { isMap } from '../../nodes/identity.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)\n};\n\nexport { map };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { Collection } from './Collection.js';\nimport { SEQ, isScalar } from './identity.js';\nimport { isScalarValue } from './Scalar.js';\nimport { toJS } from './toJS.js';\n\nclass YAMLSeq extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (isScalar(prev) && isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexport { YAMLSeq };\n","import { isSeq } from '../../nodes/identity.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)\n};\n\nexport { seq };\n","import { stringifyString } from '../../stringify/stringifyString.js';\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexport { string };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexport { nullTag };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexport { boolTag };\n","function stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexport { stringifyNumber };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intHex, intOct };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { boolTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intOct, int, intHex } from './int.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n boolTag,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float\n];\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { map } from '../common/map.js';\nimport { seq } from '../common/seq.js';\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map, seq].concat(jsonScalars, jsonError);\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyString } from '../../stringify/stringifyString.js';\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.BLOCK_LITERAL);\n if (type !== Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexport { binary };\n","import { isSeq, isPair, isMap } from '../../nodes/identity.js';\nimport { createPair, Pair } from '../../nodes/Pair.js';\nimport { Scalar } from '../../nodes/Scalar.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nfunction resolvePairs(seq, onError) {\n if (isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (isPair(item))\n continue;\n else if (isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair(new Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = isPair(item) ? item : new Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexport { createPairs, pairs, resolvePairs };\n","import { isScalar, isPair } from '../../nodes/identity.js';\nimport { toJS } from '../../nodes/toJS.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\nimport { resolvePairs, createPairs } from './pairs.js';\n\nclass YAMLOMap extends YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (isPair(pair)) {\n key = toJS(pair.key, '', ctx);\n value = toJS(pair.value, key, ctx);\n }\n else {\n key = toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs = createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs = resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs.items) {\n if (isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexport { YAMLOMap, omap };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar(false),\n stringify: boolStringify\n};\n\nexport { falseTag, trueTag };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intBin, intHex, intOct };\n","import { isMap, isPair, isScalar } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { YAMLMap, findPair } from '../../nodes/YAMLMap.js';\n\nclass YAMLSet extends YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair(key.key, null);\n else\n pair = new Pair(key, null);\n const prev = findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = findPair(this.items, key);\n return !keepPair && isPair(pair)\n ? isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexport { YAMLSet, set };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexport { floatTime, intTime, timestamp };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { binary } from './binary.js';\nimport { trueTag, falseTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intBin, intOct, int, intHex } from './int.js';\nimport { merge } from './merge.js';\nimport { omap } from './omap.js';\nimport { pairs } from './pairs.js';\nimport { set } from './set.js';\nimport { intTime, floatTime, timestamp } from './timestamp.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n trueTag,\n falseTag,\n intBin,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float,\n binary,\n merge,\n omap,\n pairs,\n set,\n intTime,\n floatTime,\n timestamp\n];\n\nexport { schema };\n","import { map } from './common/map.js';\nimport { nullTag } from './common/null.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { boolTag } from './core/bool.js';\nimport { floatNaN, floatExp, float } from './core/float.js';\nimport { intOct, intHex, int } from './core/int.js';\nimport { schema } from './core/schema.js';\nimport { schema as schema$1 } from './json/schema.js';\nimport { binary } from './yaml-1.1/binary.js';\nimport { merge } from './yaml-1.1/merge.js';\nimport { omap } from './yaml-1.1/omap.js';\nimport { pairs } from './yaml-1.1/pairs.js';\nimport { schema as schema$2 } from './yaml-1.1/schema.js';\nimport { set } from './yaml-1.1/set.js';\nimport { timestamp, intTime, floatTime } from './yaml-1.1/timestamp.js';\n\nconst schemas = new Map([\n ['core', schema],\n ['failsafe', [map, seq, string]],\n ['json', schema$1],\n ['yaml11', schema$2],\n ['yaml-1.1', schema$2]\n]);\nconst tagsByName = {\n binary,\n bool: boolTag,\n float,\n floatExp,\n floatNaN,\n floatTime,\n int,\n intHex,\n intOct,\n intTime,\n map,\n merge,\n null: nullTag,\n omap,\n pairs,\n seq,\n set,\n timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary,\n 'tag:yaml.org,2002:merge': merge,\n 'tag:yaml.org,2002:omap': omap,\n 'tag:yaml.org,2002:pairs': pairs,\n 'tag:yaml.org,2002:set': set,\n 'tag:yaml.org,2002:timestamp': timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge)\n ? schemaTags.concat(merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexport { coreKnownTags, getTags };\n","import { MAP, SCALAR, SEQ } from '../nodes/identity.js';\nimport { map } from './common/map.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { getTags, coreKnownTags } from './tags.js';\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? getTags(compat, 'compat')\n : compat\n ? getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? coreKnownTags : {};\n this.tags = getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, MAP, { value: map });\n Object.defineProperty(this, SCALAR, { value: string });\n Object.defineProperty(this, SEQ, { value: seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexport { Schema };\n","import { isNode } from '../nodes/identity.js';\nimport { createStringifyContext, stringify } from './stringify.js';\nimport { indentComment, lineComment } from './stringifyComment.js';\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexport { stringifyDocument };\n","import { Alias } from '../nodes/Alias.js';\nimport { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';\nimport { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { toJS } from '../nodes/toJS.js';\nimport { Schema } from '../schema/Schema.js';\nimport { stringifyDocument } from '../stringify/stringifyDocument.js';\nimport { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';\nimport { applyReviver } from './applyReviver.js';\nimport { createNode } from './createNode.js';\nimport { Directives } from './directives.js';\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, NODE_TYPE, { value: DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [NODE_TYPE]: { value: DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode(value, tag, ctx);\n if (flow && isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (isEmptyPath(path))\n return !keepScalar && isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (isEmptyPath(path))\n return this.contents !== undefined;\n return isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexport { Document };\n","class YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexport { YAMLError, YAMLParseError, YAMLWarning, prettifyError };\n","function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexport { resolveProps };\n","function containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexport { containsNewline };\n","import { containsNewline } from './util-contains-newline.js';\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexport { flowIndentCheck };\n","import { isScalar } from '../nodes/identity.js';\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (isScalar(a) && isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexport { mapIncludes };\n","import { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexport { resolveBlockMap };\n","import { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveProps } from './resolve-props.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexport { resolveBlockSeq };\n","function resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexport { resolveEnd };\n","import { isPair } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexport { resolveFlowCollection };\n","import { isNode } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveBlockMap } from './resolve-block-map.js';\nimport { resolveBlockSeq } from './resolve-block-seq.js';\nimport { resolveFlowCollection } from './resolve-flow-collection.js';\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = isNode(res)\n ? res\n : new Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexport { composeCollection };\n","import { Scalar } from '../nodes/Scalar.js';\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexport { resolveBlockScalar };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexport { resolveFlowScalar };\n","import { isScalar, SCALAR } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { resolveBlockScalar } from './resolve-block-scalar.js';\nimport { resolveFlowScalar } from './resolve-flow-scalar.js';\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = isScalar(res) ? res : new Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexport { composeScalar };\n","function emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexport { emptyScalarPosition };\n","import { Alias } from '../nodes/Alias.js';\nimport { isScalar } from '../nodes/identity.js';\nimport { composeCollection } from './compose-collection.js';\nimport { composeScalar } from './compose-scalar.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { emptyScalarPosition } from './util-empty-scalar-position.js';\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexport { composeEmptyNode, composeNode };\n","import { Document } from '../doc/Document.js';\nimport { composeNode, composeEmptyNode } from './compose-node.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexport { composeDoc };\n","import { Directives } from '../doc/directives.js';\nimport { Document } from '../doc/Document.js';\nimport { YAMLWarning, YAMLParseError } from '../errors.js';\nimport { isCollection, isPair } from '../nodes/identity.js';\nimport { composeDoc } from './compose-doc.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new YAMLWarning(pos, code, message));\n else\n this.errors.push(new YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexport { Composer };\n","const BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexport { visit };\n","export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar.js';\nexport { stringify } from './cst-stringify.js';\nexport { visit } from './cst-visit.js';\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexport { BOM, DOCUMENT, FLOW_END, SCALAR, isCollection, isScalar, prettyToken, tokenType };\n","import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexport { Lexer };\n","/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexport { LineCounter };\n","import { tokenType } from './cst.js';\nimport { Lexer } from './lexer.js';\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexport { Parser };\n","import { Composer } from './compose/composer.js';\nimport { Document } from './doc/Document.js';\nimport { prettifyError, YAMLParseError } from './errors.js';\nimport { warn } from './log.js';\nimport { isDocument } from './nodes/identity.js';\nimport { LineCounter } from './parse/line-counter.js';\nimport { Parser } from './parse/parser.js';\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;\n return { lineCounter, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n const docs = Array.from(composer.compose(parser.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer.compose(parser.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document(value, _replacer, options).toString(options);\n}\n\nexport { parse, parseAllDocuments, parseDocument, stringify };\n","export class SnippetNotFoundError extends Error {\n readonly slug: string;\n\n constructor(slug: string) {\n super(`Snippet with slug '${slug}' was not found in the manifest.`);\n this.name = \"SnippetNotFoundError\";\n this.slug = slug;\n }\n}\n\nexport class ManifestLoadError extends Error {\n readonly cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = \"ManifestLoadError\";\n this.cause =\n cause instanceof Error\n ? cause\n : cause\n ? new Error(String(cause))\n : undefined;\n }\n}\n","import { parse as parseYaml } from \"yaml\";\nimport { ManifestLoadError } from \"./errors\";\nimport type { SnippetMeta } from \"./types\";\n\nexport interface FrontMatterResult {\n content: string;\n meta: Partial<SnippetMeta>;\n extra: Record<string, unknown>;\n slug?: string;\n hasFrontMatter: boolean;\n}\n\nconst FRONT_MATTER_PATTERN =\n /^(?:\\uFEFF)?[ \\t\\r\\n]*---\\s*\\r?\\n([\\s\\S]*?)\\r?\\n---\\s*\\r?\\n?/;\n\nexport function parseFrontMatter(raw: string): FrontMatterResult {\n const match = FRONT_MATTER_PATTERN.exec(raw);\n if (!match) {\n return { content: raw, meta: {}, extra: {}, hasFrontMatter: false };\n }\n\n const yamlSection = match[1];\n let data: unknown;\n try {\n data = parseYaml(yamlSection) ?? {};\n } catch (error) {\n throw new ManifestLoadError(\"Failed to parse snippet front-matter.\", error);\n }\n\n if (!isRecord(data)) {\n return {\n content: raw.slice(match[0].length),\n meta: {},\n extra: {},\n hasFrontMatter: true,\n };\n }\n\n const { known, extra } = splitFrontMatter(data);\n\n return {\n content: raw.slice(match[0].length),\n meta: known.meta,\n extra,\n slug: known.slug,\n hasFrontMatter: true,\n };\n}\n\nfunction splitFrontMatter(data: Record<string, unknown>): {\n known: { meta: Partial<SnippetMeta>; slug?: string };\n extra: Record<string, unknown>;\n} {\n const meta: Partial<SnippetMeta> = {};\n const extra: Record<string, unknown> = {};\n let slug: string | undefined;\n\n for (const [key, value] of Object.entries(data)) {\n switch (key) {\n case \"slug\":\n slug = typeof value === \"string\" ? value : undefined;\n break;\n case \"title\":\n if (typeof value === \"string\") {\n meta.title = value;\n }\n break;\n case \"type\":\n if (typeof value === \"string\") {\n meta.type = value;\n }\n break;\n case \"order\":\n if (typeof value === \"number\") {\n meta.order = value;\n }\n break;\n case \"tags\":\n meta.tags = normalizeTags(value);\n break;\n case \"group\":\n if (typeof value === \"string\" || value === null) {\n meta.group = value;\n }\n break;\n case \"draft\":\n if (typeof value === \"boolean\") {\n meta.draft = value;\n }\n break;\n default:\n extra[key] = value;\n break;\n }\n }\n\n return { known: { meta, slug }, extra };\n}\n\nfunction normalizeTags(value: unknown): string[] | undefined {\n if (!value) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((item) => String(item));\n }\n if (typeof value === \"string\") {\n return value\n .split(\",\")\n .map((tag) => tag.trim())\n .filter(Boolean);\n }\n return undefined;\n}\n\nfunction isRecord(candidate: unknown): candidate is Record<string, unknown> {\n return (\n Boolean(candidate) &&\n typeof candidate === \"object\" &&\n !Array.isArray(candidate)\n );\n}\n","/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}$+<=>`^|~';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n/**\n * exports\n */\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { block, inline } from './rules.ts';\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport { unescape } from './helpers.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n","import { marked } from \"marked\";\n\nexport function renderMarkdown(markdown: string): string {\n const html = marked.parse(markdown);\n\n if (typeof html === \"string\") {\n return html;\n }\n\n throw new Error(\"renderMarkdown unexpectedly returned a Promise\");\n}\n","import sanitizeHtml, { type IOptions } from \"sanitize-html\";\n\nexport type SanitizePolicy = \"default\" | \"strict\" | \"permissive\";\n\nexport interface SanitizeOptions {\n policy?: SanitizePolicy;\n config?: IOptions;\n}\n\nconst DEFAULT_ALLOWED_TAGS = [\n \"a\",\n \"b\",\n \"blockquote\",\n \"br\",\n \"code\",\n \"del\",\n \"em\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"hr\",\n \"i\",\n \"img\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"th\",\n \"thead\",\n \"tr\",\n \"ul\",\n];\n\nconst STRICT_ALLOWED_TAGS = [\n \"a\",\n \"blockquote\",\n \"br\",\n \"code\",\n \"em\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"strong\",\n \"ul\",\n];\n\nconst DEFAULT_ALLOWED_ATTRIBUTES: IOptions[\"allowedAttributes\"] = {\n a: [\"href\", \"name\", \"target\", \"rel\"],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n code: [\"class\"],\n pre: [\"class\"],\n span: [\"class\"],\n \"*\": [\"id\", \"title\", \"aria-*\", \"data-*\"],\n};\n\nconst STRICT_ALLOWED_ATTRIBUTES: IOptions[\"allowedAttributes\"] = {\n a: [\"href\", \"name\", \"target\", \"rel\"],\n};\n\nconst POLICY_CONFIG: Record<SanitizePolicy, IOptions> = {\n default: {\n allowedTags: DEFAULT_ALLOWED_TAGS,\n allowedAttributes: DEFAULT_ALLOWED_ATTRIBUTES,\n allowedSchemes: [\"http\", \"https\", \"mailto\"],\n allowedSchemesByTag: {\n img: [\"http\", \"https\", \"data\"],\n },\n },\n strict: {\n allowedTags: STRICT_ALLOWED_TAGS,\n allowedAttributes: STRICT_ALLOWED_ATTRIBUTES,\n allowedSchemes: [\"http\", \"https\", \"mailto\"],\n },\n permissive: {\n ...sanitizeHtml.defaults,\n allowedTags: sanitizeHtml.defaults.allowedTags\n ? [...sanitizeHtml.defaults.allowedTags]\n : undefined,\n allowedAttributes: sanitizeHtml.defaults.allowedAttributes\n ? { ...sanitizeHtml.defaults.allowedAttributes }\n : undefined,\n },\n};\n\nexport function sanitizeMarkup(\n html: string,\n options: SanitizeOptions = {},\n): string {\n const policy = options.policy ?? \"default\";\n const base = POLICY_CONFIG[policy];\n const merged = mergeOptions(base, options.config);\n return sanitizeHtml(html, merged);\n}\n\nfunction mergeOptions(base: IOptions, overrides?: IOptions): IOptions {\n if (!overrides) {\n return base;\n }\n return {\n ...base,\n ...overrides,\n allowedAttributes: mergeAllowedAttributes(\n base.allowedAttributes,\n overrides.allowedAttributes,\n ),\n allowedClasses: mergeRecord(base.allowedClasses, overrides.allowedClasses),\n allowedStyles: mergeRecord(base.allowedStyles, overrides.allowedStyles),\n };\n}\n\nfunction mergeAllowedAttributes(\n base?: IOptions[\"allowedAttributes\"],\n overrides?: IOptions[\"allowedAttributes\"],\n): IOptions[\"allowedAttributes\"] {\n if (overrides === false) {\n return false;\n }\n if (base === false) {\n return overrides ?? false;\n }\n if (!base && !overrides) {\n return undefined;\n }\n return { ...(base ?? {}), ...(overrides ?? {}) };\n}\n\nfunction mergeRecord<T extends Record<string, unknown>>(\n base?: T,\n overrides?: T,\n): T | undefined {\n if (!base && !overrides) {\n return undefined;\n }\n return { ...(base ?? {}), ...(overrides ?? {}) } as T;\n}\n"],"mappings":"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AAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,C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AE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GA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AAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,Q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","names":["_a","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityDecoder","CharCodes","State","QuoteType","Tokenizer","Parser","options","ElementType","d","b","Node","DataNode","Text","Comment","ProcessingInstruction","NodeWithChildren","CDATA","Document","Element","isDocument","require_lib","exports","DomHandler","options","parser","map","escape","EntityLevel","EncodingMode","options","require_lib","_a","options","tag","options","node","options","DocumentPosition","href","_a","parseDocument","options","string","isMergeableObject","options","c","spacing","string","require_stringify","stringify","require_node","stringify","parse","Document","map","string","map","list","string","escape","list","stringify","map","options","escape","Parser","string","Parser","parse","parser","Document","parse","stringify","parser","map","visit","parse","stringify","parser","map","Document","Document","list","parse","stringify","sanitizeHtml","html","options","tag","parser","value","merge","tag","res","res","_a","map","schema","node","schema","i","end","isBlock","tag","options","_a","tag","tag","map","value","map","schema","options","stringify","comment","str","schema","map","map","schema","schema","seq","seq","schema","tag","intIdentify","schema","seq","schema","pairs","map","schema","pairs","omap","seq","floatNaN","floatExp","float","intIdentify","intResolve","n","intStringify","intOct","int","intHex","schema","set","map","res","schema","intOct","int","intHex","floatNaN","floatExp","float","schema","tag","tags","merge","schema","options","options","tag","res","tag","composeNode","composeEmptyNode","tag","map","composeNode","composeEmptyNode","tag","seq","composeNode","composeEmptyNode","tag","isMap","map","CN","tag","value","end","tag","schema","_a","tag","options","options","options","BREAK","SKIP","REMOVE","visit","SCALAR","SCALAR","i","ch","SCALAR","list","map","start","seq","options","options","parser","tag","escape","html","unescape","link","lexer","options","list","tag","text","block","parser","tokens","args","ret","walkTokens","src","html","sanitizeHtml","html","options","options","html"]}