@elisym/husk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9980 -0
- package/dist/index.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/visit.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/doc/directives.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/doc/anchors.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/doc/applyReviver.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/toJS.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/Node.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/Alias.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/Scalar.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/doc/createNode.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/Collection.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyComment.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/foldFlowLines.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyString.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringify.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyPair.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/log.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/Pair.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyCollection.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/YAMLMap.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/common/map.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/nodes/YAMLSeq.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/common/seq.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/common/string.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/common/null.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/core/bool.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyNumber.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/core/float.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/core/int.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/core/schema.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/json/schema.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/tags.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/schema/Schema.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyDocument.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/doc/Document.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/errors.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-props.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/util-contains-newline.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/util-map-includes.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-map.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-seq.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-end.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/compose-collection.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/compose-scalar.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/compose-node.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/compose-doc.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/compose/composer.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/cst-scalar.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/cst-stringify.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/cst-visit.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/cst.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/lexer.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/line-counter.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/parse/parser.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/public-api.js","../../../node_modules/.bun/yaml@2.8.4/node_modules/yaml/dist/index.js","../../core/src/executor.ts","../../core/src/manifest.ts","../../core/src/loader.ts","../../core/src/llm.ts","../../core/src/mime.ts","../../core/src/proxy.ts","../../core/src/invoke.ts","../../core/src/openapi.ts","../../core/src/server.ts","../src/templates.ts","../src/util.ts","../src/commands/build.ts","../src/commands/call.ts","../src/commands/init.ts","../src/commands/list.ts","../src/commands/new.ts","../src/commands/serve.ts","../src/index.ts"],"names":["DOC","res","anchors","node","i","end","json","value","stringify","comment","str","map","seq","require_schema","pairs","omap","require_bool","require_float","require_int","n","set","tags","sep","tag","ch","start","lineCounter","parse","parseYaml","mode","resolve","combineSignals","isAbsolute","realpathSync","join","st","mkdtemp","tmpdir","writeFile","text","readFile","rm","release","chalk","existsSync","streamToText","readFileSync","basename","dirname","writeFileSync","chmodSync","statSync","constants","mkdirSync"],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\n\nconst 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\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./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 (identity.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 (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.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 (identity.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 (identity.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 (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.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 (identity.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 (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.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 (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../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 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.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\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../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.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 (identity.isScalar(ref.node) || identity.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\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\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\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./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 || !identity.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\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.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 (!identity.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.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.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.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 if (ctx?.maxAliasCount === 0)\n throw new ReferenceError('Alias resolution is disabled');\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.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.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (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 anchors.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 (identity.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 (identity.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 (identity.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\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.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\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../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 (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.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.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.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.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.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\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./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.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 Node.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 => identity.isNode(it) || identity.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 (identity.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 (identity.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 && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.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 identity.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 (identity.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\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\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\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst 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\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./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.foldFlowLines(str, indent, foldFlowLines.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.foldFlowLines(res, indent, foldFlowLines.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.Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.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.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.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.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.foldFlowLines(str, indent, foldFlowLines.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.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.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.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.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.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\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.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 trailingComma: false,\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 (identity.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: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.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 (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.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 = identity.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 : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.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 (identity.isCollection(key) || (!identity.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 identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.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.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 += stringifyComment.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 += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.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 && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.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.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${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.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 += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../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.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.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 const source = resolveAliasValue(ctx, value);\n if (identity.isSeq(source))\n for (const it of source.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(source))\n for (const it of source)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, source);\n}\nfunction mergeValue(ctx, map, value) {\n const source = resolveAliasValue(ctx, value);\n if (!identity.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}\nfunction resolveAliasValue(ctx, value) {\n return ctx && identity.isAlias(value) ? value.resolve(ctx.doc, ctx) : value;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.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.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 (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.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 log.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\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.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.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./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 (identity.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 (identity.isPair(item)) {\n const ik = identity.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.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.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' + stringifyComment.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 (identity.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 (identity.isPair(item)) {\n const ik = identity.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 = identity.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.stringify(item, itemCtx, () => (comment = null));\n reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\\n'));\n if (i < items.length - 1) {\n str += ',';\n }\n else if (ctx.options.trailingComma) {\n if (ctx.options.lineWidth > 0) {\n reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +\n (str.length + 2) >\n ctx.options.lineWidth);\n }\n if (reqNewline) {\n str += ',';\n }\n }\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\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 = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.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(Pair.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 (identity.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, pair?.value);\n }\n else\n _pair = new Pair.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 (identity.isScalar(prev.value) && Scalar.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 && identity.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.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.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 (!identity.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.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.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 && identity.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 (identity.isScalar(prev) && Scalar.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.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.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.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.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\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../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.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../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.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\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction 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 = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^-?\\d/.test(n) &&\n !n.includes('e')) {\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\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../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.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.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.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.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../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.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.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\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../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.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.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../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 node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else 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 node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else 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.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.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.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.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.Pair(new Scalar.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] = identity.isPair(item) ? item : new Pair.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.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(Pair.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\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.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 (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.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$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.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$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.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$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../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.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.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../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.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.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.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.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../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.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.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\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.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.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.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 = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.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 = YAMLMap.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.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(Pair.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 (identity.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\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../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.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\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.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.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\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./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 ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.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\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./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 = stringify.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(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.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(stringifyComment.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.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.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.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(stringifyComment.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(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./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, identity.NODE_TYPE, { value: identity.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.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 [identity.NODE_TYPE]: { value: identity.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 = identity.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 = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.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 } = anchors.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.createNode(value, tag, ctx);\n if (flow && identity.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.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 (Collection.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 identity.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 (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.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 identity.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 (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.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 = Collection.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 (Collection.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 = Collection.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.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.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.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.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.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.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass 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?.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\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction 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\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction 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\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./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 utilContainsNewline.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\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../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 || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./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.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.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 || utilContainsNewline.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 utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.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 utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.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.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\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.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.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?.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 utilFlowIndentCheck.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\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction 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\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./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.YAMLMap : YAMLSeq.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.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 && utilContainsNewline.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 (identity.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.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?.[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.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.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.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?.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.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\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.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.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.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?.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 = identity.isNode(res)\n ? res\n : new Scalar.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\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../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.Scalar.BLOCK_FOLDED : Scalar.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.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\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./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.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.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.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 = next === 'x' ? 2 : next === 'u' ? 4 : 8;\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 try {\n return String.fromCodePoint(code);\n }\n catch {\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}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.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[identity.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[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.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.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[identity.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[identity.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[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.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\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction 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\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./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.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 try {\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n }\n catch (error) {\n // Almost certainly here due to a stack overflow\n const message = error instanceof Error ? error.message : String(error);\n onError(token, 'RESOURCE_EXHAUSTION', message);\n }\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 isSrcToken = false;\n }\n }\n node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.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: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.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.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.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\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./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.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.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.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.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\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./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 errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.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 (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.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 if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\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.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 errors.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 errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.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 errors.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.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\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst 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\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./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\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./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] === cst.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 cst.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 cst.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 cst.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 cst.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\nexports.Lexer = Lexer;\n","'use strict';\n\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\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./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.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 (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.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?.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?.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\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, 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$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.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$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.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$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.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(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.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 => log.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 (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","import { spawn } from 'node:child_process';\nimport { StringDecoder } from 'node:string_decoder';\nimport type { StreamEvent } from './types';\n\n/** Default cap on captured stdout/stderr (5 MB). */\nexport const MAX_PROCESS_OUTPUT = 5_000_000;\n/** Default hard timeout for a kernel process (60 s). */\nexport const DEFAULT_TIMEOUT_MS = 60_000;\n\nexport interface RunOptions {\n /** Working directory for the child (always the skill folder). */\n cwd: string;\n /**\n * UTF-8 string written to the child's stdin, then stdin is closed. When\n * undefined, stdin is closed immediately (EOF) so a kernel that reads stdin\n * does not block until `timeoutMs`.\n */\n stdin?: string;\n /** Cancels the run. SIGKILL is sent on abort. */\n signal?: AbortSignal;\n /** Hard timeout in ms. Default {@link DEFAULT_TIMEOUT_MS}. */\n timeoutMs?: number;\n /** Cap on captured stdout/stderr. Default {@link MAX_PROCESS_OUTPUT}. */\n maxOutput?: number;\n /** Full environment for the child. Caller spreads `process.env` as needed. */\n env?: NodeJS.ProcessEnv;\n /** Invoked for each output chunk as it arrives (used for SSE streaming). */\n onData?: (event: StreamEvent) => void;\n}\n\nexport interface RunResult {\n stdout: string;\n stderr: string;\n /** Null when the process was killed by signal before exiting. */\n code: number | null;\n /** True when the process was killed by the timeout. */\n timedOut: boolean;\n /** Set when spawn itself failed (ENOENT, EACCES, ...). */\n spawnError?: Error;\n}\n\n/**\n * Spawn `cmd` with `args` and capture stdout/stderr. Never uses `shell: true`,\n * so shell metacharacters in arguments are inert. The caller is responsible for\n * interpreting `code` / `spawnError`.\n *\n * Hardening carried over from the elisym runtime: a hard timeout that SIGKILLs,\n * a bounded output buffer, a UTF-8 decoder that survives chunk boundaries, and\n * deterministic stdin closing so kernels never hang waiting for input.\n */\nexport function runProcess(cmd: string, args: string[], opts: RunOptions): Promise<RunResult> {\n return new Promise((resolveResult) => {\n const maxOutput = opts.maxOutput ?? MAX_PROCESS_OUTPUT;\n const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n\n let timedOut = false;\n const child = spawn(cmd, args, {\n cwd: opts.cwd,\n stdio: ['pipe', 'pipe', 'pipe'],\n timeout: timeoutMs,\n killSignal: 'SIGKILL',\n signal: opts.signal,\n env: opts.env,\n });\n\n let stdout = '';\n let stderr = '';\n const stdoutDecoder = new StringDecoder('utf8');\n const stderrDecoder = new StringDecoder('utf8');\n\n child.stdout?.on('data', (data: Buffer) => {\n const text = stdoutDecoder.write(data);\n if (opts.onData && text.length > 0) {\n opts.onData({ stream: 'stdout', chunk: text });\n }\n if (stdout.length < maxOutput) {\n stdout += text;\n if (stdout.length > maxOutput) {\n stdout = stdout.slice(0, maxOutput);\n }\n }\n });\n child.stderr?.on('data', (data: Buffer) => {\n const text = stderrDecoder.write(data);\n if (opts.onData && text.length > 0) {\n opts.onData({ stream: 'stderr', chunk: text });\n }\n if (stderr.length < maxOutput) {\n stderr += text;\n if (stderr.length > maxOutput) {\n stderr = stderr.slice(0, maxOutput);\n }\n }\n });\n\n child.on('close', (code, signal) => {\n // Flush any bytes the decoder buffered because a multi-byte UTF-8\n // codepoint straddled the final chunk boundary.\n stdout += stdoutDecoder.end();\n stderr += stderrDecoder.end();\n // `timeout` from spawn kills with the configured signal and no exit code.\n timedOut = timedOut || (code === null && signal === 'SIGKILL');\n resolveResult({ stdout, stderr, code, timedOut, spawnError: undefined });\n });\n\n child.on('error', (err: Error) => {\n // A timeout surfaces here on some platforms as an AbortError-like signal.\n resolveResult({ stdout, stderr, code: null, timedOut, spawnError: err });\n });\n\n if (child.stdin) {\n child.stdin.on('error', () => {\n // Ignore EPIPE - the child may exit without consuming all input.\n });\n // Always close stdin: a child that reads stdin would otherwise block\n // until `timeoutMs` even when there is no input to send.\n child.stdin.end(opts.stdin ?? '');\n }\n });\n}\n","import { parse as parseYaml } from 'yaml';\nimport { DEFAULT_TIMEOUT_MS } from './executor';\nimport type {\n HttpMethod,\n LlmSpec,\n ProxySpec,\n SkillInputKind,\n SkillManifest,\n SkillMode,\n SkillOutputKind,\n SkillTool,\n} from './types';\n\n/** Thrown when a SKILL.md manifest is missing required fields or malformed. */\nexport class ManifestError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ManifestError';\n }\n}\n\n/** Largest accepted `timeout_ms`: setTimeout/AbortSignal.timeout overflow a 32-bit\n * signed int beyond this and silently collapse to a 1ms delay. (~24.8 days.) */\nconst MAX_TIMEOUT_MS = 2_147_483_647;\n\n/** Default LLM output token cap for `mode: llm` skills. */\nexport const DEFAULT_MAX_TOKENS = 4096;\n/** Default cap on LLM-to-tools rounds for `mode: llm` skills. */\nexport const DEFAULT_MAX_TOOL_ROUNDS = 10;\n\nconst HTTP_METHODS: readonly HttpMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];\nconst INPUT_KINDS: readonly SkillInputKind[] = ['text', 'file', 'none'];\nconst OUTPUT_KINDS: readonly SkillOutputKind[] = ['text', 'json', 'file'];\n\n/** Frontmatter keys HUSK consumes; everything else is preserved in `extra`. */\nconst KNOWN_KEYS = new Set([\n 'name',\n 'description',\n 'run',\n 'command',\n 'serve',\n 'input',\n 'output',\n 'timeout_ms',\n 'method',\n 'route',\n 'input_mime',\n 'output_mime',\n // LLM mode:\n 'mode',\n 'tools',\n 'tool_env',\n 'provider',\n 'model',\n 'max_tokens',\n 'max_tool_rounds',\n // proxy mode:\n 'proxy',\n 'proxy_url',\n 'proxy_method',\n 'headers',\n 'forward_headers',\n // elisym fallbacks, recognized for drop-in compatibility:\n 'script',\n 'script_timeout_ms',\n 'max_execution_secs',\n 'input_text',\n]);\n\n/** Lowercase kebab-case slug from a human name. */\nexport function toSlug(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\n/** Split a SKILL.md file into its YAML frontmatter and markdown body. */\nexport function parseFrontmatter(content: string): {\n frontmatter: Record<string, unknown>;\n body: string;\n} {\n const normalized = content.replace(/^/, '');\n const match = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?([\\s\\S]*)$/.exec(normalized);\n if (!match) {\n throw new ManifestError(\n 'SKILL.md is missing YAML frontmatter (a block delimited by leading and trailing `---` lines)',\n );\n }\n let frontmatter: unknown;\n try {\n frontmatter = parseYaml(match[1]);\n } catch (err) {\n throw new ManifestError(`SKILL.md frontmatter is not valid YAML: ${(err as Error).message}`);\n }\n if (frontmatter === null || typeof frontmatter !== 'object' || Array.isArray(frontmatter)) {\n throw new ManifestError('SKILL.md frontmatter must be a YAML mapping');\n }\n return { frontmatter: frontmatter as Record<string, unknown>, body: (match[2] ?? '').trim() };\n}\n\n/**\n * Strip C0/C1 control characters (including the ANSI ESC byte, 0x1b) from a\n * single-line manifest string. These have no legitimate place in a name,\n * description, or route; left intact, a hostile SKILL.md could inject terminal\n * escape sequences that execute when the field is printed (`husk list`/`serve`)\n * or break out of a header/HTML context downstream.\n */\nexport function stripControlChars(value: string): string {\n let out = '';\n for (const ch of value) {\n const code = ch.codePointAt(0) ?? 0;\n const isControl = code <= 0x1f || (code >= 0x7f && code <= 0x9f);\n if (!isControl) {\n out += ch;\n }\n }\n return out;\n}\n\n/**\n * Sanitize a manifest MIME value. `output_mime` becomes the `content-type`\n * response header for file output, so a stray CR/LF would otherwise allow\n * response-header injection. Empty-after-strip collapses to undefined.\n */\nfunction sanitizeMime(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n return stripControlChars(value.trim()) || undefined;\n}\n\nfunction requireString(fm: Record<string, unknown>, key: string): string {\n const value = fm[key];\n // Re-check emptiness AFTER stripping control chars: `trim()` removes only\n // whitespace, so a value of all control characters (e.g. `name: \"\u0001\"`)\n // would pass a `trim() !== ''` check yet strip to empty, breaking the\n // non-empty guarantee this function's error message promises.\n const cleaned = typeof value === 'string' ? stripControlChars(value.trim()) : '';\n if (!cleaned) {\n throw new ManifestError(`SKILL.md: \\`${key}\\` is required and must be a non-empty string`);\n }\n return cleaned;\n}\n\n/**\n * Turn a `run`/`command`/`script` value into an argv array. Accepts either a\n * YAML list (used verbatim) or a string (split on whitespace). For commands\n * with quoted/spaced arguments, prefer the list form in YAML.\n */\nfunction toArgv(value: unknown, source: string): string[] {\n if (Array.isArray(value)) {\n const argv = value.map((v) => {\n if (typeof v !== 'string') {\n throw new ManifestError(`SKILL.md: every entry of \\`${source}\\` must be a string`);\n }\n return v;\n });\n if (argv.length === 0) {\n throw new ManifestError(`SKILL.md: \\`${source}\\` must not be empty`);\n }\n return argv;\n }\n if (typeof value === 'string') {\n const argv = value.trim().split(/\\s+/).filter(Boolean);\n if (argv.length === 0) {\n throw new ManifestError(`SKILL.md: \\`${source}\\` must not be empty`);\n }\n return argv;\n }\n throw new ManifestError(`SKILL.md: \\`${source}\\` must be a string or a list of strings`);\n}\n\nfunction coerceEnum<T extends string>(\n value: unknown,\n allowed: readonly T[],\n key: string,\n): T | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== 'string' || !allowed.includes(value as T)) {\n throw new ManifestError(`SKILL.md: \\`${key}\\` must be one of ${allowed.join(', ')}`);\n }\n return value as T;\n}\n\nfunction isTextMime(mime: string | undefined): boolean {\n if (!mime) {\n return false;\n }\n return /^text\\//.test(mime) || mime === 'application/json';\n}\n\nfunction asMapping(value: unknown, where: string): Record<string, unknown> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new ManifestError(`SKILL.md: ${where} must be a mapping`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction parseToolParams(value: unknown, toolName: string): SkillTool['parameters'] {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new ManifestError(`SKILL.md: tool \"${toolName}\" \\`parameters\\` must be a list`);\n }\n return value.map((raw, index) => {\n const p = asMapping(raw, `tool \"${toolName}\" parameters[${index}]`);\n const name = typeof p.name === 'string' ? p.name.trim() : '';\n if (!name) {\n throw new ManifestError(`SKILL.md: tool \"${toolName}\" parameters[${index}] needs a \\`name\\``);\n }\n const description = typeof p.description === 'string' ? p.description : '';\n const required = p.required === undefined ? true : Boolean(p.required);\n return { name, description, required };\n });\n}\n\n/** Parse the `tools` list of a `mode: llm` skill. */\nfunction parseTools(value: unknown): SkillTool[] {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new ManifestError('SKILL.md: `tools` must be a list');\n }\n return value.map((raw, index) => {\n const t = asMapping(raw, `tools[${index}]`);\n const name = typeof t.name === 'string' ? t.name.trim() : '';\n if (!name) {\n throw new ManifestError(`SKILL.md: tools[${index}] needs a \\`name\\``);\n }\n const description = typeof t.description === 'string' ? t.description.trim() : '';\n if (!description) {\n throw new ManifestError(`SKILL.md: tool \"${name}\" needs a \\`description\\``);\n }\n const command = toArgv(t.command, `tool \"${name}\" command`);\n return { name, description, command, parameters: parseToolParams(t.parameters, name) };\n });\n}\n\nfunction parsePositiveInt(value: unknown, key: string, fallback: number): number {\n if (value === undefined || value === null) {\n return fallback;\n }\n if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0) {\n throw new ManifestError(`SKILL.md: \\`${key}\\` must be a positive integer`);\n }\n return value;\n}\n\n/** Parse a YAML mapping of header name -> string value. */\nfunction parseHeaders(value: unknown): Record<string, string> {\n if (value === undefined || value === null) {\n return {};\n }\n const map = asMapping(value, '`headers`');\n const out: Record<string, string> = {};\n for (const [key, raw] of Object.entries(map)) {\n if (typeof raw !== 'string') {\n throw new ManifestError(`SKILL.md: header \"${key}\" must be a string`);\n }\n out[key] = raw;\n }\n return out;\n}\n\nfunction parseStringList(value: unknown, key: string): string[] {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new ManifestError(`SKILL.md: \\`${key}\\` must be a list of strings`);\n }\n return value.map((v, index) => {\n if (typeof v !== 'string') {\n throw new ManifestError(`SKILL.md: ${key}[${index}] must be a string`);\n }\n return v;\n });\n}\n\n/** Build the {@link ProxySpec} for a `mode: proxy` skill. */\nfunction parseProxy(fm: Record<string, unknown>): ProxySpec {\n let url = '';\n if (typeof fm.proxy === 'string') {\n url = fm.proxy.trim();\n } else if (typeof fm.proxy_url === 'string') {\n url = fm.proxy_url.trim();\n }\n if (!url) {\n throw new ManifestError('SKILL.md: `proxy` requires an upstream URL');\n }\n if (!/^https?:\\/\\//.test(url)) {\n throw new ManifestError('SKILL.md: `proxy` URL must start with http:// or https://');\n }\n const method =\n typeof fm.proxy_method === 'string' ? fm.proxy_method.trim().toUpperCase() : undefined;\n return {\n url,\n method,\n headers: parseHeaders(fm.headers),\n forwardHeaders: parseStringList(fm.forward_headers, 'forward_headers').map((h) =>\n h.toLowerCase(),\n ),\n };\n}\n\n/**\n * Parse and normalize a SKILL.md manifest. HUSK-native fields win; elisym\n * fields (`script`, `mode`, `script_timeout_ms`, `input_mime`, ...) are used as\n * fallbacks so an existing skill folder serves over HTTP with no edits.\n */\nexport function parseManifest(content: string, slug: string): SkillManifest {\n const { frontmatter: fm } = parseFrontmatter(content);\n\n const name = requireString(fm, 'name');\n const description = requireString(fm, 'description');\n\n const runValue = fm.run ?? fm.command ?? fm.script;\n const serveValue = fm.serve ?? (fm.mode === 'static-file' ? fm.output_file : undefined);\n const hasRun = runValue !== undefined;\n const hasServe = serveValue !== undefined;\n const hasProxy = typeof fm.proxy === 'string' || typeof fm.proxy_url === 'string';\n const modeField = typeof fm.mode === 'string' ? fm.mode : undefined;\n\n // `tools:` is an LLM-only concept. Declaring it alongside an explicit non-llm\n // mode (`script`/`static-file`/`proxy`, or an elisym alias) is contradictory:\n // honoring it would coerce the skill into an unintended, token-spending llm\n // endpoint and silently drop the declared `run:`/`serve:`. Reject it loudly\n // rather than let `tools:` override the operator's explicit `mode:` - the same\n // anti-coercion invariant the cascade below upholds for a missing target.\n if (fm.tools !== undefined && modeField !== undefined && modeField !== 'llm') {\n throw new ManifestError(\n `SKILL.md: \\`tools\\` only applies to \\`mode: llm\\`, but \\`mode: ${modeField}\\` was set`,\n );\n }\n\n // Same anti-coercion guard for `proxy:`/`proxy_url:`: it is proxy-mode-only, so\n // declaring it under an explicit non-proxy `mode:` is contradictory and would\n // silently drop the declared executor (a `mode: script` skill becoming a\n // reverse proxy). Reject it rather than let the URL override the operator's\n // explicit mode.\n if (hasProxy && modeField !== undefined && modeField !== 'proxy') {\n throw new ManifestError(\n `SKILL.md: \\`proxy\\` only applies to \\`mode: proxy\\`, but \\`mode: ${modeField}\\` was set`,\n );\n }\n\n // Decide the executor. `proxy` is explicit (`mode: proxy` or a `proxy:` URL).\n // An LLM skill is explicit (`mode: llm` or a `tools` list) or the implicit\n // default when nothing else is declared - matching elisym, whose default is\n // `llm`. Crucially, both the `tools:` inference and the implicit `llm` default\n // apply ONLY when no `mode:` was set: an explicitly-declared non-llm mode whose\n // target is missing (a typo in `run:`/`serve:`) must reach its own error below,\n // never get silently coerced into an unintended, unauthenticated,\n // token-spending llm endpoint.\n let mode: SkillMode;\n if (modeField === 'proxy' || (modeField === undefined && hasProxy)) {\n mode = 'proxy';\n } else if (modeField === 'static-file') {\n // Explicit `mode: static-file` with no serve target falls through to the\n // missing-target guard below (clear error) rather than the `llm` default.\n mode = 'static-file';\n } else if (\n modeField === 'llm' ||\n (modeField === undefined && (fm.tools !== undefined || (!hasRun && !hasServe)))\n ) {\n mode = 'llm';\n } else if (modeField === undefined && hasServe && !hasRun) {\n // Implicit static-file: a bare `serve:` with no `mode:` and no `run:`. Gated\n // on `modeField === undefined` so an explicit `mode: script` (etc.) with a\n // stray `serve:` but a missing `run:` is NOT silently rerouted to\n // static-file - it falls through to the missing-target guard below instead.\n mode = 'static-file';\n } else {\n // Includes an explicit `mode: script` (or elisym `static-script`/\n // `dynamic-script`) with a missing `run`/`command`/`script`: `toArgv` below\n // throws a ManifestError instead of silently defaulting to `llm` or\n // static-file.\n mode = 'script';\n }\n\n let runSource = 'script';\n if (fm.run !== undefined) {\n runSource = 'run';\n } else if (fm.command !== undefined) {\n runSource = 'command';\n }\n const argv = mode === 'script' ? toArgv(runValue, runSource) : [];\n const serveFile =\n mode === 'static-file' && typeof serveValue === 'string' ? serveValue.trim() : undefined;\n if (mode === 'static-file' && !serveFile) {\n // Caught here rather than crashing at invoke when `resolveInside` gets a\n // non-string path (e.g. `mode: static-file` with a numeric `output_file`).\n throw new ManifestError(\n 'SKILL.md: a `static-file` skill needs `serve` (or `output_file`) set to a non-empty file path',\n );\n }\n\n let llm: LlmSpec | undefined;\n if (mode === 'llm') {\n const provider =\n typeof fm.provider === 'string' && fm.provider.trim() ? fm.provider.trim() : 'anthropic';\n const model = typeof fm.model === 'string' && fm.model.trim() ? fm.model.trim() : undefined;\n llm = {\n provider,\n model,\n maxTokens: parsePositiveInt(fm.max_tokens, 'max_tokens', DEFAULT_MAX_TOKENS),\n maxToolRounds: parsePositiveInt(\n fm.max_tool_rounds,\n 'max_tool_rounds',\n DEFAULT_MAX_TOOL_ROUNDS,\n ),\n tools: parseTools(fm.tools),\n // Extra env var names a tool subprocess is allowed to see. Tools otherwise\n // receive an allowlisted, secret-free environment (see scopedToolEnv), so\n // an operator opts in only the vars their own tool scripts genuinely need.\n toolEnv: parseStringList(fm.tool_env, 'tool_env'),\n };\n }\n\n const proxy = mode === 'proxy' ? parseProxy(fm) : undefined;\n\n const inputMime = sanitizeMime(fm.input_mime);\n const outputMime = sanitizeMime(fm.output_mime);\n\n // Resolve input kind: explicit field, then elisym mode/mime heuristics.\n let input = coerceEnum<SkillInputKind>(fm.input, INPUT_KINDS, 'input');\n if (!input) {\n const mode = typeof fm.mode === 'string' ? fm.mode : undefined;\n if (\n serveFile ||\n mode === 'static-script' ||\n mode === 'static-file' ||\n fm.input_text === 'none'\n ) {\n input = 'none';\n } else if (inputMime && inputMime !== 'none' && !isTextMime(inputMime)) {\n input = 'file';\n } else {\n input = 'text';\n }\n }\n\n // Resolve output kind: explicit field, then output_mime heuristic.\n let output = coerceEnum<SkillOutputKind>(fm.output, OUTPUT_KINDS, 'output');\n if (!output) {\n output = outputMime && !isTextMime(outputMime) ? 'file' : 'text';\n }\n\n // Resolve timeout: husk `timeout_ms`, then elisym equivalents.\n let timeoutMs = DEFAULT_TIMEOUT_MS;\n if (typeof fm.timeout_ms === 'number') {\n timeoutMs = fm.timeout_ms;\n } else if (typeof fm.script_timeout_ms === 'number') {\n timeoutMs = fm.script_timeout_ms;\n } else if (typeof fm.max_execution_secs === 'number') {\n timeoutMs = fm.max_execution_secs * 1000;\n }\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new ManifestError('SKILL.md: `timeout_ms` must be a positive number');\n }\n if (timeoutMs > MAX_TIMEOUT_MS) {\n // setTimeout / AbortSignal.timeout cap at a 32-bit signed int; a larger delay\n // silently overflows to 1ms, which would SIGKILL the kernel almost instantly -\n // the opposite of the operator's intent. Reject it loudly instead.\n throw new ManifestError(\n `SKILL.md: \\`timeout_ms\\` must not exceed ${MAX_TIMEOUT_MS} (~24.8 days)`,\n );\n }\n\n const method = coerceEnum<HttpMethod>(fm.method, HTTP_METHODS, 'method') ?? 'POST';\n\n // Derive the default route from the manifest name's slug - the SAME slug the\n // loader uses as the skill's identity (`toSlug(name) || folderSlug`) - so the\n // invoke route, the canonical card route, and the identity never diverge when\n // the folder name and `name:` slugify differently. Fall back to the folder\n // slug when `toSlug(name)` is empty.\n const routeSlug = toSlug(name) || slug;\n let route =\n typeof fm.route === 'string' && fm.route.trim()\n ? stripControlChars(fm.route.trim())\n : `/skills/${routeSlug}`;\n if (!route.startsWith('/')) {\n route = `/${route}`;\n }\n // Normalize trailing slashes so `/healthz/` can't slip past the reserved-route\n // and duplicate checks yet collapse to `/healthz` at request time (the server\n // strips them).\n if (route.length > 1) {\n route = route.replace(/\\/+$/, '') || '/';\n }\n\n const extra: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(fm)) {\n if (!KNOWN_KEYS.has(key) && key !== 'output_file') {\n extra[key] = value;\n }\n }\n\n return {\n name,\n description,\n argv,\n serveFile,\n input,\n output,\n timeoutMs,\n method,\n route,\n inputMime,\n outputMime,\n mode,\n llm,\n proxy,\n extra,\n };\n}\n","import { chmodSync, constants, readdirSync, readFileSync, realpathSync, statSync } from 'node:fs';\nimport { isAbsolute, join, resolve, sep } from 'node:path';\nimport { ManifestError, parseFrontmatter, parseManifest, toSlug } from './manifest';\nimport type { Skill } from './types';\n\n/** Names that look like a skills root rather than a single skill. */\nconst SKILL_MANIFEST = 'SKILL.md';\n\n/** Built-in endpoints an explicit `route:` must not shadow (server matches\n * invoke routes before these, so a collision silently hijacks them). */\nconst RESERVED_ROUTES = new Set(['/', '/healthz', '/skills', '/openapi.json']);\n\nexport interface LoadOptions {\n /**\n * When true, a malformed skill throws. When false (default), it is skipped\n * with a warning collected in {@link LoadResult.errors}.\n */\n strict?: boolean;\n}\n\nexport interface LoadResult {\n skills: Skill[];\n /** Folders that looked like skills but failed to load. */\n errors: Array<{ dir: string; message: string }>;\n}\n\n/** True when `argv[0]` refers to a script file inside the skill, not a PATH binary. */\nfunction isLocalScript(arg: string): boolean {\n return arg.startsWith('.') || arg.startsWith('/') || arg.includes('/');\n}\n\n/** Best-effort: make a local kernel script executable so `./run.sh` works. */\nfunction ensureExecutable(skillDir: string, arg: string): void {\n const target = isAbsolute(arg) ? arg : resolve(skillDir, arg);\n try {\n // Resolve symlinks before deciding: a lexical check alone is defeated by a\n // `./run.sh -> /etc/...` symlink, since statSync/chmodSync follow symlinks.\n // Only ever flip the execute bit on a real file inside the skill folder, so\n // a hostile SKILL.md can't chmod a file outside its own directory.\n const realRoot = realpathSync(skillDir);\n const realTarget = realpathSync(target);\n if (realTarget !== realRoot && !realTarget.startsWith(realRoot + sep)) {\n return;\n }\n const st = statSync(realTarget);\n if (!st.isFile()) {\n return;\n }\n // Add owner-execute if missing; ignore failures (read-only mounts, etc.).\n chmodSync(realTarget, st.mode | constants.S_IXUSR);\n } catch {\n // Missing/unresolvable file is reported later at invoke time with an error.\n }\n}\n\n/** Load a single skill from its folder. Throws {@link ManifestError} on bad input. */\nexport function loadSkill(skillDir: string): Skill {\n const dir = resolve(skillDir);\n const manifestPath = join(dir, SKILL_MANIFEST);\n let content: string;\n try {\n content = readFileSync(manifestPath, 'utf-8');\n } catch {\n throw new ManifestError(`no ${SKILL_MANIFEST} found in ${dir}`);\n }\n\n const folderName = dir.split(/[\\\\/]/).pop() ?? 'skill';\n const slug = toSlug(folderName);\n const manifest = parseManifest(content, slug);\n // Re-derive the canonical slug from the manifest name when it differs.\n const nameSlug = toSlug(manifest.name) || slug;\n\n if (manifest.argv.length > 0 && isLocalScript(manifest.argv[0])) {\n ensureExecutable(dir, manifest.argv[0]);\n }\n // Make local LLM tool scripts executable too (e.g. `./tools/lookup.sh`).\n for (const tool of manifest.llm?.tools ?? []) {\n if (tool.command.length > 0 && isLocalScript(tool.command[0])) {\n ensureExecutable(dir, tool.command[0]);\n }\n }\n\n const { body } = parseFrontmatter(content);\n return { manifest, dir, slug: nameSlug, doc: body };\n}\n\n/**\n * Discover and load every skill under `skillsDir`. Each immediate subdirectory\n * containing a `SKILL.md` is treated as one skill. A `SKILL.md` directly in\n * `skillsDir` is also loaded (single-skill folder).\n */\nexport function loadSkills(skillsDir: string, options: LoadOptions = {}): LoadResult {\n const root = resolve(skillsDir);\n const skills: Skill[] = [];\n const errors: Array<{ dir: string; message: string }> = [];\n const seen = new Map<string, string>();\n const seenPaths = new Map<string, string>();\n\n const candidates: string[] = [];\n // A SKILL.md at the root means `skillsDir` is itself a single skill.\n try {\n statSync(join(root, SKILL_MANIFEST));\n candidates.push(root);\n } catch {\n let entries: string[] = [];\n try {\n entries = readdirSync(root);\n } catch {\n throw new ManifestError(`skills directory not found: ${root}`);\n }\n for (const entry of entries.sort()) {\n const entryPath = join(root, entry);\n try {\n if (!statSync(entryPath).isDirectory()) {\n continue;\n }\n statSync(join(entryPath, SKILL_MANIFEST));\n candidates.push(entryPath);\n } catch {\n // Not a skill folder; ignore.\n }\n }\n }\n\n for (const dir of candidates) {\n try {\n const skill = loadSkill(dir);\n const clash = seen.get(skill.slug);\n if (clash) {\n throw new ManifestError(\n `duplicate skill slug \"${skill.slug}\" (already defined by ${clash})`,\n );\n }\n if (RESERVED_ROUTES.has(skill.manifest.route)) {\n throw new ManifestError(\n `skill route \"${skill.manifest.route}\" collides with a built-in endpoint`,\n );\n }\n // The server registers each skill under BOTH its canonical card path\n // (`/skills/<slug>`) and its invoke `route`, and the card table is keyed by\n // path alone (no method). So reject any path a prior skill already claims -\n // an explicit `route:` that shadows another skill's card route, or two\n // skills sharing a path across methods - which the server would otherwise\n // silently overwrite (method+route deduping alone misses both). One path\n // identifies one skill.\n const canonical = `/skills/${skill.slug}`;\n const claimedPaths =\n skill.manifest.route === canonical ? [canonical] : [canonical, skill.manifest.route];\n for (const path of claimedPaths) {\n const pathClash = seenPaths.get(path);\n if (pathClash) {\n throw new ManifestError(\n `duplicate skill route \"${path}\" (already defined by ${pathClash})`,\n );\n }\n }\n seen.set(skill.slug, dir);\n for (const path of claimedPaths) {\n seenPaths.set(path, dir);\n }\n skills.push(skill);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (options.strict) {\n throw err;\n }\n errors.push({ dir, message });\n }\n }\n\n return { skills, errors };\n}\n","import { runProcess } from './executor';\nimport type { LlmSpec, SkillTool } from './types';\n\n/** Thrown when an LLM skill cannot run (missing key, API error, round limit). */\nexport class LlmError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'LlmError';\n }\n}\n\ntype ProviderKind = 'anthropic' | 'openai';\n\ninterface ProviderInfo {\n kind: ProviderKind;\n envVar: string;\n defaultModel: string;\n url: string;\n}\n\n/**\n * Built-in providers. `anthropic` speaks the Messages API; the rest speak the\n * OpenAI chat-completions API (same shape, different base URL and model).\n */\nconst PROVIDERS: Record<string, ProviderInfo> = {\n anthropic: {\n kind: 'anthropic',\n envVar: 'ANTHROPIC_API_KEY',\n defaultModel: 'claude-haiku-4-5-20251001',\n url: 'https://api.anthropic.com/v1/messages',\n },\n openai: {\n kind: 'openai',\n envVar: 'OPENAI_API_KEY',\n defaultModel: 'gpt-4o-mini',\n url: 'https://api.openai.com/v1/chat/completions',\n },\n xai: {\n kind: 'openai',\n envVar: 'XAI_API_KEY',\n defaultModel: 'grok-3',\n url: 'https://api.x.ai/v1/chat/completions',\n },\n google: {\n kind: 'openai',\n envVar: 'GOOGLE_API_KEY',\n defaultModel: 'gemini-2.0-flash',\n url: 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions',\n },\n deepseek: {\n kind: 'openai',\n envVar: 'DEEPSEEK_API_KEY',\n defaultModel: 'deepseek-chat',\n url: 'https://api.deepseek.com/chat/completions',\n },\n};\n\n/** Names of the provider API-key env vars (e.g. `ANTHROPIC_API_KEY`). */\nexport const PROVIDER_ENV_VARS = Object.values(PROVIDERS).map((p) => p.envVar);\n\n/** Provider API keys: never handed to a tool subprocess, even if opted in. */\nconst PROVIDER_KEYS = new Set(PROVIDER_ENV_VARS);\n\n/**\n * The only environment variables a tool subprocess inherits by default: safe,\n * non-secret operational essentials a script needs to run (find its interpreter\n * on `PATH`, locate `$HOME`, honor the locale). The `LC_*` locale family is\n * matched by prefix. Everything else - including any operator secret in the\n * server environment (provider keys, a proxy skill's `${VAR}` upstream\n * credentials, a stray `GITHUB_TOKEN`) - is withheld unless the skill names it\n * in `tool_env:`.\n */\nconst TOOL_ENV_ALLOWLIST = new Set([\n 'PATH',\n 'HOME',\n 'USER',\n 'LOGNAME',\n 'SHELL',\n 'PWD',\n 'TMPDIR',\n 'TMP',\n 'TEMP',\n 'TERM',\n 'LANG',\n 'LANGUAGE',\n 'TZ',\n]);\n\ninterface ResolvedLlm {\n kind: ProviderKind;\n url: string;\n apiKey: string;\n model: string;\n maxTokens: number;\n}\n\n/** Resolve provider config and API key, or throw {@link LlmError}. */\nexport function resolveLlm(spec: LlmSpec, env: NodeJS.ProcessEnv): ResolvedLlm {\n const provider = PROVIDERS[spec.provider];\n if (!provider) {\n throw new LlmError(\n `unknown LLM provider \"${spec.provider}\" (known: ${Object.keys(PROVIDERS).join(', ')})`,\n );\n }\n const apiKey = env[provider.envVar];\n if (!apiKey) {\n throw new LlmError(`${provider.envVar} is not set (required for this skill's mode: llm)`);\n }\n return {\n kind: provider.kind,\n url: provider.url,\n apiKey,\n model: spec.model ?? provider.defaultModel,\n maxTokens: spec.maxTokens,\n };\n}\n\ninterface ToolCall {\n id: string;\n name: string;\n arguments: Record<string, unknown>;\n}\n\ntype Completion =\n | { type: 'text'; text: string }\n | { type: 'tool_use'; calls: ToolCall[]; assistantMessage: unknown };\n\ninterface ToolResult {\n callId: string;\n content: string;\n}\n\nconst RETRYABLE = new Set([429, 500, 502, 503, 529]);\n\n/** Combine an optional caller signal with an optional hard timeout (mirrors proxy.ts). */\nfunction combineSignals(\n signal: AbortSignal | undefined,\n timeoutMs: number | undefined,\n): AbortSignal | undefined {\n const signals: AbortSignal[] = [];\n if (signal) {\n signals.push(signal);\n }\n if (timeoutMs && timeoutMs > 0) {\n signals.push(AbortSignal.timeout(timeoutMs));\n }\n if (signals.length === 0) {\n return undefined;\n }\n return signals.length === 1 ? signals[0] : AbortSignal.any(signals);\n}\n\nfunction delay(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(resolve, ms);\n signal?.addEventListener(\n 'abort',\n () => {\n clearTimeout(timer);\n reject(new LlmError('aborted'));\n },\n { once: true },\n );\n });\n}\n\nasync function postJson(\n url: string,\n headers: Record<string, string>,\n body: unknown,\n signal?: AbortSignal,\n timeoutMs?: number,\n): Promise<unknown> {\n // Bound each provider round-trip by the skill timeout (like proxy.ts and the\n // kernel runner), combined with the caller signal, so a stalled provider\n // connection can't pin the request - and its concurrency slot - until the\n // client disconnects or the socket idles out. Created once so it caps the\n // whole call, retries and backoff included.\n const reqSignal = combineSignals(signal, timeoutMs);\n let lastError = '';\n for (let attempt = 0; attempt < 3; attempt++) {\n if (attempt > 0) {\n await delay(250 * attempt, reqSignal);\n }\n let res: Response;\n try {\n res = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json', ...headers },\n body: JSON.stringify(body),\n // Never follow redirects: the provider key (`x-api-key` / bearer) lives\n // in `headers` and fetch does NOT strip custom headers on a cross-origin\n // redirect, so following a 3xx would replay the key to that host.\n redirect: 'manual',\n signal: reqSignal,\n });\n } catch (err) {\n lastError = err instanceof Error ? err.message : String(err);\n continue;\n }\n if (res.ok) {\n return res.json();\n }\n if (res.type === 'opaqueredirect' || res.status === 0) {\n throw new LlmError(\n `LLM request failed - provider redirected (refused, to protect the API key)`,\n );\n }\n const text = await res.text().catch(() => '');\n lastError = `HTTP ${res.status}: ${text.slice(0, 500)}`;\n if (!RETRYABLE.has(res.status)) {\n break;\n }\n }\n throw new LlmError(`LLM request failed - ${lastError}`);\n}\n\n// --- Anthropic (Messages API) ---------------------------------------------\n\nfunction anthropicTools(tools: SkillTool[]): unknown[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n input_schema: {\n type: 'object',\n properties: Object.fromEntries(\n tool.parameters.map((p) => [p.name, { type: 'string', description: p.description }]),\n ),\n required: tool.parameters.filter((p) => p.required).map((p) => p.name),\n },\n }));\n}\n\nasync function anthropicComplete(\n cfg: ResolvedLlm,\n system: string,\n messages: unknown[],\n tools: SkillTool[],\n signal?: AbortSignal,\n timeoutMs?: number,\n): Promise<Completion> {\n const body: Record<string, unknown> = {\n model: cfg.model,\n max_tokens: cfg.maxTokens,\n system,\n messages,\n };\n if (tools.length > 0) {\n body.tools = anthropicTools(tools);\n }\n const data = (await postJson(\n cfg.url,\n { 'x-api-key': cfg.apiKey, 'anthropic-version': '2023-06-01' },\n body,\n signal,\n timeoutMs,\n )) as {\n content?: Array<{ type: string; text?: string; id?: string; name?: string; input?: unknown }>;\n };\n\n const content = data.content ?? [];\n const toolUses = content.filter((b) => b.type === 'tool_use');\n if (toolUses.length > 0) {\n return {\n type: 'tool_use',\n calls: toolUses.map((b) => ({\n id: b.id ?? '',\n name: b.name ?? '',\n arguments: (b.input as Record<string, unknown>) ?? {},\n })),\n assistantMessage: { role: 'assistant', content },\n };\n }\n const text = content.find((b) => b.type === 'text')?.text ?? '';\n return { type: 'text', text };\n}\n\nfunction anthropicToolResults(results: ToolResult[]): unknown[] {\n return [\n {\n role: 'user',\n content: results.map((r) => ({\n type: 'tool_result',\n tool_use_id: r.callId,\n content: r.content,\n })),\n },\n ];\n}\n\n// --- OpenAI-compatible (chat completions) ----------------------------------\n\nfunction openaiTools(tools: SkillTool[]): unknown[] {\n return tools.map((tool) => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: {\n type: 'object',\n properties: Object.fromEntries(\n tool.parameters.map((p) => [p.name, { type: 'string', description: p.description }]),\n ),\n required: tool.parameters.filter((p) => p.required).map((p) => p.name),\n },\n },\n }));\n}\n\nasync function openaiComplete(\n cfg: ResolvedLlm,\n system: string,\n messages: unknown[],\n tools: SkillTool[],\n signal?: AbortSignal,\n timeoutMs?: number,\n): Promise<Completion> {\n const body: Record<string, unknown> = {\n model: cfg.model,\n max_tokens: cfg.maxTokens,\n messages: [{ role: 'system', content: system }, ...messages],\n };\n if (tools.length > 0) {\n body.tools = openaiTools(tools);\n body.tool_choice = 'auto';\n }\n const data = (await postJson(\n cfg.url,\n { authorization: `Bearer ${cfg.apiKey}` },\n body,\n signal,\n timeoutMs,\n )) as {\n choices?: Array<{\n message?: {\n content?: string | null;\n tool_calls?: Array<{ id: string; function: { name: string; arguments: string } }>;\n };\n }>;\n };\n\n const message = data.choices?.[0]?.message;\n const toolCalls = message?.tool_calls ?? [];\n if (toolCalls.length > 0) {\n return {\n type: 'tool_use',\n calls: toolCalls.map((c) => {\n let args: Record<string, unknown> = {};\n try {\n // A non-compliant endpoint can emit `arguments: \"null\"` (or a JSON\n // scalar/array), which parses to a non-object; keep only real objects\n // so `buildToolArgs` never indexes into null. Mirrors the Anthropic\n // path's `?? {}` guard.\n const parsed: unknown = JSON.parse(c.function.arguments || '{}');\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n args = parsed as Record<string, unknown>;\n }\n } catch {\n args = {};\n }\n return { id: c.id, name: c.function.name, arguments: args };\n }),\n assistantMessage: message,\n };\n }\n return { type: 'text', text: message?.content ?? '' };\n}\n\nfunction openaiToolResults(results: ToolResult[]): unknown[] {\n return results.map((r) => ({ role: 'tool', tool_call_id: r.callId, content: r.content }));\n}\n\n// --- Tool execution --------------------------------------------------------\n\n/**\n * Build a tool subprocess's environment as an ALLOWLIST, not a denylist. A\n * denylist that strips only the known provider keys still leaks every other\n * secret in the server environment - e.g. a co-hosted proxy skill's\n * `${GITHUB_TOKEN}` upstream credential - to a tool the model can be\n * prompt-injected into abusing. Hand a tool only the safe operational base\n * (plus whatever the skill explicitly opted into via `tool_env:`), and never a\n * provider key.\n */\nfunction scopedToolEnv(allow: readonly string[]): NodeJS.ProcessEnv {\n const opted = new Set(allow);\n const env: NodeJS.ProcessEnv = {};\n for (const [key, value] of Object.entries(process.env)) {\n if (value === undefined || PROVIDER_KEYS.has(key)) {\n continue;\n }\n if (TOOL_ENV_ALLOWLIST.has(key) || key.startsWith('LC_') || opted.has(key)) {\n env[key] = value;\n }\n }\n return env;\n}\n\n/**\n * Map an LLM tool call to a command argv. The first `required` parameter is a\n * positional argument; the rest are `--name value`. No value may begin with `-`\n * (so an LLM-supplied argument can never be parsed as a flag). Mirrors elisym.\n */\nexport function buildToolArgs(\n tool: SkillTool,\n args: Record<string, unknown>,\n): { cmd: string; argv: string[] } | { error: string } {\n const command = [...tool.command];\n const cmd = command.shift();\n if (!cmd) {\n return { error: `tool \"${tool.name}\" has an empty command` };\n }\n // Defensive: a malformed tool call can yield non-object args (null, a scalar,\n // an array); never index into those. The callers already coerce, but this is\n // the security primitive, so it must not assume a well-formed input.\n const safeArgs = args && typeof args === 'object' && !Array.isArray(args) ? args : {};\n const argv = command;\n for (let index = 0; index < tool.parameters.length; index++) {\n const param = tool.parameters[index];\n const value = safeArgs[param.name];\n if (value === undefined) {\n continue;\n }\n const stringValue = String(value);\n if (stringValue.startsWith('-')) {\n return { error: `tool \"${tool.name}\" argument \"${param.name}\" must not begin with \"-\"` };\n }\n if (param.required && index === 0) {\n argv.push(stringValue);\n } else {\n argv.push(`--${param.name}`, stringValue);\n }\n }\n return { cmd, argv };\n}\n\nasync function runTool(\n tool: SkillTool,\n call: ToolCall,\n skillDir: string,\n timeoutMs: number,\n toolEnv: readonly string[],\n signal?: AbortSignal,\n): Promise<string> {\n const built = buildToolArgs(tool, call.arguments);\n if ('error' in built) {\n return `Error: ${built.error}`;\n }\n const result = await runProcess(built.cmd, built.argv, {\n cwd: skillDir,\n signal,\n timeoutMs,\n env: scopedToolEnv(toolEnv),\n });\n if (result.spawnError) {\n return `Error: ${result.spawnError.message}`;\n }\n if (result.code === 0) {\n return result.stdout.trim();\n }\n return `Error (exit ${result.code}): ${result.stderr.trim() || result.stdout.trim()}`;\n}\n\nexport interface RunLlmOptions {\n spec: LlmSpec;\n /** System prompt (the SKILL.md body). */\n systemPrompt: string;\n /** The user's request text. */\n userInput: string;\n /** Skill directory - the cwd for tool scripts. */\n skillDir: string;\n /** Per-operation timeout (ms): bounds each tool subprocess and each provider HTTP round-trip. */\n toolTimeoutMs: number;\n signal?: AbortSignal;\n env?: NodeJS.ProcessEnv;\n}\n\n/**\n * Run a `mode: llm` skill: the model answers using the system prompt and may\n * call the declared tools in a loop until it produces a final text answer.\n */\nexport async function runLlm(options: RunLlmOptions): Promise<string> {\n const cfg = resolveLlm(options.spec, options.env ?? process.env);\n const { tools } = options.spec;\n const complete = cfg.kind === 'anthropic' ? anthropicComplete : openaiComplete;\n const formatResults = cfg.kind === 'anthropic' ? anthropicToolResults : openaiToolResults;\n\n const messages: unknown[] = [{ role: 'user', content: options.userInput }];\n\n if (tools.length === 0) {\n const result = await complete(\n cfg,\n options.systemPrompt,\n messages,\n [],\n options.signal,\n options.toolTimeoutMs,\n );\n return result.type === 'text' ? result.text : '';\n }\n\n for (let round = 0; round < options.spec.maxToolRounds; round++) {\n if (options.signal?.aborted) {\n throw new LlmError('aborted');\n }\n const result = await complete(\n cfg,\n options.systemPrompt,\n messages,\n tools,\n options.signal,\n options.toolTimeoutMs,\n );\n if (result.type === 'text') {\n return result.text;\n }\n messages.push(result.assistantMessage);\n\n const toolResults: ToolResult[] = [];\n for (const call of result.calls) {\n const tool = tools.find((t) => t.name === call.name);\n const content = tool\n ? await runTool(\n tool,\n call,\n options.skillDir,\n options.toolTimeoutMs,\n options.spec.toolEnv ?? [],\n options.signal,\n )\n : `Error: unknown tool \"${call.name}\"`;\n toolResults.push({ callId: call.id, content });\n }\n messages.push(...formatResults(toolResults));\n }\n\n throw new LlmError(`max tool rounds (${options.spec.maxToolRounds}) exceeded`);\n}\n","import { extname } from 'node:path';\n\nconst BY_EXT: Record<string, string> = {\n '.txt': 'text/plain; charset=utf-8',\n '.md': 'text/markdown; charset=utf-8',\n '.html': 'text/html; charset=utf-8',\n '.csv': 'text/csv; charset=utf-8',\n '.json': 'application/json',\n '.xml': 'application/xml',\n '.pdf': 'application/pdf',\n '.zip': 'application/zip',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.ogg': 'audio/ogg',\n '.mp4': 'video/mp4',\n '.webm': 'video/webm',\n};\n\n/** Best-effort MIME type from a filename, defaulting to octet-stream. */\nexport function mimeFromPath(path: string): string {\n return BY_EXT[extname(path).toLowerCase()] ?? 'application/octet-stream';\n}\n","import type { ProxySpec } from './types';\n\n/** Thrown when a proxy skill cannot forward the request (bad env, network). */\nexport class ProxyError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProxyError';\n }\n}\n\nexport interface ProxyInit {\n /** HTTP method of the incoming invocation. */\n method: string;\n /** Incoming request headers (for `forwardHeaders` and content-type). */\n headers: Headers | Record<string, string>;\n /** Request body to forward (a stream, string, or null). */\n body?: RequestInit['body'];\n /** Query string to append to the upstream URL, including the leading `?`. */\n query?: string;\n signal?: AbortSignal;\n /** Hard upstream timeout (ms); aborts the fetch, combined with `signal`. */\n timeoutMs?: number;\n}\n\n/** Combine an optional caller signal with an optional hard timeout. */\nfunction combineSignals(\n signal: AbortSignal | undefined,\n timeoutMs: number | undefined,\n): AbortSignal | undefined {\n const signals: AbortSignal[] = [];\n if (signal) {\n signals.push(signal);\n }\n if (timeoutMs && timeoutMs > 0) {\n signals.push(AbortSignal.timeout(timeoutMs));\n }\n if (signals.length === 0) {\n return undefined;\n }\n return signals.length === 1 ? signals[0] : AbortSignal.any(signals);\n}\n\n/**\n * Merge the incoming request's query string onto the manifest upstream URL.\n * String concatenation (`url + search`) corrupts a base URL that already carries\n * a query or fragment (`...?key=abc` + `?x=y` -> `...?key=abc?x=y`), so parse and\n * append params via the WHATWG URL API, which preserves the base query/fragment.\n */\nfunction buildUpstreamUrl(base: string, query: string | undefined): string {\n if (!query) {\n return base;\n }\n const url = new URL(base);\n const incoming = new URLSearchParams(query.startsWith('?') ? query.slice(1) : query);\n for (const [key, value] of incoming) {\n url.searchParams.append(key, value);\n }\n return url.toString();\n}\n\n/** Substitute `${VAR}` references with environment values; throw if unset. */\nfunction interpolateEnv(value: string, env: NodeJS.ProcessEnv): string {\n return value.replace(/\\$\\{([A-Z0-9_]+)\\}/g, (_match, name: string) => {\n const resolved = env[name];\n if (resolved === undefined) {\n throw new ProxyError(`environment variable ${name} (used in a proxy header) is not set`);\n }\n return resolved;\n });\n}\n\nfunction buildHeaders(spec: ProxySpec, incoming: Headers, env: NodeJS.ProcessEnv): Headers {\n const headers = new Headers();\n // Pass the incoming content-type through so the upstream parses the body.\n const contentType = incoming.get('content-type');\n if (contentType) {\n headers.set('content-type', contentType);\n }\n // Forward explicitly whitelisted incoming headers.\n for (const name of spec.forwardHeaders) {\n const value = incoming.get(name);\n if (value !== null) {\n headers.set(name, value);\n }\n }\n // Declared headers win and may inject secrets from the environment.\n for (const [key, raw] of Object.entries(spec.headers)) {\n headers.set(key, interpolateEnv(raw, env));\n }\n return headers;\n}\n\n/**\n * Forward a request to a `mode: proxy` skill's upstream and return the upstream\n * response (status, content-type, and body passed through - streaming intact).\n *\n * Declared headers are resolved against `env` at call time, so an API key lives\n * in the server's environment and is never exposed to the client.\n */\nexport async function proxyRequest(\n spec: ProxySpec,\n init: ProxyInit,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<Response> {\n const incoming = init.headers instanceof Headers ? init.headers : new Headers(init.headers);\n const headers = buildHeaders(spec, incoming, env);\n const method = spec.method ?? init.method;\n const url = buildUpstreamUrl(spec.url, init.query);\n\n const hasBody =\n method !== 'GET' && method !== 'HEAD' && init.body !== undefined && init.body !== null;\n const fetchInit: RequestInit & { duplex?: 'half' } = {\n method,\n headers,\n // Never auto-follow: a `${VAR}`-injected secret header (e.g. `x-api-key`)\n // is NOT stripped by fetch on a cross-origin redirect the way `Authorization`\n // is, so following the upstream's redirect would exfiltrate the key to a host\n // it chose. We hand any 3xx back to the client to follow without our secrets.\n redirect: 'manual',\n // Bound by the manifest timeout (like a kernel) so a hung upstream can't\n // pin the request - and its concurrency slot - until the socket idles out.\n signal: combineSignals(init.signal, init.timeoutMs),\n };\n if (hasBody) {\n fetchInit.body = init.body;\n // Required by undici when the body is a stream; harmless otherwise.\n fetchInit.duplex = 'half';\n }\n\n let upstream: Response;\n try {\n upstream = await fetch(url, fetchInit);\n } catch (err) {\n throw new ProxyError(\n `upstream request to ${spec.url} failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n\n // With `redirect: 'manual'` a runtime may surface a redirect as an opaque\n // response (type `opaqueredirect`, status 0). We cannot - and must not -\n // replay the injected secret headers to follow it, so refuse it explicitly.\n if (upstream.type === 'opaqueredirect' || upstream.status === 0) {\n throw new ProxyError(\n `upstream ${spec.url} returned a redirect, which husk does not follow ` +\n `(injected secret headers must not be replayed cross-origin)`,\n );\n }\n\n const outHeaders = new Headers();\n const upstreamType = upstream.headers.get('content-type');\n if (upstreamType) {\n outHeaders.set('content-type', upstreamType);\n }\n const disposition = upstream.headers.get('content-disposition');\n if (disposition) {\n outHeaders.set('content-disposition', disposition);\n }\n // Pass a visible 3xx's Location through so the client can follow it itself,\n // with its own credentials, never ours - but ONLY when it stays on the\n // upstream's own origin. An upstream that reflects client input into Location\n // (a login `?next=`/`return=` endpoint, an echo redirect) would otherwise turn\n // HUSK into an open redirect, lending its origin's trust to a phishing target.\n const location = upstream.headers.get('location');\n if (location) {\n try {\n if (new URL(location, spec.url).origin === new URL(spec.url).origin) {\n outHeaders.set('location', location);\n }\n } catch {\n // Malformed Location: drop it rather than relay something unparsable.\n }\n }\n return new Response(upstream.body, {\n status: upstream.status,\n statusText: upstream.statusText,\n headers: outHeaders,\n });\n}\n","import { realpathSync } from 'node:fs';\nimport { mkdir, mkdtemp, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { basename, dirname, isAbsolute, join, resolve, sep } from 'node:path';\nimport { runProcess, type RunOptions } from './executor';\nimport { runLlm } from './llm';\nimport { mimeFromPath } from './mime';\nimport { proxyRequest } from './proxy';\nimport type { InvokeInput, InvokeOptions, InvokeResult, OutputFile, Skill } from './types';\n\nconst NOOP_CLEANUP = async (): Promise<void> => {};\n\n/** Default cap on a buffered `mode: proxy` upstream response (100 MB). */\nconst DEFAULT_PROXY_MAX_BYTES = 100 * 1024 * 1024;\n\n/** Read a fetch Response body fully, aborting once it exceeds `max` bytes. */\nasync function readResponseCapped(res: Response, max: number): Promise<Uint8Array> {\n const body = res.body;\n if (!body) {\n const buf = new Uint8Array(await res.arrayBuffer());\n if (buf.byteLength > max) {\n throw new Error(`upstream response exceeds ${max} bytes`);\n }\n return buf;\n }\n const reader = body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n total += value.byteLength;\n if (total > max) {\n await reader.cancel().catch(() => {});\n throw new Error(`upstream response exceeds ${max} bytes`);\n }\n chunks.push(value);\n }\n if (chunks.length === 1) {\n return chunks[0];\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\n\n/** A human-readable explanation for a failed {@link InvokeResult}. */\nexport function kernelErrorMessage(result: InvokeResult): string {\n if (result.errorMessage) {\n return result.errorMessage;\n }\n if (result.spawnError) {\n return `failed to start kernel: ${result.spawnError}`;\n }\n if (result.timedOut) {\n return 'kernel timed out';\n }\n if (result.exitCode !== null) {\n return `kernel exited with code ${result.exitCode}`;\n }\n return 'kernel failed';\n}\n\n/** Resolve `cmd`/`args` from a skill's argv, expanding a local script path. */\nfunction resolveCommand(skill: Skill): { cmd: string; args: string[] } {\n const [first, ...rest] = skill.manifest.argv;\n const isLocal = first.startsWith('.') || first.startsWith('/') || first.includes('/');\n if (!isLocal) {\n return { cmd: first, args: rest };\n }\n const abs = isAbsolute(first) ? first : resolve(skill.dir, first);\n return { cmd: abs, args: rest };\n}\n\n/**\n * Real path of `p`, or - when `p` does not exist yet - the real path of its\n * nearest existing ancestor with the missing tail re-attached. Resolving the\n * ancestor catches a symlinked intermediate directory even when the final\n * component is absent.\n */\nfunction realpathWithTail(p: string): string {\n let current = p;\n const tail: string[] = [];\n for (;;) {\n try {\n const real = realpathSync(current);\n return tail.length === 0 ? real : join(real, ...tail.reverse());\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') {\n throw err;\n }\n const parent = dirname(current);\n if (parent === current) {\n return p;\n }\n tail.push(basename(current));\n current = parent;\n }\n }\n}\n\n/** Guard that a manifest-declared path stays inside the skill folder. */\nfunction resolveInside(skillDir: string, relPath: string): string {\n const abs = isAbsolute(relPath) ? relPath : resolve(skillDir, relPath);\n const root = resolve(skillDir);\n // Lexical pre-check rejects an obvious `../` escape before touching disk.\n if (abs !== root && !abs.startsWith(root + sep)) {\n throw new Error(`path \"${relPath}\" escapes the skill directory`);\n }\n // A lexical check alone is defeated by a symlink inside the skill folder whose\n // target is outside it (e.g. `serve: data.txt` where `data.txt -> /etc/passwd`):\n // stat()/readFile() follow symlinks, so resolve the real paths and re-check\n // containment - the same defense loader.ts's ensureExecutable applies.\n const realRoot = realpathWithTail(root);\n const realAbs = realpathWithTail(abs);\n if (realAbs !== realRoot && !realAbs.startsWith(realRoot + sep)) {\n throw new Error(`path \"${relPath}\" escapes the skill directory`);\n }\n return abs;\n}\n\n/** Serve a static file (no kernel process) - the `serve:` manifest path. */\nasync function invokeStaticFile(skill: Skill, startedAt: number): Promise<InvokeResult> {\n const filePath = resolveInside(skill.dir, skill.manifest.serveFile as string);\n const st = await stat(filePath).catch(() => null);\n if (!st || !st.isFile()) {\n return {\n ok: false,\n stdout: '',\n stderr: `serve file not found: ${skill.manifest.serveFile}`,\n exitCode: null,\n timedOut: false,\n spawnError: 'ENOENT',\n outputKind: skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n }\n\n if (skill.manifest.output === 'file') {\n const file: OutputFile = {\n path: filePath,\n mime: skill.manifest.outputMime ?? mimeFromPath(filePath),\n filename: basename(filePath),\n size: st.size,\n };\n return {\n ok: true,\n stdout: '',\n stderr: '',\n exitCode: 0,\n timedOut: false,\n outputKind: 'file',\n files: [file],\n durationMs: Date.now() - startedAt,\n // The served file lives in the skill dir; never delete it.\n cleanup: NOOP_CLEANUP,\n };\n }\n\n const content = await readFile(filePath, 'utf-8');\n return {\n ok: true,\n stdout: content,\n stderr: '',\n exitCode: 0,\n timedOut: false,\n outputKind: skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n}\n\n/** Collect non-empty files a kernel wrote to the output dir / output file. */\nasync function collectOutputFiles(\n outputDir: string,\n outputFile: string,\n outputMime: string | undefined,\n): Promise<OutputFile[]> {\n const files: OutputFile[] = [];\n\n const entries = await readdir(outputDir, { withFileTypes: true }).catch(() => []);\n for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n if (!entry.isFile()) {\n continue;\n }\n const path = join(outputDir, entry.name);\n const st = await stat(path).catch(() => null);\n if (st && st.size > 0) {\n files.push({\n path,\n mime: outputMime ?? mimeFromPath(entry.name),\n filename: entry.name,\n size: st.size,\n });\n }\n }\n if (files.length > 0) {\n return files;\n }\n\n const st = await stat(outputFile).catch(() => null);\n if (st && st.size > 0) {\n files.push({\n path: outputFile,\n mime: outputMime ?? 'application/octet-stream',\n filename: 'output',\n size: st.size,\n });\n }\n return files;\n}\n\n/** Run a `mode: llm` skill: the LLM answers, calling the declared tools. */\nasync function invokeLlm(\n skill: Skill,\n input: InvokeInput,\n options: InvokeOptions,\n startedAt: number,\n): Promise<InvokeResult> {\n const spec = skill.manifest.llm;\n const base = {\n files: [] as OutputFile[],\n outputKind: skill.manifest.output,\n cleanup: NOOP_CLEANUP,\n };\n if (!spec) {\n return {\n ok: false,\n stdout: '',\n stderr: 'internal: llm spec missing',\n exitCode: null,\n timedOut: false,\n errorMessage: 'internal: llm spec missing',\n durationMs: Date.now() - startedAt,\n ...base,\n };\n }\n try {\n const text = await runLlm({\n spec,\n systemPrompt: skill.doc,\n userInput: input.text ?? '',\n skillDir: skill.dir,\n toolTimeoutMs: skill.manifest.timeoutMs,\n signal: options.signal,\n env: { ...process.env, ...options.env },\n });\n if (options.onData && text) {\n options.onData({ stream: 'stdout', chunk: text });\n }\n return {\n ok: true,\n stdout: text,\n stderr: '',\n exitCode: 0,\n timedOut: false,\n durationMs: Date.now() - startedAt,\n ...base,\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n ok: false,\n stdout: '',\n stderr: message,\n exitCode: null,\n timedOut: false,\n errorMessage: message,\n durationMs: Date.now() - startedAt,\n ...base,\n };\n }\n}\n\n/** Run a `mode: proxy` skill (buffered) - forward to the upstream and capture it. */\nasync function invokeProxy(\n skill: Skill,\n input: InvokeInput,\n options: InvokeOptions,\n startedAt: number,\n): Promise<InvokeResult> {\n const spec = skill.manifest.proxy;\n if (!spec) {\n return {\n ok: false,\n stdout: '',\n stderr: 'internal: proxy spec missing',\n exitCode: null,\n timedOut: false,\n errorMessage: 'internal: proxy spec missing',\n outputKind: skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n }\n\n const text = input.text ?? '';\n const trimmed = text.trimStart();\n const contentType =\n trimmed.startsWith('{') || trimmed.startsWith('[') ? 'application/json' : 'text/plain';\n\n let res: Response;\n try {\n res = await proxyRequest(\n spec,\n {\n method: skill.manifest.method,\n headers: { 'content-type': contentType },\n body: text,\n signal: options.signal,\n timeoutMs: skill.manifest.timeoutMs,\n },\n { ...process.env, ...options.env },\n );\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n ok: false,\n stdout: '',\n stderr: message,\n exitCode: null,\n timedOut: false,\n errorMessage: message,\n outputKind: skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n }\n\n const upstreamType = res.headers.get('content-type') ?? '';\n const ok = res.ok;\n const upstreamError = ok ? undefined : `upstream returned HTTP ${res.status}`;\n const isText =\n upstreamType === '' ||\n /^(text\\/|application\\/(json|xml)|application\\/[\\w.+-]*\\+json)/.test(upstreamType);\n\n // Cap the buffered upstream read so a multi-GB body delivered within the skill\n // timeout cannot OOM the host - the same bound the request body, kernel output,\n // and SSE stream already enforce. (The HTTP server streams proxy responses and\n // never reaches here; this guards the CLI/library buffered path.)\n const maxBytes = options.maxOutputBytes ?? DEFAULT_PROXY_MAX_BYTES;\n let raw: Uint8Array;\n try {\n raw = await readResponseCapped(res, maxBytes);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n ok: false,\n stdout: '',\n stderr: message,\n exitCode: null,\n timedOut: false,\n errorMessage: message,\n outputKind: skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n }\n\n if (isText) {\n const body = new TextDecoder().decode(raw);\n return {\n ok,\n stdout: body,\n stderr: ok ? '' : body.slice(0, 8000),\n exitCode: ok ? 0 : null,\n timedOut: false,\n errorMessage: upstreamError,\n outputKind: /json/.test(upstreamType) ? 'json' : skill.manifest.output,\n files: [],\n durationMs: Date.now() - startedAt,\n cleanup: NOOP_CLEANUP,\n };\n }\n\n const bytes = raw;\n const workdir = await mkdtemp(join(tmpdir(), 'husk-proxy-'));\n const filePath = join(workdir, 'output');\n await writeFile(filePath, bytes);\n return {\n ok,\n stdout: '',\n stderr: '',\n exitCode: ok ? 0 : null,\n timedOut: false,\n errorMessage: upstreamError,\n outputKind: 'file',\n files: [{ path: filePath, mime: upstreamType, filename: 'output', size: bytes.length }],\n durationMs: Date.now() - startedAt,\n cleanup: async (): Promise<void> => {\n await rm(workdir, { recursive: true, force: true });\n },\n };\n}\n\n/**\n * Invoke a skill's kernel with the given input and return a structured result.\n *\n * I/O contract handed to the kernel:\n * - `text` input -> piped to stdin.\n * - `file` input -> staged at `HUSK_INPUT_FILE` (+ `ELISYM_INPUT_FILE` alias).\n * - `text`/`json` output -> read from stdout.\n * - `file` output -> kernel writes `HUSK_OUTPUT_FILE` (single) or files into\n * `HUSK_OUTPUT_DIR` (many). Aliased as `ELISYM_OUTPUT_*` for compatibility.\n *\n * The caller owns any staged input file; `result.cleanup()` removes only the\n * temp output workspace this call created. Always await `cleanup()`.\n */\nexport async function invokeSkill(\n skill: Skill,\n input: InvokeInput,\n options: InvokeOptions = {},\n): Promise<InvokeResult> {\n const startedAt = Date.now();\n\n if (skill.manifest.mode === 'llm') {\n return invokeLlm(skill, input, options, startedAt);\n }\n\n if (skill.manifest.mode === 'proxy') {\n return invokeProxy(skill, input, options, startedAt);\n }\n\n if (skill.manifest.mode === 'static-file' && skill.manifest.serveFile) {\n return invokeStaticFile(skill, startedAt);\n }\n\n const { cmd, args } = resolveCommand(skill);\n\n const env: NodeJS.ProcessEnv = { ...process.env, ...options.env };\n let workdir: string | undefined;\n let outputFile = '';\n let outputDir = '';\n\n if (input.file) {\n env.HUSK_INPUT_FILE = input.file.path;\n env.ELISYM_INPUT_FILE = input.file.path;\n if (input.file.mime) {\n env.HUSK_INPUT_MIME = input.file.mime;\n }\n if (input.file.filename) {\n // The upload filename is untrusted, client-controlled input. A kernel may\n // naively build an output path from it (e.g. `$HUSK_OUTPUT_DIR/$HUSK_INPUT_FILENAME`),\n // so collapse path separators and reject `.`/`..` to a single safe segment -\n // matching how the staged input path is sanitized in server.ts.\n const stripped = input.file.filename.replace(/[\\\\/]/g, '_').trim();\n env.HUSK_INPUT_FILENAME =\n stripped && stripped !== '.' && stripped !== '..' ? stripped : 'input';\n }\n }\n\n if (skill.manifest.output === 'file') {\n workdir = await mkdtemp(join(tmpdir(), 'husk-out-'));\n outputFile = join(workdir, 'output');\n outputDir = join(workdir, 'files');\n await mkdir(outputDir, { recursive: true });\n env.HUSK_OUTPUT_FILE = outputFile;\n env.HUSK_OUTPUT_DIR = outputDir;\n env.ELISYM_OUTPUT_FILE = outputFile;\n env.ELISYM_OUTPUT_DIR = outputDir;\n }\n\n const cleanup = workdir\n ? async (): Promise<void> => {\n await rm(workdir as string, { recursive: true, force: true });\n }\n : NOOP_CLEANUP;\n\n const runOpts: RunOptions = {\n cwd: skill.dir,\n stdin: skill.manifest.input === 'none' ? '' : (input.text ?? ''),\n signal: options.signal,\n timeoutMs: skill.manifest.timeoutMs,\n env,\n onData: options.onData,\n };\n\n const run = await runProcess(cmd, args, runOpts);\n\n const files =\n skill.manifest.output === 'file'\n ? await collectOutputFiles(outputDir, outputFile, skill.manifest.outputMime)\n : [];\n\n const ok = run.spawnError === undefined && run.code === 0;\n\n return {\n ok,\n stdout: run.stdout,\n stderr: run.stderr,\n exitCode: run.code,\n timedOut: run.timedOut,\n spawnError: run.spawnError?.message,\n outputKind: skill.manifest.output,\n files,\n durationMs: Date.now() - startedAt,\n cleanup,\n };\n}\n","import type { Skill } from './types';\n\n/** Minimal shape of the generated OpenAPI document (kept dependency-free). */\nexport type OpenApiDocument = Record<string, unknown>;\n\nexport interface OpenApiOptions {\n title?: string;\n version?: string;\n description?: string;\n /** Optional server base URL advertised in the spec. */\n serverUrl?: string;\n}\n\nfunction requestBodyFor(skill: Skill): Record<string, unknown> | undefined {\n const { input, inputMime } = skill.manifest;\n if (input === 'none') {\n return undefined;\n }\n if (input === 'file') {\n const content: Record<string, unknown> = {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n properties: {\n file: { type: 'string', format: 'binary', description: 'The input file.' },\n text: { type: 'string', description: 'Optional text sent alongside the file.' },\n },\n },\n },\n };\n // Also advertise the raw-body MIME, but never let it collide with the\n // structured multipart entry above: when input_mime is itself\n // `multipart/form-data`, a duplicate object key would silently drop the\n // documented file/text schema (last key wins).\n const rawMime = inputMime && inputMime !== 'none' ? inputMime : 'application/octet-stream';\n if (rawMime !== 'multipart/form-data') {\n content[rawMime] = { schema: { type: 'string', format: 'binary' } };\n }\n return { required: true, content };\n }\n return {\n required: true,\n content: {\n 'text/plain': { schema: { type: 'string' } },\n 'application/json': {\n schema: {\n type: 'object',\n properties: { input: { type: 'string' } },\n },\n },\n },\n };\n}\n\nfunction successResponseFor(skill: Skill): Record<string, unknown> {\n const { output, outputMime } = skill.manifest;\n if (output === 'file') {\n return {\n description: 'The file produced by the skill.',\n content: {\n [outputMime ?? 'application/octet-stream']: {\n schema: { type: 'string', format: 'binary' },\n },\n },\n };\n }\n if (output === 'json') {\n return {\n description: 'The skill result as JSON.',\n content: { 'application/json': { schema: {} } },\n };\n }\n return {\n description: 'The skill result as text.',\n content: { 'text/plain': { schema: { type: 'string' } } },\n };\n}\n\nconst ERROR_RESPONSE = {\n description: 'The skill failed or the request was invalid.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n stderr: { type: 'string' },\n exitCode: { type: 'integer', nullable: true },\n },\n },\n },\n },\n};\n\n/** Build an OpenAPI 3.1 document describing every skill's invoke endpoint. */\nexport function generateOpenApi(skills: Skill[], options: OpenApiOptions = {}): OpenApiDocument {\n const paths: Record<string, Record<string, unknown>> = {};\n\n for (const skill of skills) {\n const operation: Record<string, unknown> = {\n operationId: skill.slug,\n summary: skill.manifest.name,\n description: skill.manifest.description,\n tags: ['skills'],\n responses: {\n '200': successResponseFor(skill),\n '400': ERROR_RESPONSE,\n '500': ERROR_RESPONSE,\n },\n };\n const body = requestBodyFor(skill);\n if (body) {\n operation.requestBody = body;\n }\n const route = (paths[skill.manifest.route] ??= {});\n route[skill.manifest.method.toLowerCase()] = operation;\n }\n\n const doc: OpenApiDocument = {\n openapi: '3.1.0',\n info: {\n title: options.title ?? 'HUSK skills',\n version: options.version ?? '0.1.0',\n description: options.description ?? 'Agent skills served over HTTP by HUSK.',\n },\n paths,\n };\n if (options.serverUrl) {\n doc.servers = [{ url: options.serverUrl }];\n }\n return doc;\n}\n","import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { ReadableStream } from 'node:stream/web';\nimport { invokeSkill, kernelErrorMessage } from './invoke';\nimport { PROVIDER_ENV_VARS } from './llm';\nimport { generateOpenApi } from './openapi';\nimport { ProxyError, proxyRequest } from './proxy';\nimport type { HttpMethod, InvokeInput, InvokeResult, Skill, StreamEvent } from './types';\n\nexport interface HuskServerOptions {\n skills: Skill[];\n /** Service name shown on the index page and in OpenAPI. */\n serviceName?: string;\n version?: string;\n /**\n * Emit permissive CORS headers (`Access-Control-Allow-Origin: *`). Default\n * false - opt in only when a browser app on another origin must read\n * responses, since with no auth it lets any page do so.\n */\n cors?: boolean;\n /** Reject request bodies larger than this many bytes. Default 50 MB. */\n maxBodyBytes?: number;\n /**\n * Reject kernel file output larger than this many bytes - a single file, or\n * the total across a multi-file result. Bounds server memory the way the\n * stdout cap and request-body cap already do; file output is otherwise read\n * fully into memory (and base64-amplified for multi-file results). Default\n * 100 MB.\n */\n maxOutputBytes?: number;\n /**\n * Cap on total bytes forwarded over a single SSE (`text/event-stream`)\n * invocation. The streamed path has no executor-level cap and `enqueue` never\n * blocks, so a kernel that outpaces a slow client would grow the stream's\n * in-memory queue unbounded; past this cap the stream is truncated and the\n * kernel aborted. Defaults to `maxOutputBytes`. When exposing streaming skills,\n * also set a non-zero `concurrency` so many slow readers cannot each pin a\n * cap-sized buffer.\n */\n maxStreamBytes?: number;\n /** Max concurrent kernel invocations. 0 (default) means unlimited. */\n concurrency?: number;\n /**\n * If set, the request `Host` header's hostname must be one of these (port\n * ignored). Rejects others with 403. Defeats DNS rebinding against a\n * loopback bind - a page on evil.com that rebinds to 127.0.0.1 still sends\n * `Host: evil.com`. Leave unset when a gateway/proxy already fixes the Host.\n */\n allowedHosts?: string[];\n /**\n * Per-request gate. Return false to reject with 401. Runs before any kernel\n * is spawned. Use it for API keys, bearer tokens, etc.\n */\n auth?: (req: Request) => boolean | Promise<boolean>;\n}\n\n/** The public, JSON-safe description of a skill. */\nexport interface SkillCard {\n name: string;\n slug: string;\n description: string;\n mode: Skill['manifest']['mode'];\n method: HttpMethod;\n route: string;\n input: Skill['manifest']['input'];\n output: Skill['manifest']['output'];\n inputMime?: string;\n outputMime?: string;\n /** Names of the tools an LLM skill can call (omitted for non-LLM skills). */\n tools?: string[];\n doc: string;\n}\n\nexport type FetchHandler = (req: Request) => Promise<Response>;\n\nconst DEFAULT_MAX_BODY = 50 * 1024 * 1024;\nconst DEFAULT_MAX_OUTPUT = 100 * 1024 * 1024;\n\n/** Content types a browser will execute/render inline (XSS surface for reflected input). */\nconst RENDERABLE_TYPES = new Set(['text/html', 'application/xhtml+xml', 'image/svg+xml']);\n\nclass HttpError extends Error {\n constructor(\n readonly status: number,\n message: string,\n ) {\n super(message);\n }\n}\n\nfunction toCard(skill: Skill): SkillCard {\n const m = skill.manifest;\n return {\n name: m.name,\n slug: skill.slug,\n description: m.description,\n mode: m.mode,\n method: m.method,\n route: m.route,\n input: m.input,\n output: m.output,\n inputMime: m.inputMime,\n outputMime: m.outputMime,\n tools: m.llm ? m.llm.tools.map((t) => t.name) : undefined,\n doc: skill.doc,\n };\n}\n\ninterface Limiter {\n acquire: () => Promise<() => void>;\n}\n\nfunction createLimiter(max: number): Limiter {\n if (!max || max <= 0) {\n return { acquire: async () => () => {} };\n }\n let active = 0;\n const queue: Array<() => void> = [];\n const acquire = async (): Promise<() => void> => {\n if (active >= max) {\n // Wait for a releaser to hand us its slot. The slot is reserved for us at\n // hand-off (active is left unchanged), so we must NOT re-increment here -\n // doing the increment after this await is what would let a fresh acquire\n // slip into the gap and push the count above `max`.\n await new Promise<void>((resolve) => queue.push(resolve));\n } else {\n active += 1;\n }\n let released = false;\n return () => {\n if (released) {\n return;\n }\n released = true;\n const next = queue.shift();\n if (next) {\n // Hand our slot directly to the next waiter; `active` stays the same.\n next();\n } else {\n active -= 1;\n }\n };\n };\n return { acquire };\n}\n\nfunction corsHeaders(enabled: boolean): Record<string, string> {\n if (!enabled) {\n return {};\n }\n return {\n 'access-control-allow-origin': '*',\n 'access-control-allow-methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS',\n 'access-control-allow-headers': 'content-type, authorization',\n };\n}\n\nfunction json(body: unknown, status: number, cors: boolean): Response {\n return new Response(JSON.stringify(body, null, 2), {\n status,\n headers: {\n 'content-type': 'application/json; charset=utf-8',\n 'x-content-type-options': 'nosniff',\n ...corsHeaders(cors),\n },\n });\n}\n\n/** Escape a string for safe interpolation into HTML text/attribute context. */\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/** Extract the bare hostname from a `Host` header (strip the port; unwrap IPv6). */\nfunction hostName(hostHeader: string): string {\n const h = hostHeader.trim().toLowerCase();\n if (h.startsWith('[')) {\n const end = h.indexOf(']');\n return end === -1 ? h : h.slice(1, end);\n }\n const colon = h.indexOf(':');\n return colon === -1 ? h : h.slice(0, colon);\n}\n\n/** Collapse CR/LF (illegal in HTTP header values) to spaces; trim and cap. */\nfunction singleLineHeader(value: string, max: number): string {\n return value\n .replace(/[\\r\\n]+/g, ' ')\n .trim()\n .slice(0, max);\n}\n\nfunction indexHtml(serviceName: string, cards: SkillCard[]): string {\n const rows = cards\n .map(\n (c) =>\n `<tr><td><code>${escapeHtml(c.method)}</code></td><td><code>${escapeHtml(c.route)}</code></td>` +\n `<td><strong>${escapeHtml(c.name)}</strong><br><span>${escapeHtml(c.description)}</span></td>` +\n `<td>${escapeHtml(c.input)} → ${escapeHtml(c.output)}</td></tr>`,\n )\n .join('\\n');\n const title = escapeHtml(serviceName);\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>${title}</title>\n<style>\n body { font: 15px/1.5 system-ui, sans-serif; max-width: 920px; margin: 3rem auto; padding: 0 1rem; color: #111; }\n h1 { margin-bottom: 0.2rem; }\n p.sub { color: #666; margin-top: 0; }\n table { border-collapse: collapse; width: 100%; margin-top: 1.5rem; }\n td, th { text-align: left; padding: 0.6rem 0.5rem; border-bottom: 1px solid #eee; vertical-align: top; }\n code { background: #f5f5f5; padding: 0.1rem 0.35rem; border-radius: 4px; }\n span { color: #666; font-size: 0.92em; }\n a { color: #2b6cb0; }\n</style>\n</head>\n<body>\n<h1>${title}</h1>\n<p class=\"sub\">${cards.length} skill(s) served by HUSK ·\n <a href=\"/skills\">/skills</a> ·\n <a href=\"/openapi.json\">/openapi.json</a> ·\n <a href=\"/healthz\">/healthz</a>\n</p>\n<table>\n<thead><tr><th>Method</th><th>Route</th><th>Skill</th><th>I/O</th></tr></thead>\n<tbody>\n${rows}\n</tbody>\n</table>\n</body>\n</html>`;\n}\n\nfunction assertBodyWithinLimit(req: Request, max: number): void {\n const len = req.headers.get('content-length');\n if (len && Number(len) > max) {\n throw new HttpError(413, `request body exceeds ${max} bytes`);\n }\n}\n\n/**\n * Read the full request body, aborting once it exceeds `max` bytes. Unlike the\n * `content-length` check (which a chunked or header-spoofing client bypasses),\n * this counts the bytes actually delivered, so memory use is truly bounded.\n */\nasync function readBodyCapped(req: Request, max: number): Promise<Uint8Array> {\n const body = req.body;\n if (!body) {\n const buf = new Uint8Array(await req.arrayBuffer());\n if (buf.byteLength > max) {\n throw new HttpError(413, `request body exceeds ${max} bytes`);\n }\n return buf;\n }\n const reader = body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n total += value.byteLength;\n if (total > max) {\n await reader.cancel().catch(() => {});\n throw new HttpError(413, `request body exceeds ${max} bytes`);\n }\n chunks.push(value);\n }\n if (chunks.length === 1) {\n return chunks[0];\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\n\n/** Stage an uploaded blob to a temp dir; returns the file path and its dir. */\nasync function stageFile(\n bytes: ArrayBuffer | Uint8Array,\n filename: string,\n): Promise<{ path: string; dir: string }> {\n const dir = await mkdtemp(join(tmpdir(), 'husk-in-'));\n // Collapse separators, then reject `.`/`..`/empty to a safe segment: a bare\n // `.` or `..` has no separators to strip, so `join(dir, name)` would resolve to\n // the staging dir or its parent and make writeFile throw EISDIR - a 500 that\n // leaks the temp path. Mirrors the HUSK_INPUT_FILENAME guard in invoke.ts.\n const cleaned = filename.replace(/[\\\\/]/g, '_').trim();\n const safeName = cleaned && cleaned !== '.' && cleaned !== '..' ? cleaned : 'input';\n const path = join(dir, safeName);\n await writeFile(path, bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes));\n return { path, dir };\n}\n\n/** Parse an HTTP request into a skill {@link InvokeInput}. */\nasync function readInput(\n req: Request,\n skill: Skill,\n max: number,\n): Promise<{ input: InvokeInput; stagedDir?: string }> {\n if (skill.manifest.input === 'none') {\n return { input: {} };\n }\n\n if (req.method === 'GET') {\n const url = new URL(req.url);\n const text =\n url.searchParams.get('input') ??\n url.searchParams.get('q') ??\n url.searchParams.get('text') ??\n undefined;\n return { input: { text: text ?? undefined } };\n }\n\n assertBodyWithinLimit(req, max);\n const contentType = req.headers.get('content-type') ?? '';\n\n if (contentType.includes('multipart/form-data')) {\n // Buffer the multipart body through the byte cap before parsing, so a\n // chunked or content-length-spoofing upload cannot exhaust memory here the\n // way a direct `req.formData()` (unbounded) would.\n const form = await new Request(req.url, {\n method: 'POST',\n headers: { 'content-type': contentType },\n body: await readBodyCapped(req, max),\n }).formData();\n let file: InvokeInput['file'];\n let stagedDir: string | undefined;\n for (const [, value] of form.entries()) {\n if (typeof value !== 'string') {\n const blob = value as File;\n const staged = await stageFile(await blob.arrayBuffer(), blob.name || 'input');\n stagedDir = staged.dir;\n file = { path: staged.path, mime: blob.type || undefined, filename: blob.name || 'input' };\n break;\n }\n }\n const textField = form.get('text') ?? form.get('input') ?? form.get('prompt');\n const text = typeof textField === 'string' ? textField : undefined;\n return { input: { file, text }, stagedDir };\n }\n\n if (contentType.includes('application/json')) {\n const raw = new TextDecoder().decode(await readBodyCapped(req, max));\n let text = raw;\n try {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed === 'string') {\n text = parsed;\n } else if (\n parsed &&\n typeof parsed === 'object' &&\n typeof (parsed as Record<string, unknown>).input === 'string'\n ) {\n text = (parsed as Record<string, string>).input;\n }\n } catch {\n // Not valid JSON despite the header; fall back to the raw body as text.\n }\n return { input: { text } };\n }\n\n if (skill.manifest.input === 'file') {\n const bytes = await readBodyCapped(req, max);\n const staged = await stageFile(bytes, 'input');\n return {\n input: { file: { path: staged.path, mime: contentType || undefined } },\n stagedDir: staged.dir,\n };\n }\n\n const text = new TextDecoder().decode(await readBodyCapped(req, max));\n return { input: { text } };\n}\n\n/**\n * Redact known provider API-key values from any text echoed back to a client.\n * Error responses return the kernel's stderr, and a failing kernel that prints\n * its environment (a verbose traceback, `set -x`, a library that logs config)\n * could otherwise leak the provider key - the repo's #1 asset - in an HTTP error\n * body that, by default, reaches an unauthenticated client.\n */\nfunction scrubSecrets(text: string): string {\n let out = text;\n for (const name of PROVIDER_ENV_VARS) {\n const value = process.env[name];\n // Guard against redacting on a trivially short value that could match common\n // substrings; real provider keys are long.\n if (value && value.length >= 8) {\n out = out.split(value).join('[redacted]');\n }\n }\n return out;\n}\n\n/**\n * Longest provider-key value currently in the environment (0 if none). A\n * streamed scrubber must carry this many chars across chunk boundaries so a key\n * split between two stderr chunks is still redacted once the pieces rejoin.\n */\nfunction maxSecretLen(): number {\n let max = 0;\n for (const name of PROVIDER_ENV_VARS) {\n const value = process.env[name];\n if (value && value.length >= 8 && value.length > max) {\n max = value.length;\n }\n }\n return max;\n}\n\nfunction errorStatus(result: InvokeResult): number {\n if (result.timedOut) {\n return 504;\n }\n if (result.spawnError) {\n return 500;\n }\n return 500;\n}\n\nasync function buildResponse(\n result: InvokeResult,\n cors: boolean,\n maxOutput: number,\n trustedInline: boolean,\n): Promise<Response> {\n const base = {\n 'x-husk-duration-ms': String(result.durationMs),\n // Never let a browser MIME-sniff kernel output (which often reflects request\n // input) into active content - e.g. a text/plain body sniffed as HTML.\n 'x-content-type-options': 'nosniff',\n ...corsHeaders(cors),\n };\n\n if (!result.ok) {\n return json(\n {\n error: scrubSecrets(kernelErrorMessage(result)),\n stderr: scrubSecrets(result.stderr.slice(0, 8000)),\n exitCode: result.exitCode,\n },\n errorStatus(result),\n cors,\n );\n }\n\n if (result.outputKind === 'file') {\n if (result.files.length === 0) {\n return json(\n {\n error: 'skill produced no file output',\n stderr: scrubSecrets(result.stderr.slice(0, 8000)),\n },\n 500,\n cors,\n );\n }\n // Cap output the way stdout and the request body are capped: kernel file\n // output is read fully into memory below, so an unbounded (or input-scaled)\n // file would let a single request exhaust server memory.\n const totalBytes = result.files.reduce((sum, f) => sum + f.size, 0);\n if (totalBytes > maxOutput) {\n return json(\n { error: `output exceeds the ${maxOutput}-byte limit (${totalBytes} bytes)` },\n 413,\n cors,\n );\n }\n if (result.files.length === 1) {\n const file = result.files[0];\n const bytes = await readFile(file.path);\n const note = singleLineHeader(result.stdout, 1000);\n const filename = singleLineHeader(file.filename, 255).replace(/\"/g, \"'\");\n // Kernel/proxy file output can reflect request input. If its content-type\n // is one a browser renders as active content (HTML/SVG/XHTML), force a\n // download rather than inline rendering so reflected markup can't execute\n // script in our origin. Operator-authored static files (input-independent,\n // trusted) keep `inline`.\n const baseType = file.mime.split(';')[0].trim().toLowerCase();\n const disposition =\n !trustedInline && RENDERABLE_TYPES.has(baseType) ? 'attachment' : 'inline';\n return new Response(bytes, {\n status: 200,\n headers: {\n ...base,\n 'content-type': file.mime,\n 'content-disposition': `${disposition}; filename=\"${filename}\"`,\n ...(note ? { 'x-husk-note': note } : {}),\n },\n });\n }\n const files = await Promise.all(\n result.files.map(async (f) => ({\n filename: f.filename,\n mime: f.mime,\n size: f.size,\n dataBase64: (await readFile(f.path)).toString('base64'),\n })),\n );\n return json({ note: result.stdout.trim() || undefined, files }, 200, cors);\n }\n\n if (result.outputKind === 'json') {\n return new Response(result.stdout || '{}', {\n status: 200,\n headers: { ...base, 'content-type': 'application/json; charset=utf-8' },\n });\n }\n\n return new Response(result.stdout, {\n status: 200,\n headers: { ...base, 'content-type': 'text/plain; charset=utf-8' },\n });\n}\n\nfunction sseLine(event: string, data: string): string {\n // EventSource treats CR, LF, and CRLF as line terminators, so split on all\n // three: a bare `\\r` in kernel output (often echoed request input) would\n // otherwise let a chunk forge `event:`/`data:` fields inside one `data:` line.\n const payload = data\n .split(/\\r\\n|\\r|\\n/)\n .map((l) => `data: ${l}`)\n .join('\\n');\n return `event: ${event}\\n${payload}\\n\\n`;\n}\n\nfunction streamResponse(\n req: Request,\n skill: Skill,\n max: number,\n cors: boolean,\n limiter: Limiter,\n maxStream: number,\n): Response {\n const encoder = new TextEncoder();\n const stream = new ReadableStream<Uint8Array>({\n async start(controller) {\n let stagedDir: string | undefined;\n const ac = new AbortController();\n const onAbort = (): void => ac.abort();\n req.signal.addEventListener('abort', onAbort);\n // Streaming kernels count against the same concurrency cap as buffered\n // invocations, acquired before the body is read - so `Accept:\n // text/event-stream` cannot bypass the limit during ingestion either.\n const release = await limiter.acquire();\n try {\n const parsed = await readInput(req, skill, max);\n stagedDir = parsed.stagedDir;\n let closed = false;\n let streamed = 0;\n let stderrCarry = '';\n // Carry >= the longest provider key across stderr chunks so a key split\n // at a chunk boundary still gets redacted when the pieces rejoin.\n const holdback = Math.max(0, maxSecretLen() - 1);\n // Enqueue one SSE frame, enforcing the per-connection byte cap. `enqueue`\n // never blocks and no backpressure reaches the child, so a kernel that\n // outpaces a slow/stalled client would otherwise grow this stream's\n // internal queue without limit (the executor's 5 MB cap only bounds the\n // stored string, not forwarded chunks). Past the cap, send a truncation\n // marker, stop forwarding, and abort the kernel.\n const emit = (streamName: StreamEvent['stream'], text: string): void => {\n if (closed || text.length === 0) {\n return;\n }\n const frame = encoder.encode(sseLine(streamName, text));\n if (streamed + frame.byteLength > maxStream) {\n closed = true;\n controller.enqueue(\n encoder.encode(\n sseLine('error', `output exceeded the ${maxStream}-byte stream limit; truncated`),\n ),\n );\n ac.abort();\n return;\n }\n streamed += frame.byteLength;\n controller.enqueue(frame);\n };\n const onData = (event: StreamEvent): void => {\n if (closed) {\n return;\n }\n try {\n // stdout is product output, forwarded as-is. stderr is the diagnostic\n // stream - scrub provider keys from it (mirroring the buffered error\n // path) before forwarding, holding back a tail so a key spanning two\n // chunks is caught when they rejoin.\n if (event.stream !== 'stderr') {\n emit(event.stream, event.chunk);\n return;\n }\n const scrubbed = scrubSecrets(stderrCarry + event.chunk);\n if (scrubbed.length > holdback) {\n stderrCarry = scrubbed.slice(scrubbed.length - holdback);\n emit('stderr', scrubbed.slice(0, scrubbed.length - holdback));\n } else {\n stderrCarry = scrubbed;\n }\n } catch {\n // The SSE consumer is gone (client disconnected, stream cancelled).\n // This runs synchronously from the kernel's stdout `data` handler -\n // outside this function's try/catch - so an unguarded enqueue would\n // escape as an uncaught exception. Stop forwarding and abort the\n // kernel so it doesn't keep running with nowhere to send output.\n closed = true;\n ac.abort();\n }\n };\n const result = await invokeSkill(skill, parsed.input, { signal: ac.signal, onData });\n // Flush the held-back stderr tail (re-scrubbed for safety).\n if (stderrCarry) {\n emit('stderr', scrubSecrets(stderrCarry));\n stderrCarry = '';\n }\n await result.cleanup();\n controller.enqueue(\n encoder.encode(\n sseLine('done', JSON.stringify({ ok: result.ok, exitCode: result.exitCode })),\n ),\n );\n } catch (err) {\n controller.enqueue(\n encoder.encode(\n sseLine('error', scrubSecrets(err instanceof Error ? err.message : String(err))),\n ),\n );\n } finally {\n release();\n req.signal.removeEventListener('abort', onAbort);\n if (stagedDir) {\n await rm(stagedDir, { recursive: true, force: true });\n }\n controller.close();\n }\n },\n });\n return new Response(stream, {\n status: 200,\n headers: {\n 'content-type': 'text/event-stream; charset=utf-8',\n 'cache-control': 'no-cache, no-transform',\n 'x-content-type-options': 'nosniff',\n connection: 'keep-alive',\n ...corsHeaders(cors),\n },\n });\n}\n\n/**\n * Build a Web-standard `fetch` handler that serves a set of skills over HTTP.\n *\n * The returned function maps a {@link Request} to a {@link Response}, so it runs\n * unchanged under `Bun.serve`, Deno, Cloudflare Workers, or a Node adapter -\n * which is what lets the same skill folder run as a long-lived server, a\n * container, or a serverless function with no redesign.\n *\n * Endpoints:\n * - `GET /` HTML index of skills\n * - `GET /skills` JSON array of skill cards\n * - `GET /skills/:slug` one skill card\n * - `GET /openapi.json` generated OpenAPI 3.1 spec\n * - `GET /healthz` liveness probe\n * - `<method> <route>` invoke a skill (`Accept: text/event-stream` to stream)\n */\nexport function createFetchHandler(options: HuskServerOptions): FetchHandler {\n const skills = options.skills;\n const cors = options.cors ?? false;\n const maxBody = options.maxBodyBytes ?? DEFAULT_MAX_BODY;\n const maxOutput = options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT;\n const maxStream = options.maxStreamBytes ?? maxOutput;\n const serviceName = options.serviceName ?? 'HUSK skills';\n const version = options.version ?? '0.1.0';\n const allowedHosts = options.allowedHosts?.map((h) => h.toLowerCase());\n const limiter = createLimiter(options.concurrency ?? 0);\n\n const cards = skills.map(toCard);\n const bySlug = new Map<string, Skill>();\n const invokeRoutes = new Map<string, Skill>();\n const cardRoutes = new Map<string, Skill>();\n const knownPaths = new Set<string>(['/', '/skills', '/openapi.json', '/healthz']);\n\n for (const skill of skills) {\n bySlug.set(skill.slug, skill);\n const canonical = `/skills/${skill.slug}`;\n cardRoutes.set(canonical, skill);\n invokeRoutes.set(`${skill.manifest.method} ${skill.manifest.route}`, skill);\n knownPaths.add(canonical);\n knownPaths.add(skill.manifest.route);\n if (skill.manifest.route !== canonical) {\n cardRoutes.set(skill.manifest.route, skill);\n }\n }\n\n async function invoke(req: Request, skill: Skill): Promise<Response> {\n const url = new URL(req.url);\n\n // Proxy skills forward the live request and stream the upstream response\n // straight through - no buffering, so SSE and large bodies pass intact.\n if (skill.manifest.mode === 'proxy' && skill.manifest.proxy) {\n assertBodyWithinLimit(req, maxBody);\n // Count proxy invocations against the same `concurrency` cap as kernels -\n // proxy spends the operator's injected ${VAR} key and holds a long-lived\n // upstream connection, so it must not be able to fan out without limit.\n // The slot is held for the FULL streamed lifetime (released on the body's\n // close, error, or client cancel), not just until the headers arrive.\n const release = await limiter.acquire();\n let released = false;\n const releaseOnce = (): void => {\n if (!released) {\n released = true;\n release();\n }\n };\n const start = Date.now();\n let upstream: Response;\n try {\n upstream = await proxyRequest(skill.manifest.proxy, {\n method: req.method,\n headers: req.headers,\n body: req.body,\n query: url.search,\n signal: req.signal,\n timeoutMs: skill.manifest.timeoutMs,\n });\n } catch (err) {\n releaseOnce();\n const status = err instanceof ProxyError ? 502 : 500;\n return json(\n { error: scrubSecrets(err instanceof Error ? err.message : String(err)) },\n status,\n cors,\n );\n }\n const headers = new Headers(upstream.headers);\n for (const [key, value] of Object.entries(corsHeaders(cors))) {\n headers.set(key, value);\n }\n headers.set('x-husk-duration-ms', String(Date.now() - start));\n // Mirror every other response path: forbid MIME-sniffing the proxied body.\n // The proxy forwards the live client query/body upstream, so an upstream\n // that reflects that input in a sniffable response must not be rendered as\n // active content in our origin.\n headers.set('x-content-type-options', 'nosniff');\n // nosniff does not stop a browser rendering an explicit text/html or SVG\n // body. Proxied bodies reflect client input and are never operator-authored\n // static files, so force a download for renderable types - the same defense\n // buildResponse applies to kernel file output.\n const proxyType = (upstream.headers.get('content-type') ?? '')\n .split(';')[0]\n .trim()\n .toLowerCase();\n if (RENDERABLE_TYPES.has(proxyType)) {\n headers.set('content-disposition', 'attachment');\n }\n if (!upstream.body) {\n releaseOnce();\n return new Response(null, {\n status: upstream.status,\n statusText: upstream.statusText,\n headers,\n });\n }\n // Forward the upstream body while holding the slot until the stream ends.\n const reader = upstream.body.getReader();\n const monitored = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n releaseOnce();\n controller.close();\n return;\n }\n controller.enqueue(value);\n } catch (err) {\n releaseOnce();\n controller.error(err);\n }\n },\n cancel(reason) {\n releaseOnce();\n return reader.cancel(reason);\n },\n });\n return new Response(monitored, {\n status: upstream.status,\n statusText: upstream.statusText,\n headers,\n });\n }\n\n const wantsStream =\n skill.manifest.output !== 'file' &&\n (url.searchParams.get('stream') === '1' ||\n (req.headers.get('accept') ?? '').includes('text/event-stream'));\n if (wantsStream) {\n return streamResponse(req, skill, maxBody, cors, limiter, maxStream);\n }\n\n // Acquire the concurrency slot BEFORE reading/buffering the body, so body\n // ingestion is bounded by the same cap as kernel execution - otherwise an\n // attacker could open unlimited concurrent uploads the `concurrency` knob\n // never gated.\n const release = await limiter.acquire();\n try {\n const { input, stagedDir } = await readInput(req, skill, maxBody);\n try {\n const ac = new AbortController();\n const onAbort = (): void => ac.abort();\n req.signal.addEventListener('abort', onAbort);\n let result: InvokeResult;\n try {\n result = await invokeSkill(skill, input, { signal: ac.signal });\n } finally {\n req.signal.removeEventListener('abort', onAbort);\n }\n try {\n return await buildResponse(\n result,\n cors,\n maxOutput,\n skill.manifest.mode === 'static-file',\n );\n } finally {\n await result.cleanup();\n }\n } finally {\n if (stagedDir) {\n await rm(stagedDir, { recursive: true, force: true });\n }\n }\n } finally {\n release();\n }\n }\n\n return async function handler(req: Request): Promise<Response> {\n try {\n // Reject mismatched Host first (DNS-rebinding defense), before CORS\n // preflight or any routing - a rebound attacker host never gets served.\n if (allowedHosts && !allowedHosts.includes(hostName(req.headers.get('host') ?? ''))) {\n return json({ error: 'host not allowed' }, 403, cors);\n }\n\n if (req.method === 'OPTIONS') {\n return new Response(null, { status: 204, headers: corsHeaders(cors) });\n }\n\n if (options.auth) {\n const ok = await options.auth(req);\n if (!ok) {\n return json({ error: 'unauthorized' }, 401, cors);\n }\n }\n\n const url = new URL(req.url);\n let path = url.pathname;\n if (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n const method = req.method;\n\n // Invoke routes take precedence (so a GET-invoke skill still works).\n const invokeSkillForRoute = invokeRoutes.get(`${method} ${path}`);\n if (invokeSkillForRoute) {\n return await invoke(req, invokeSkillForRoute);\n }\n\n if (method === 'GET') {\n if (path === '/') {\n return new Response(indexHtml(serviceName, cards), {\n status: 200,\n headers: {\n 'content-type': 'text/html; charset=utf-8',\n 'x-content-type-options': 'nosniff',\n ...corsHeaders(cors),\n },\n });\n }\n if (path === '/healthz') {\n return json({ status: 'ok', skills: skills.length }, 200, cors);\n }\n if (path === '/skills') {\n return json(cards, 200, cors);\n }\n if (path === '/openapi.json') {\n return json(generateOpenApi(skills, { title: serviceName, version }), 200, cors);\n }\n const card = cardRoutes.get(path);\n if (card) {\n return json(toCard(card), 200, cors);\n }\n }\n\n if (knownPaths.has(path)) {\n return json({ error: `method ${method} not allowed for ${path}` }, 405, cors);\n }\n return json({ error: `not found: ${path}` }, 404, cors);\n } catch (err) {\n if (err instanceof HttpError) {\n return json({ error: err.message }, err.status, cors);\n }\n return json(\n { error: scrubSecrets(err instanceof Error ? err.message : String(err)) },\n 500,\n cors,\n );\n }\n };\n}\n\nexport { toCard };\n","import { toSlug } from '@elisym/husk-core';\n\nexport type Lang = 'bash' | 'python' | 'ts';\n\nexport interface ScaffoldFile {\n /** Path relative to the skill folder. */\n path: string;\n content: string;\n /** Mark the file executable (kernel scripts). */\n executable?: boolean;\n}\n\nexport interface Scaffold {\n slug: string;\n files: ScaffoldFile[];\n}\n\n/**\n * Render a string as a YAML double-quoted scalar. Without this, a `name`\n * containing a newline (or `:`/`#`/quote) would inject arbitrary frontmatter\n * keys - e.g. an attacker-chosen `run:` - into the scaffolded SKILL.md.\n */\nfunction yamlString(value: string): string {\n const escaped = value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\t/g, '\\\\t');\n return `\"${escaped}\"`;\n}\n\nconst DOC = (name: string): string =>\n [\n '',\n `# ${name}`,\n '',\n 'This is the human- and agent-facing documentation for the skill (it is also',\n 'a valid Agent Skill body). The kernel reads the request from **stdin** and',\n 'writes its result to **stdout**.',\n '',\n ].join('\\n');\n\nfunction bashSkill(name: string, slug: string): Scaffold {\n return {\n slug,\n files: [\n {\n path: 'SKILL.md',\n content:\n [\n '---',\n `name: ${yamlString(name)}`,\n 'description: Echo back the text you send, in bash.',\n 'run: ./run.sh',\n 'input: text',\n 'output: text',\n 'timeout_ms: 30000',\n '---',\n ].join('\\n') + DOC(name),\n },\n {\n path: 'run.sh',\n executable: true,\n content: [\n '#!/usr/bin/env bash',\n 'set -euo pipefail',\n 'input=\"$(cat)\"',\n 'echo \"you said: ${input}\"',\n '',\n ].join('\\n'),\n },\n ],\n };\n}\n\nfunction pythonSkill(name: string, slug: string): Scaffold {\n return {\n slug,\n files: [\n {\n path: 'SKILL.md',\n content:\n [\n '---',\n `name: ${yamlString(name)}`,\n 'description: Echo back the text you send, in Python.',\n 'run: python3 run.py',\n 'input: text',\n 'output: text',\n 'timeout_ms: 30000',\n '---',\n ].join('\\n') + DOC(name),\n },\n {\n path: 'run.py',\n content: [\n '#!/usr/bin/env python3',\n 'import sys',\n '',\n 'data = sys.stdin.read()',\n 'print(f\"you said: {data}\")',\n '',\n ].join('\\n'),\n },\n ],\n };\n}\n\nfunction tsSkill(name: string, slug: string): Scaffold {\n return {\n slug,\n files: [\n {\n path: 'SKILL.md',\n content:\n [\n '---',\n `name: ${yamlString(name)}`,\n 'description: Echo back the text you send, in TypeScript on Bun.',\n 'run: ./run.ts',\n 'input: text',\n 'output: text',\n 'timeout_ms: 30000',\n '---',\n ].join('\\n') + DOC(name),\n },\n {\n path: 'run.ts',\n executable: true,\n content: [\n '#!/usr/bin/env bun',\n 'const input = await Bun.stdin.text();',\n 'process.stdout.write(`you said: ${input}`);',\n '',\n ].join('\\n'),\n },\n ],\n };\n}\n\n/** Build the files for a new skill folder in the requested language. */\nexport function scaffoldSkill(name: string, lang: Lang): Scaffold {\n const slug = toSlug(name);\n switch (lang) {\n case 'python':\n return pythonSkill(name, slug);\n case 'ts':\n return tsSkill(name, slug);\n case 'bash':\n default:\n return bashSkill(name, slug);\n }\n}\n\n/** The Dockerfile emitted by `husk build --docker`. */\nexport function dockerfile(skillsDir: string, port: number): string {\n return [\n '# Generated by `husk build --docker`',\n 'FROM oven/bun:1',\n 'WORKDIR /app',\n '',\n '# Install the HUSK CLI globally.',\n 'RUN bun add -g @elisym/husk',\n '',\n '# If your kernels need other runtimes (python3, ffmpeg, ...), install them here:',\n '# RUN apt-get update && apt-get install -y python3 && rm -rf /var/lib/apt/lists/*',\n '',\n `COPY ${skillsDir} ./${skillsDir}`,\n '',\n `ENV HUSK_PORT=${port}`,\n `EXPOSE ${port}`,\n `CMD [\"husk\", \"serve\", \"${skillsDir}\", \"--host\", \"0.0.0.0\", \"--port\", \"${port}\"]`,\n '',\n ].join('\\n');\n}\n\nexport const DOCKERIGNORE = ['node_modules', 'dist', '.git', '.DS_Store', '*.log', ''].join('\\n');\n","import { existsSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { loadSkills, type LoadResult } from '@elisym/husk-core';\nimport chalk from 'chalk';\n\n/** Resolve the skills directory: an explicit arg, else `./skills`, else `.`. */\nexport function resolveSkillsDir(arg?: string): string {\n if (arg) {\n return resolve(arg);\n }\n if (existsSync(resolve('skills'))) {\n return resolve('skills');\n }\n return resolve('.');\n}\n\n/** Load skills, printing a warning for each skipped folder. */\nexport function loadOrReport(dir: string): LoadResult {\n let result: LoadResult;\n try {\n result = loadSkills(dir);\n } catch (err) {\n console.error(chalk.red(`error: ${err instanceof Error ? err.message : String(err)}`));\n process.exit(1);\n }\n for (const e of result.errors) {\n console.error(chalk.yellow(`! skipped ${e.dir}: ${e.message}`));\n }\n return result;\n}\n\nexport function fail(message: string): never {\n console.error(chalk.red(`error: ${message}`));\n process.exit(1);\n}\n\n/** Parse a `--port`/`$HUSK_PORT` value strictly so a typo can't slip through. */\nexport function parsePort(value: string | undefined): number {\n if (value === undefined || value === '') {\n return 3000;\n }\n const n = Number(value);\n if (!Number.isInteger(n) || n < 1 || n > 65535) {\n fail(`port must be an integer 1-65535 (got \"${value}\")`);\n }\n return n;\n}\n","import { existsSync, writeFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport chalk from 'chalk';\nimport { DOCKERIGNORE, dockerfile } from '../templates';\nimport { fail, parsePort } from '../util';\n\n/**\n * The skills dir is interpolated raw into `COPY`/`CMD` lines, so a value with a\n * space, quote, or control char would emit a broken Dockerfile (COPY would read\n * it as multiple args, a quote would break the JSON-exec CMD). Restrict it to a\n * plain relative path and fail loudly otherwise.\n */\nconst SAFE_SKILLS_DIR = /^[A-Za-z0-9._/-]+$/;\n\nexport interface BuildOptions {\n docker?: boolean;\n port?: string;\n force?: boolean;\n}\n\nexport function buildCommand(dirArg: string | undefined, opts: BuildOptions): void {\n if (!opts.docker) {\n fail('nothing to build - pass --docker to generate a Dockerfile');\n }\n\n const skillsDir = dirArg ?? 'skills';\n if (!SAFE_SKILLS_DIR.test(skillsDir)) {\n fail(\n `skills directory \"${skillsDir}\" can't be safely written into a Dockerfile; ` +\n 'use a relative path of letters, digits, dots, dashes, underscores, and slashes',\n );\n }\n const port = parsePort(opts.port);\n const dockerfilePath = resolve('Dockerfile');\n\n if (existsSync(dockerfilePath) && !opts.force) {\n fail('Dockerfile already exists; re-run with --force to overwrite');\n }\n\n writeFileSync(dockerfilePath, dockerfile(skillsDir, port));\n\n const ignorePath = resolve('.dockerignore');\n if (!existsSync(ignorePath)) {\n writeFileSync(ignorePath, DOCKERIGNORE);\n }\n\n console.log(\n chalk.green('\\n✓ wrote Dockerfile' + (existsSync(ignorePath) ? ' and .dockerignore' : '')),\n );\n console.log('\\n build & run:');\n console.log(` ${chalk.cyan('docker build -t my-skills .')}`);\n console.log(` ${chalk.cyan(`docker run -p ${port}:${port} my-skills`)}\\n`);\n}\n","import { readFileSync } from 'node:fs';\nimport { copyFile } from 'node:fs/promises';\nimport { basename, join, resolve } from 'node:path';\nimport { text as streamToText } from 'node:stream/consumers';\nimport {\n invokeSkill,\n kernelErrorMessage,\n toSlug,\n type InvokeInput,\n type Skill,\n} from '@elisym/husk-core';\nimport chalk from 'chalk';\nimport { fail, loadOrReport, resolveSkillsDir } from '../util';\n\nexport interface CallOptions {\n input?: string;\n file?: string;\n dir?: string;\n out?: string;\n}\n\nasync function readStdin(): Promise<string> {\n if (process.stdin.isTTY) {\n return '';\n }\n return streamToText(process.stdin);\n}\n\n/** Resolve the `-i/--input` value: `-` is stdin, `@file` reads a file, else literal. */\nasync function resolveText(input: string | undefined): Promise<string | undefined> {\n if (input === undefined) {\n return undefined;\n }\n if (input === '-') {\n return readStdin();\n }\n if (input.startsWith('@')) {\n return readFileSync(input.slice(1), 'utf-8');\n }\n return input;\n}\n\nexport async function callCommand(name: string, opts: CallOptions): Promise<void> {\n const dir = resolveSkillsDir(opts.dir);\n const { skills } = loadOrReport(dir);\n const slug = toSlug(name);\n const skill: Skill | undefined = skills.find((s) => s.slug === slug || s.slug === name);\n if (!skill) {\n fail(\n `no skill named \"${name}\" in ${dir} (have: ${skills.map((s) => s.slug).join(', ') || 'none'})`,\n );\n }\n\n const input: InvokeInput = {};\n if (skill.manifest.input === 'file') {\n if (!opts.file) {\n fail(`skill \"${skill.slug}\" needs a file input; pass --file <path>`);\n }\n input.file = { path: resolve(opts.file), filename: basename(opts.file) };\n input.text = await resolveText(opts.input);\n } else if (skill.manifest.input === 'text') {\n input.text = (await resolveText(opts.input)) ?? (await readStdin());\n }\n\n const result = await invokeSkill(skill, input);\n // Capture failure rather than exiting inside the try: `fail()` calls\n // process.exit, which would skip the `finally` and leak the temp output dir.\n let failMessage: string | undefined;\n try {\n if (!result.ok) {\n process.stderr.write(result.stderr);\n failMessage = kernelErrorMessage(result);\n } else if (result.outputKind === 'file') {\n const outDir = opts.out ? resolve(opts.out) : process.cwd();\n const written: string[] = [];\n for (const file of result.files) {\n const dest = join(outDir, file.filename);\n await copyFile(file.path, dest);\n written.push(dest);\n }\n if (result.stdout.trim()) {\n process.stderr.write(`${chalk.dim(result.stdout.trim())}\\n`);\n }\n process.stderr.write(chalk.green(`wrote ${written.length} file(s):\\n`));\n for (const w of written) {\n process.stderr.write(` ${w}\\n`);\n }\n } else {\n process.stdout.write(result.stdout);\n }\n } finally {\n await result.cleanup();\n }\n if (failMessage) {\n fail(failMessage);\n }\n}\n","import { chmodSync, constants, existsSync, mkdirSync, statSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\nimport chalk from 'chalk';\nimport { scaffoldSkill } from '../templates';\n\nexport interface InitOptions {\n dir?: string;\n}\n\n/** Create a `skills/` folder with a starter \"hello\" skill, ready to serve. */\nexport function initCommand(dirArg: string | undefined, opts: InitOptions): void {\n const root = resolve(dirArg ?? opts.dir ?? '.');\n const skillsDir = join(root, 'skills');\n mkdirSync(skillsDir, { recursive: true });\n\n const scaffold = scaffoldSkill('hello', 'bash');\n const skillDir = join(skillsDir, scaffold.slug);\n if (existsSync(skillDir)) {\n console.log(chalk.yellow(`skills/${scaffold.slug} already exists - leaving it untouched`));\n } else {\n mkdirSync(skillDir, { recursive: true });\n for (const file of scaffold.files) {\n const dest = join(skillDir, file.path);\n mkdirSync(dirname(dest), { recursive: true });\n writeFileSync(dest, file.content);\n if (file.executable) {\n chmodSync(dest, statSync(dest).mode | constants.S_IXUSR | constants.S_IXGRP);\n }\n }\n }\n\n console.log(chalk.green(`\\n✓ HUSK project ready in ${root}\\n`));\n console.log(' next:');\n console.log(` ${chalk.cyan('husk serve')} # serve ./skills over HTTP`);\n console.log(` ${chalk.cyan('husk new my-skill')} # scaffold another skill`);\n console.log(` ${chalk.cyan('husk list')} # list discovered skills\\n`);\n}\n","import { toCard } from '@elisym/husk-core';\nimport chalk from 'chalk';\nimport { loadOrReport, resolveSkillsDir } from '../util';\n\nexport interface ListOptions {\n json?: boolean;\n}\n\nexport function listCommand(dirArg: string | undefined, opts: ListOptions): void {\n const dir = resolveSkillsDir(dirArg);\n const { skills } = loadOrReport(dir);\n\n if (opts.json) {\n console.log(JSON.stringify(skills.map(toCard), null, 2));\n return;\n }\n\n if (skills.length === 0) {\n console.log(chalk.yellow(`no skills found in ${dir}`));\n return;\n }\n\n console.log(chalk.bold(`\\n${skills.length} skill(s) in ${dir}\\n`));\n for (const s of skills) {\n console.log(\n ` ${chalk.green(s.manifest.method.padEnd(6))} ${chalk.cyan(s.manifest.route.padEnd(28))} ${chalk.bold(s.manifest.name)}`,\n );\n console.log(\n ` ${chalk.dim(`${s.manifest.input} → ${s.manifest.output} · ${s.manifest.description}`)}`,\n );\n }\n console.log('');\n}\n","import { chmodSync, constants, existsSync, mkdirSync, statSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve, sep } from 'node:path';\nimport { stripControlChars } from '@elisym/husk-core';\nimport chalk from 'chalk';\nimport { scaffoldSkill, type Lang } from '../templates';\nimport { fail } from '../util';\n\nconst LANGS: readonly Lang[] = ['bash', 'python', 'ts'];\n\nexport interface NewOptions {\n lang?: string;\n dir?: string;\n}\n\nexport function newCommand(name: string, opts: NewOptions): void {\n const lang = (opts.lang ?? 'bash') as Lang;\n if (!LANGS.includes(lang)) {\n fail(`unknown --lang \"${opts.lang}\" (choose one of: ${LANGS.join(', ')})`);\n }\n\n if (name !== stripControlChars(name)) {\n fail('skill name must not contain control characters or newlines');\n }\n\n const scaffold = scaffoldSkill(name, lang);\n if (!scaffold.slug) {\n fail('skill name must contain at least one letter or digit');\n }\n\n const baseDir = resolve(opts.dir ?? 'skills');\n const skillDir = join(baseDir, scaffold.slug);\n // With a non-empty slug (a-z0-9- only) this always holds; assert it so a\n // future slug change can never write into or above the skills root.\n if (!skillDir.startsWith(baseDir + sep)) {\n fail(`refusing to scaffold \"${scaffold.slug}\" outside ${baseDir}`);\n }\n\n if (existsSync(skillDir)) {\n fail(`${skillDir} already exists`);\n }\n mkdirSync(skillDir, { recursive: true });\n\n for (const file of scaffold.files) {\n const dest = join(skillDir, file.path);\n mkdirSync(dirname(dest), { recursive: true });\n writeFileSync(dest, file.content);\n if (file.executable) {\n chmodSync(dest, statSync(dest).mode | constants.S_IXUSR | constants.S_IXGRP);\n }\n }\n\n console.log(chalk.green(`\\n✓ created skill \"${scaffold.slug}\" (${lang}) in ${skillDir}\\n`));\n console.log(' next:');\n console.log(` ${chalk.cyan(`husk serve ${baseDir}`)}`);\n console.log(` ${chalk.cyan(`husk call ${scaffold.slug} -i \"hello\" --dir ${baseDir}`)}\\n`);\n}\n","import { watch } from 'node:fs';\nimport { createFetchHandler, loadSkills, type FetchHandler, type Skill } from '@elisym/husk-core';\nimport chalk from 'chalk';\nimport { fail, loadOrReport, parsePort, resolveSkillsDir } from '../util';\n\nexport interface ServeOptions {\n port?: string;\n host?: string;\n watch?: boolean;\n cors?: boolean;\n concurrency?: string;\n name?: string;\n}\n\n/** Max request body, enforced both by the handler and by Bun at the socket. */\nconst MAX_BODY_BYTES = 50 * 1024 * 1024;\n\n/** Hostnames accepted when bound to loopback (anti-DNS-rebinding allowlist). */\nconst LOOPBACK_HOSTS = ['localhost', '127.0.0.1', '::1'];\n\n/** The effective bind host and whether it is loopback. Defaults to loopback. */\nfunction effectiveHost(opts: ServeOptions): { host: string; isLoopback: boolean } {\n const host = opts.host ?? '127.0.0.1';\n return {\n host,\n isLoopback: host === '127.0.0.1' || host === 'localhost' || host === '::1',\n };\n}\n\n/** Parse `--concurrency` strictly so a typo can't silently disable the limiter. */\nfunction parseConcurrency(value: string | undefined): number {\n if (value === undefined) {\n return 0;\n }\n const n = Number(value);\n if (!Number.isInteger(n) || n < 0) {\n fail(`--concurrency must be a non-negative integer (got \"${value}\")`);\n }\n return n;\n}\n\nfunction buildHandler(\n skills: Skill[],\n opts: ServeOptions,\n): { handler: FetchHandler; skills: Skill[] } {\n const { isLoopback } = effectiveHost(opts);\n const handler = createFetchHandler({\n skills,\n serviceName: opts.name,\n // CORS is OFF by default for the CLI (opt in with `--cors`): the server has\n // no auth and binds loopback, so permissive CORS would let any page the\n // operator visits read skill responses cross-origin.\n cors: opts.cors === true,\n concurrency: parseConcurrency(opts.concurrency),\n maxBodyBytes: MAX_BODY_BYTES,\n // On a loopback bind, pin the Host header so DNS rebinding can't reach us.\n allowedHosts: isLoopback ? LOOPBACK_HOSTS : undefined,\n });\n return { handler, skills };\n}\n\nfunction build(dir: string, opts: ServeOptions): { handler: FetchHandler; skills: Skill[] } {\n // Initial load: a bad skills dir should fail loudly and exit.\n const { skills } = loadOrReport(dir);\n return buildHandler(skills, opts);\n}\n\nfunction printSkills(skills: Skill[]): void {\n if (skills.length === 0) {\n console.log(chalk.yellow(' (no skills found)'));\n return;\n }\n for (const s of skills) {\n console.log(\n ` ${chalk.green(s.manifest.method.padEnd(6))} ${chalk.cyan(s.manifest.route.padEnd(28))} ${s.manifest.name}`,\n );\n }\n}\n\nfunction debounce(fn: () => void, ms: number): () => void {\n let timer: ReturnType<typeof setTimeout> | undefined;\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(fn, ms);\n };\n}\n\nexport function serveCommand(dirArg: string | undefined, opts: ServeOptions): void {\n const dir = resolveSkillsDir(dirArg);\n const port = parsePort(opts.port ?? process.env.HUSK_PORT);\n // Default to loopback: husk has no built-in auth, so exposing the server to\n // all interfaces must be an explicit, informed choice (`--host 0.0.0.0`).\n const { host, isLoopback } = effectiveHost(opts);\n\n let current = build(dir, opts);\n\n const server = Bun.serve({\n port,\n hostname: host,\n idleTimeout: 255,\n maxRequestBodySize: MAX_BODY_BYTES,\n fetch: (req) => current.handler(req),\n });\n\n if (!isLoopback) {\n console.log(\n chalk.yellow(\n `\\n ⚠ binding to ${host}: reachable off-host with no built-in auth - front it with a gateway or auth.`,\n ),\n );\n }\n\n console.log(\n chalk.bold(`\\n HUSK serving ${chalk.green(String(current.skills.length))} skill(s)`),\n );\n console.log(chalk.dim(` from ${dir}\\n`));\n printSkills(current.skills);\n console.log(`\\n ${chalk.bold('→')} ${chalk.underline(`http://localhost:${server.port}`)}\\n`);\n\n if (opts.watch) {\n const reload = debounce(() => {\n // A transient read error during reload must NOT kill the running server,\n // so load directly here (loadOrReport would process.exit) and keep the\n // previously-served skills on failure.\n let result: ReturnType<typeof loadSkills>;\n try {\n result = loadSkills(dir);\n } catch (err) {\n console.log(\n chalk.yellow(\n `! reload skipped (skills dir unreadable): ${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n return;\n }\n for (const e of result.errors) {\n console.error(chalk.yellow(`! skipped ${e.dir}: ${e.message}`));\n }\n current = buildHandler(result.skills, opts);\n console.log(chalk.cyan(`↻ reloaded ${current.skills.length} skill(s)`));\n }, 150);\n try {\n watch(dir, { recursive: true }, reload);\n console.log(chalk.dim(' watching for changes...\\n'));\n } catch {\n console.log(\n chalk.yellow(' (recursive watch unsupported on this platform; --watch disabled)\\n'),\n );\n }\n }\n}\n","import chalk from 'chalk';\nimport { Command } from 'commander';\nimport { buildCommand } from './commands/build';\nimport { callCommand } from './commands/call';\nimport { initCommand } from './commands/init';\nimport { listCommand } from './commands/list';\nimport { newCommand } from './commands/new';\nimport { serveCommand } from './commands/serve';\n\nconst program = new Command();\n\nprogram\n .name('husk')\n .description('HUSK - HTTP Universal Skill Kernel. Serve a folder of agent skills over HTTP.')\n .version('0.1.0');\n\nprogram\n .command('serve')\n .argument('[dir]', 'skills directory (default: ./skills, else .)')\n .description('Serve a folder of skills over HTTP with one long-lived Bun process')\n .option('-p, --port <port>', 'port to listen on (default 3000, or $HUSK_PORT)')\n .option('-H, --host <host>', 'host to bind (default 127.0.0.1; use 0.0.0.0 to expose off-host)')\n .option('-w, --watch', 'reload skills when files change')\n .option('--cors', 'enable permissive CORS headers (off by default)')\n .option('-c, --concurrency <n>', 'max concurrent invocations (0 = unlimited)')\n .option('-n, --name <name>', 'service name shown on the index page')\n .action((dir, opts) => serveCommand(dir, opts));\n\nprogram\n .command('list')\n .argument('[dir]', 'skills directory')\n .description('List the skills discovered in a directory')\n .option('--json', 'output the skill cards as JSON')\n .action((dir, opts) => listCommand(dir, opts));\n\nprogram\n .command('call')\n .argument('<name>', 'skill slug or name')\n .description('Invoke a skill locally without HTTP (the one-shot / serverless path)')\n .option('-i, --input <value>', 'text input; \"-\" reads stdin, \"@path\" reads a file')\n .option('-f, --file <path>', 'file input (for file-input skills)')\n .option('-d, --dir <dir>', 'skills directory')\n .option('-o, --out <dir>', 'directory to write file outputs into')\n .action((name, opts) => callCommand(name, opts));\n\nprogram\n .command('new')\n .argument('<name>', 'skill name')\n .description('Scaffold a new skill folder (SKILL.md + a starter kernel script)')\n .option('-l, --lang <lang>', 'kernel language: bash | python | ts', 'bash')\n .option('-d, --dir <dir>', 'skills directory to create it in', 'skills')\n .action((name, opts) => newCommand(name, opts));\n\nprogram\n .command('init')\n .argument('[dir]', 'project directory (default: .)')\n .description('Create a HUSK project with a ./skills folder and a starter skill')\n .action((dir, opts) => initCommand(dir, opts));\n\nprogram\n .command('build')\n .argument('[dir]', 'skills directory to copy into the image (default: skills)')\n .description('Generate deployment artifacts so the same skills run in a container')\n .option('--docker', 'emit a Dockerfile (+ .dockerignore)')\n .option('-p, --port <port>', 'port the container serves on', '3000')\n .option('--force', 'overwrite an existing Dockerfile')\n .action((dir, opts) => buildCommand(dir, opts));\n\nvoid program.parseAsync(process.argv).catch((err: unknown) => {\n console.error(chalk.red(`error: ${err instanceof Error ? err.message : String(err)}`));\n process.exit(1);\n});\n"]}
|