@maplibre-yaml/core 0.1.0 → 0.1.2
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/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -1
- package/dist/register.browser.js +16008 -0
- package/dist/register.browser.js.map +1 -0
- package/dist/register.js +4 -0
- package/dist/register.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/identity.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/visit.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/directives.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/anchors.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/applyReviver.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/toJS.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Node.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Alias.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Scalar.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/createNode.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Collection.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyComment.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/foldFlowLines.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyString.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringify.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyPair.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/log.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/addPairToJSMap.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Pair.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyCollection.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLMap.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/map.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLSeq.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/seq.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/string.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/null.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/bool.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyNumber.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/float.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/int.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/schema.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/json/schema.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/float.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/int.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/set.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/tags.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/Schema.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyDocument.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/Document.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/errors.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-props.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-contains-newline.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-flow-indent-check.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-map-includes.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-map.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-seq.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-end.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-flow-collection.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-collection.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-scalar.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-scalar.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-node.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-doc.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/composer.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-scalar.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-stringify.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-visit.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/lexer.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/line-counter.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/parser.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/public-api.js","../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/index.js","../src/parser/yaml-parser.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../src/schemas/content.schema.ts","../src/schemas/base.schema.ts","../src/schemas/source.schema.ts","../src/schemas/layer.schema.ts","../src/schemas/map.schema.ts","../src/schemas/scrollytelling.schema.ts","../src/schemas/page.schema.ts","../src/data/memory-cache.ts","../src/data/retry-manager.ts","../src/data/data-fetcher.ts","../src/data/polling-manager.ts","../src/utils/event-emitter.ts","../src/data/streaming/base-connection.ts","../src/data/streaming/sse-connection.ts","../src/data/streaming/websocket-connection.ts","../src/data/streaming/stream-manager.ts","../src/data/merge/data-merger.ts","../src/ui/loading-manager.ts","../src/renderer/layer-manager.ts","../src/renderer/popup-builder.ts","../src/renderer/event-handler.ts","../src/renderer/legend-builder.ts","../src/renderer/controls-manager.ts","../src/renderer/map-renderer.ts","../src/components/ml-map.ts","../src/register.ts"],"names":["exports","isValid","res","anchors","node","i","end","value","stringify","comment","str","map","seq","require_schema","pairs","omap","require_bool","require_float","require_int","n","set","tags","tag","ch","start","lineCounter","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","r","ZodFirstPartyTypeKind","parseYAML","removed","maplibregl"],"mappings":"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","file":"register.browser.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 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 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 value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : 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}\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 if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = 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 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 = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\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 node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!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","/**\n * @file YAML parser for MapLibre configuration files\n * @module @maplibre-yaml/core/parser\n *\n * @description\n * This module provides YAML parsing, schema validation, and reference resolution\n * for MapLibre YAML configuration files. It converts YAML strings into validated\n * TypeScript objects ready for rendering.\n *\n * ## Features\n *\n * - **YAML Parsing**: Converts YAML strings to JavaScript objects\n * - **Schema Validation**: Validates against Zod schemas with detailed error messages\n * - **Reference Resolution**: Resolves `$ref` pointers to global layers and sources\n * - **Error Formatting**: Transforms Zod errors into user-friendly messages with paths\n *\n * @example\n * Basic parsing\n * ```typescript\n * import { YAMLParser } from '@maplibre-yaml/core/parser';\n *\n * const yaml = `\n * pages:\n * - path: \"/\"\n * title: \"My Map\"\n * blocks:\n * - type: map\n * id: main\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://example.com/style.json\"\n * `;\n *\n * const config = YAMLParser.parse(yaml);\n * ```\n *\n * @example\n * Safe parsing with error handling\n * ```typescript\n * const result = YAMLParser.safeParse(yaml);\n * if (result.success) {\n * console.log('Valid config:', result.data);\n * } else {\n * result.errors.forEach(err => {\n * console.error(`${err.path}: ${err.message}`);\n * });\n * }\n * ```\n *\n * @example\n * Reference resolution\n * ```typescript\n * const yaml = `\n * layers:\n * myLayer:\n * id: shared\n * type: circle\n * source: { type: geojson, data: {...} }\n *\n * pages:\n * - path: \"/\"\n * blocks:\n * - type: map\n * layers:\n * - $ref: \"#/layers/myLayer\"\n * `;\n *\n * const config = YAMLParser.parse(yaml);\n * // References are automatically resolved\n * ```\n */\n\nimport { parse as parseYAML } from \"yaml\";\nimport { ZodError } from \"zod\";\nimport { RootSchema } from \"../schemas/page.schema\";\nimport { MapBlockSchema } from \"../schemas/map.schema\";\nimport type { z } from \"zod\";\n\n/**\n * Type alias for the root configuration object\n *\n * @remarks\n * Inferred from the RootSchema Zod schema\n */\nexport type RootConfig = z.infer<typeof RootSchema>;\n\n/**\n * Type alias for a single map block\n *\n * @remarks\n * Inferred from the MapBlockSchema Zod schema\n */\nexport type MapBlock = z.infer<typeof MapBlockSchema>;\n\n/**\n * Error information for a single validation or parsing error\n *\n * @property path - JSON path to the error location (e.g., \"pages[0].blocks[1].config.center\")\n * @property message - Human-readable error description\n * @property line - Optional line number in the YAML file where error occurred\n * @property column - Optional column number in the YAML file where error occurred\n */\nexport interface ParseError {\n path: string;\n message: string;\n line?: number;\n column?: number;\n}\n\n/**\n * Result object returned by safeParse operations\n *\n * @property success - Whether parsing and validation succeeded\n * @property data - Validated configuration object (only present if success is true)\n * @property errors - Array of errors (only present if success is false)\n */\nexport interface ParseResult<T = RootConfig> {\n success: boolean;\n data?: T;\n errors: ParseError[];\n}\n\n/**\n * YAML parser with schema validation and reference resolution\n *\n * @remarks\n * This class provides static methods for parsing YAML configuration files,\n * validating them against schemas, and resolving references between configuration\n * sections. All methods are static as the parser maintains no internal state.\n *\n * @example\n * Parse and validate YAML (throws on error)\n * ```typescript\n * const config = YAMLParser.parse(yamlString);\n * ```\n *\n * @example\n * Safe parse (returns result object)\n * ```typescript\n * const result = YAMLParser.safeParse(yamlString);\n * if (!result.success) {\n * console.error('Validation errors:', result.errors);\n * }\n * ```\n */\nexport class YAMLParser {\n /**\n * Parse YAML string and validate against schema\n *\n * @param yaml - YAML string to parse\n * @returns Validated configuration object\n * @throws {Error} If YAML syntax is invalid\n * @throws {ZodError} If validation fails\n *\n * @remarks\n * This method parses the YAML, validates it against the RootSchema,\n * resolves all references, and returns the validated config. If any\n * step fails, it throws an error.\n *\n * @example\n * ```typescript\n * try {\n * const config = YAMLParser.parse(yamlString);\n * console.log('Valid config:', config);\n * } catch (error) {\n * console.error('Parse error:', error.message);\n * }\n * ```\n */\n static parse(yaml: string): RootConfig {\n // Parse YAML string to JavaScript object\n let parsed: unknown;\n try {\n parsed = parseYAML(yaml);\n } catch (error) {\n throw new Error(\n `YAML syntax error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n // Validate against schema\n const validated = RootSchema.parse(parsed);\n\n // Resolve references\n return this.resolveReferences(validated);\n }\n\n /**\n * Parse YAML string and validate, returning a result object\n *\n * @param yaml - YAML string to parse\n * @returns Result object with success flag and either data or errors\n *\n * @remarks\n * This is the non-throwing version of {@link parse}. Instead of throwing\n * errors, it returns a result object that indicates success or failure.\n * Use this when you want to handle errors gracefully without try/catch.\n *\n * @example\n * ```typescript\n * const result = YAMLParser.safeParse(yamlString);\n * if (result.success) {\n * console.log('Config:', result.data);\n * } else {\n * result.errors.forEach(err => {\n * console.error(`Error at ${err.path}: ${err.message}`);\n * });\n * }\n * ```\n */\n static safeParse(yaml: string): ParseResult {\n try {\n const data = this.parse(yaml);\n return {\n success: true,\n data,\n errors: [],\n };\n } catch (error) {\n // Handle Zod validation errors\n if (error instanceof ZodError) {\n return {\n success: false,\n errors: this.formatZodErrors(error),\n };\n }\n\n // Handle other errors (YAML syntax, reference errors, etc.)\n return {\n success: false,\n errors: [\n {\n path: \"\",\n message: error instanceof Error ? error.message : String(error),\n },\n ],\n };\n }\n }\n\n /**\n * Validate a JavaScript object against the schema\n *\n * @param config - JavaScript object to validate\n * @returns Validated configuration object\n * @throws {ZodError} If validation fails\n *\n * @remarks\n * This method bypasses YAML parsing and directly validates a JavaScript object.\n * Useful when you already have a parsed object (e.g., from JSON.parse) and just\n * want to validate and resolve references.\n *\n * @example\n * ```typescript\n * const jsConfig = JSON.parse(jsonString);\n * const validated = YAMLParser.validate(jsConfig);\n * ```\n */\n static validate(config: unknown): RootConfig {\n const validated = RootSchema.parse(config);\n return this.resolveReferences(validated);\n }\n\n /**\n * Parse YAML string for a single map block and validate against MapBlockSchema\n *\n * @param yaml - YAML string to parse (should be a map block, not a full document)\n * @returns Validated map block object\n * @throws {Error} If YAML syntax is invalid\n * @throws {ZodError} If validation fails\n *\n * @remarks\n * This method is specifically for parsing individual map blocks (e.g., in documentation\n * or component usage). Unlike {@link parse}, it validates against MapBlockSchema rather\n * than RootSchema, so it expects a single map configuration without the pages array wrapper.\n *\n * @example\n * ```typescript\n * const yaml = `\n * type: map\n * id: example\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://example.com/style.json\"\n * layers:\n * - id: points\n * type: circle\n * source:\n * type: geojson\n * data: { type: \"FeatureCollection\", features: [] }\n * `;\n *\n * const mapBlock = YAMLParser.parseMapBlock(yaml);\n * ```\n */\n static parseMapBlock(yaml: string): MapBlock {\n // Parse YAML string to JavaScript object\n let parsed: unknown;\n try {\n parsed = parseYAML(yaml);\n } catch (error) {\n throw new Error(\n `YAML syntax error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n // Validate against MapBlockSchema\n return MapBlockSchema.parse(parsed);\n }\n\n /**\n * Parse YAML string for a single map block, returning a result object\n *\n * @param yaml - YAML string to parse (should be a map block, not a full document)\n * @returns Result object with success flag and either data or errors\n *\n * @remarks\n * This is the non-throwing version of {@link parseMapBlock}. Instead of throwing\n * errors, it returns a result object that indicates success or failure.\n * Use this when you want to handle errors gracefully without try/catch.\n *\n * @example\n * ```typescript\n * const result = YAMLParser.safeParseMapBlock(yamlString);\n * if (result.success) {\n * console.log('Map config:', result.data);\n * } else {\n * result.errors.forEach(err => {\n * console.error(`Error at ${err.path}: ${err.message}`);\n * });\n * }\n * ```\n */\n static safeParseMapBlock(yaml: string): ParseResult<MapBlock> {\n try {\n const data = this.parseMapBlock(yaml);\n return {\n success: true,\n data,\n errors: [],\n };\n } catch (error) {\n // Handle Zod validation errors\n if (error instanceof ZodError) {\n return {\n success: false,\n errors: this.formatZodErrors(error),\n };\n }\n\n // Handle other errors (YAML syntax, etc.)\n return {\n success: false,\n errors: [\n {\n path: \"\",\n message: error instanceof Error ? error.message : String(error),\n },\n ],\n };\n }\n }\n\n /**\n * Resolve $ref references to global layers and sources\n *\n * @param config - Configuration object with potential references\n * @returns Configuration with all references resolved\n * @throws {Error} If a reference cannot be resolved\n *\n * @remarks\n * References use JSON Pointer-like syntax: `#/layers/layerName` or `#/sources/sourceName`.\n * This method walks the configuration tree, finds all objects with a `$ref` property,\n * looks up the referenced item in `config.layers` or `config.sources`, and replaces\n * the reference object with the actual item.\n *\n * ## Reference Syntax\n *\n * - `#/layers/myLayer` - Reference to a layer in the global `layers` section\n * - `#/sources/mySource` - Reference to a source in the global `sources` section\n *\n * @example\n * ```typescript\n * const config = {\n * layers: {\n * myLayer: { id: 'layer1', type: 'circle', ... }\n * },\n * pages: [{\n * blocks: [{\n * type: 'map',\n * layers: [{ $ref: '#/layers/myLayer' }]\n * }]\n * }]\n * };\n *\n * const resolved = YAMLParser.resolveReferences(config);\n * // resolved.pages[0].blocks[0].layers[0] now contains the full layer object\n * ```\n */\n static resolveReferences(config: RootConfig): RootConfig {\n /**\n * Recursively walk an object and resolve references\n */\n const resolveInObject = (obj: any): any => {\n // Handle null/undefined\n if (obj == null) return obj;\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => resolveInObject(item));\n }\n\n // Handle objects\n if (typeof obj === \"object\") {\n // Check if this is a reference object\n if (\"$ref\" in obj && typeof obj.$ref === \"string\") {\n const ref = obj.$ref;\n\n // Parse reference: #/layers/layerName or #/sources/sourceName\n const match = ref.match(/^#\\/(layers|sources)\\/(.+)$/);\n if (!match) {\n throw new Error(\n `Invalid reference format: ${ref}. Expected #/layers/name or #/sources/name`\n );\n }\n\n const [, section, name] = match;\n\n // Look up the referenced item\n if (section === \"layers\") {\n if (!config.layers || !(name in config.layers)) {\n throw new Error(`Layer reference not found: ${ref}`);\n }\n return config.layers[name];\n } else if (section === \"sources\") {\n if (!config.sources || !(name in config.sources)) {\n throw new Error(`Source reference not found: ${ref}`);\n }\n return config.sources[name];\n }\n }\n\n // Recursively process all properties\n const resolved: any = {};\n for (const [key, value] of Object.entries(obj)) {\n resolved[key] = resolveInObject(value);\n }\n return resolved;\n }\n\n // Primitives\n return obj;\n };\n\n return resolveInObject(config);\n }\n\n /**\n * Format Zod validation errors into user-friendly messages\n *\n * @param error - Zod validation error\n * @returns Array of formatted error objects\n *\n * @remarks\n * This method transforms Zod's internal error format into human-readable\n * messages with clear paths and descriptions. It handles various Zod error\n * types and provides appropriate messages for each.\n *\n * ## Error Type Handling\n *\n * - `invalid_type`: Type mismatch (e.g., expected number, got string)\n * - `invalid_union_discriminator`: Invalid discriminator for union types\n * - `invalid_union`: None of the union options matched\n * - `too_small`: Value below minimum (arrays, strings, numbers)\n * - `too_big`: Value above maximum\n * - `invalid_string`: String format validation failed\n * - `custom`: Custom validation refinement failed\n *\n * @example\n * ```typescript\n * try {\n * RootSchema.parse(invalidConfig);\n * } catch (error) {\n * if (error instanceof ZodError) {\n * const formatted = YAMLParser.formatZodErrors(error);\n * formatted.forEach(err => {\n * console.error(`${err.path}: ${err.message}`);\n * });\n * }\n * }\n * ```\n */\n private static formatZodErrors(error: ZodError): ParseError[] {\n return error.errors.map((err) => {\n const path = err.path.join(\".\");\n\n let message: string;\n switch (err.code) {\n case \"invalid_type\":\n message = `Expected ${err.expected}, got ${err.received}`;\n break;\n\n case \"invalid_union_discriminator\":\n message = `Invalid type. Expected one of: ${err.options.join(\", \")}`;\n break;\n\n case \"invalid_union\":\n message = \"Value does not match any of the expected formats\";\n break;\n\n case \"too_small\":\n if (err.type === \"array\") {\n message = `Array must have at least ${err.minimum} element(s)`;\n } else if (err.type === \"string\") {\n message = `String must have at least ${err.minimum} character(s)`;\n } else {\n message = `Value must be >= ${err.minimum}`;\n }\n break;\n\n case \"too_big\":\n if (err.type === \"array\") {\n message = `Array must have at most ${err.maximum} element(s)`;\n } else if (err.type === \"string\") {\n message = `String must have at most ${err.maximum} character(s)`;\n } else {\n message = `Value must be <= ${err.maximum}`;\n }\n break;\n\n case \"invalid_string\":\n if (err.validation === \"url\") {\n message = \"Invalid URL format\";\n } else if (err.validation === \"email\") {\n message = \"Invalid email format\";\n } else {\n message = `Invalid string format: ${err.validation}`;\n }\n break;\n\n case \"custom\":\n message = err.message || \"Validation failed\";\n break;\n\n default:\n message = err.message || \"Validation error\";\n }\n\n return {\n path,\n message,\n };\n });\n }\n}\n\n/**\n * Convenience function to parse YAML config\n *\n * @param yaml - YAML string to parse\n * @returns Validated configuration object\n * @throws {Error} If parsing or validation fails\n *\n * @remarks\n * This is an alias for {@link YAMLParser.parse} for convenient imports.\n *\n * @example\n * ```typescript\n * import { parseYAMLConfig } from '@maplibre-yaml/core/parser';\n * const config = parseYAMLConfig(yamlString);\n * ```\n */\nexport const parseYAMLConfig = YAMLParser.parse.bind(YAMLParser);\n\n/**\n * Convenience function to safely parse YAML config\n *\n * @param yaml - YAML string to parse\n * @returns Result object with success flag and data or errors\n *\n * @remarks\n * This is an alias for {@link YAMLParser.safeParse} for convenient imports.\n *\n * @example\n * ```typescript\n * import { safeParseYAMLConfig } from '@maplibre-yaml/core/parser';\n * const result = safeParseYAMLConfig(yamlString);\n * if (result.success) {\n * console.log(result.data);\n * }\n * ```\n */\nexport const safeParseYAMLConfig = YAMLParser.safeParse.bind(YAMLParser);\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","/**\n * @file Content schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/content\n *\n * @description\n * Zod schemas for non-map content blocks including text, images, iframes,\n * and other HTML elements with dynamic property interpolation.\n *\n * @example\n * ```typescript\n * import { ContentBlockSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\n\n/**\n * Valid HTML tag names for content elements.\n *\n * @remarks\n * Supports common HTML elements for rich content rendering.\n * Use semantic tags for better accessibility and SEO.\n *\n * **Heading Tags:** h1, h2, h3, h4, h5, h6\n * **Text Tags:** p, span, div, strong, em, code, pre\n * **Link Tag:** a\n * **Media Tags:** img, iframe\n * **List Tags:** ul, ol, li\n * **Other Tags:** blockquote, hr, br\n */\nexport const ValidTagNames = [\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"p\",\n \"span\",\n \"div\",\n \"a\",\n \"strong\",\n \"em\",\n \"code\",\n \"pre\",\n \"img\",\n \"iframe\",\n \"ul\",\n \"ol\",\n \"li\",\n \"blockquote\",\n \"hr\",\n \"br\",\n] as const;\n\n/**\n * Content element with styling and dynamic properties.\n *\n * @remarks\n * Defines a single element within content. Supports both static and\n * dynamic values via property interpolation.\n *\n * **Core Properties:**\n * - `str` - Static text string\n * - `property` - Feature/context property name\n * - `else` - Fallback value if property is missing\n *\n * **Styling:**\n * - `classList` - CSS class names (space-separated or array)\n * - `id` - Element ID\n * - `style` - Inline CSS styles\n *\n * **Links (a tag):**\n * - `href` - URL\n * - `target` - Link target (_blank, _self, etc.)\n *\n * **Media (img, iframe):**\n * - `src` - Source URL\n * - `alt` - Alternative text (img)\n * - `width` - Width (pixels or %)\n * - `height` - Height (pixels or %)\n *\n * @example Static Text\n * ```yaml\n * - str: \"Welcome to our site\"\n * ```\n *\n * @example Dynamic Property\n * ```yaml\n * - property: \"userName\"\n * else: \"Guest\"\n * ```\n *\n * @example Styled Element\n * ```yaml\n * - str: \"Important\"\n * classList: \"text-bold text-red\"\n * style: \"font-size: 18px;\"\n * ```\n *\n * @example Link\n * ```yaml\n * - str: \"Learn more\"\n * href: \"https://example.com\"\n * target: \"_blank\"\n * ```\n *\n * @example Image\n * ```yaml\n * - src: \"https://example.com/photo.jpg\"\n * alt: \"Photo description\"\n * width: \"100%\"\n * ```\n */\nexport const ContentElementSchema = z\n .object({\n // Content\n str: z.string().optional().describe(\"Static text string\"),\n property: z.string().optional().describe(\"Dynamic property from context\"),\n else: z.string().optional().describe(\"Fallback value if property missing\"),\n\n // Styling\n classList: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe(\"CSS class names (space-separated string or array)\"),\n id: z.string().optional().describe(\"Element ID attribute\"),\n style: z.string().optional().describe(\"Inline CSS styles\"),\n\n // Links\n href: z.string().url().optional().describe(\"Link URL\"),\n target: z\n .string()\n .optional()\n .describe(\"Link target (_blank, _self, _parent, _top)\"),\n\n // Media\n src: z.string().url().optional().describe(\"Source URL for img or iframe\"),\n alt: z.string().optional().describe(\"Alternative text for images\"),\n width: z\n .union([z.string(), z.number()])\n .optional()\n .describe(\"Width (pixels or %)\"),\n height: z\n .union([z.string(), z.number()])\n .optional()\n .describe(\"Height (pixels or %)\"),\n })\n .passthrough()\n .describe(\"Content element with styling and properties\");\n\n/** Inferred type for content element. */\nexport type ContentElement = z.infer<typeof ContentElementSchema>;\n\n/**\n * Content item mapping tag name to element array.\n *\n * @remarks\n * Each content item is a record where the key is an HTML tag name\n * and the value is an array of content elements to render inside that tag.\n *\n * @example\n * ```yaml\n * - h1:\n * - str: \"Page Title\"\n * - p:\n * - str: \"Welcome, \"\n * - property: \"userName\"\n * else: \"Guest\"\n * ```\n */\nexport const ContentItemSchema = z\n .record(z.enum(ValidTagNames), z.array(ContentElementSchema))\n .describe(\"Content item mapping tag to elements\");\n\n/** Inferred type for content item. */\nexport type ContentItem = z.infer<typeof ContentItemSchema>;\n\n/**\n * Content block for rich text and media.\n *\n * @remarks\n * Content blocks allow you to add non-map content to your pages.\n * They render as HTML with support for dynamic property interpolation.\n *\n * **Use Cases:**\n * - Introductory text\n * - Explanatory sections\n * - Embedded images and videos\n * - Interactive elements\n * - Mixed content layouts\n *\n * **Properties are resolved from:**\n * 1. Page-level context (passed to renderer)\n * 2. Global configuration\n * 3. URL query parameters (if configured)\n *\n * @example Basic Text Content\n * ```yaml\n * type: content\n * id: intro\n * content:\n * - h1:\n * - str: \"Welcome\"\n * - p:\n * - str: \"This is a simple text block.\"\n * ```\n *\n * @example Dynamic Content\n * ```yaml\n * type: content\n * id: user-info\n * className: user-section\n * content:\n * - h2:\n * - str: \"User Profile\"\n * - p:\n * - str: \"Name: \"\n * - property: \"userName\"\n * else: \"Unknown\"\n * - p:\n * - str: \"Location: \"\n * - property: \"userCity\"\n * else: \"Not specified\"\n * ```\n *\n * @example Rich Content with Media\n * ```yaml\n * type: content\n * id: article\n * content:\n * - h1:\n * - str: \"Article Title\"\n * - img:\n * - src: \"https://example.com/header.jpg\"\n * alt: \"Header image\"\n * width: \"100%\"\n * - p:\n * - str: \"Article text goes here...\"\n * - blockquote:\n * - str: \"An inspiring quote.\"\n * - a:\n * - str: \"Read more\"\n * href: \"https://example.com/full-article\"\n * target: \"_blank\"\n * ```\n *\n * @example Styled Content\n * ```yaml\n * type: content\n * id: styled\n * className: \"card shadow\"\n * style: \"padding: 20px; background: #f5f5f5;\"\n * content:\n * - h3:\n * - str: \"Card Title\"\n * classList: \"text-primary\"\n * - p:\n * - str: \"Card content\"\n * ```\n *\n * @example List Content\n * ```yaml\n * type: content\n * id: features\n * content:\n * - h2:\n * - str: \"Features\"\n * - ul:\n * - li:\n * - str: \"Fast rendering\"\n * - li:\n * - str: \"Easy configuration\"\n * - li:\n * - str: \"Fully customizable\"\n * ```\n *\n * @example Embedded Content\n * ```yaml\n * type: content\n * id: video\n * content:\n * - h2:\n * - str: \"Tutorial Video\"\n * - iframe:\n * - src: \"https://www.youtube.com/embed/VIDEO_ID\"\n * width: \"560\"\n * height: \"315\"\n * ```\n */\nexport const ContentBlockSchema = z\n .object({\n type: z.literal(\"content\").describe(\"Block type\"),\n id: z.string().optional().describe(\"Unique block identifier\"),\n className: z\n .string()\n .optional()\n .describe(\"CSS class name for the block container\"),\n style: z\n .string()\n .optional()\n .describe(\"Inline CSS styles for the block container\"),\n content: z\n .array(ContentItemSchema)\n .describe(\"Array of content items to render\"),\n })\n .describe(\"Content block for rich text and media\");\n\n/** Inferred type for content block. */\nexport type ContentBlock = z.infer<typeof ContentBlockSchema>;\n","/**\n * @file Base schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/base\n *\n * @description\n * Foundational Zod schemas for coordinates, colors, expressions, and other\n * primitive types used throughout the library.\n *\n * @example\n * ```typescript\n * import { LngLatSchema, ColorSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\n\n/**\n * Longitude value in degrees.\n *\n * @remarks\n * Valid range: -180 to 180 (inclusive)\n *\n * @example\n * ```typescript\n * const lng = LongitudeSchema.parse(-74.006);\n * ```\n */\nexport const LongitudeSchema = z\n .number()\n .min(-180, \"Longitude must be >= -180\")\n .max(180, \"Longitude must be <= 180\")\n .describe(\"Longitude in degrees (-180 to 180)\");\n\n/**\n * Latitude value in degrees.\n *\n * @remarks\n * Valid range: -90 to 90 (inclusive)\n *\n * @example\n * ```typescript\n * const lat = LatitudeSchema.parse(40.7128);\n * ```\n */\nexport const LatitudeSchema = z\n .number()\n .min(-90, \"Latitude must be >= -90\")\n .max(90, \"Latitude must be <= 90\")\n .describe(\"Latitude in degrees (-90 to 90)\");\n\n/**\n * Geographic coordinates as [longitude, latitude].\n *\n * @remarks\n * **Validation Rules:**\n * - Longitude: -180 to 180\n * - Latitude: -90 to 90\n * - Must be a 2-element tuple\n *\n * Follows GeoJSON convention (lng, lat), not (lat, lng).\n *\n * **Common Values:**\n * - `[0, 0]` - Null Island (Gulf of Guinea)\n * - `[-74.006, 40.7128]` - New York City\n * - `[139.6917, 35.6895]` - Tokyo\n *\n * @example YAML\n * ```yaml\n * center: [-74.006, 40.7128]\n * ```\n *\n * @example TypeScript\n * ```typescript\n * const coords = LngLatSchema.parse([-74.006, 40.7128]);\n * ```\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.1 | GeoJSON Position}\n */\nexport const LngLatSchema = z\n .tuple([LongitudeSchema, LatitudeSchema])\n .describe(\"Geographic coordinates as [longitude, latitude]\");\n\n/** Inferred type for geographic coordinates. */\nexport type LngLat = z.infer<typeof LngLatSchema>;\n\n/**\n * Bounding box as [west, south, east, north].\n *\n * @remarks\n * Defines a rectangular geographic area. Corner order:\n * 1. West (min longitude)\n * 2. South (min latitude)\n * 3. East (max longitude)\n * 4. North (max latitude)\n *\n * @example YAML\n * ```yaml\n * maxBounds: [-74.3, 40.5, -73.7, 40.9]\n * ```\n *\n * @example TypeScript\n * ```typescript\n * // NYC bounding box\n * const bounds = LngLatBoundsSchema.parse([-74.3, 40.5, -73.7, 40.9]);\n * ```\n */\nexport const LngLatBoundsSchema = z\n .tuple([\n LongitudeSchema, // west\n LatitudeSchema, // south\n LongitudeSchema, // east\n LatitudeSchema, // north\n ])\n .describe(\"Bounding box as [west, south, east, north]\");\n\n/** Inferred type for bounding box. */\nexport type LngLatBounds = z.infer<typeof LngLatBoundsSchema>;\n\n/**\n * CSS color value.\n *\n * @remarks\n * Supports multiple color formats:\n * - Hex: `#rgb`, `#rrggbb`, `#rrggbbaa`\n * - RGB: `rgb(255, 0, 0)`\n * - RGBA: `rgba(255, 0, 0, 0.5)`\n * - HSL: `hsl(0, 100%, 50%)`\n * - HSLA: `hsla(0, 100%, 50%, 0.5)`\n * - Named: `red`, `blue`, `transparent`, etc.\n *\n * @example YAML\n * ```yaml\n * paint:\n * circle-color: \"#ff0000\"\n * fill-color: \"rgba(255, 0, 0, 0.5)\"\n * line-color: \"hsl(120, 100%, 50%)\"\n * text-color: \"blue\"\n * ```\n *\n * @example TypeScript\n * ```typescript\n * const hex = ColorSchema.parse(\"#ff0000\");\n * const rgba = ColorSchema.parse(\"rgba(255, 0, 0, 0.5)\");\n * const named = ColorSchema.parse(\"red\");\n * ```\n */\nexport const ColorSchema = z\n .string()\n .refine(\n (val) => {\n // Hex color (#rgb, #rrggbb, #rrggbbaa)\n if (val.startsWith(\"#\")) {\n return /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(val);\n }\n // rgb/rgba\n if (val.startsWith(\"rgb\")) {\n return /^rgba?\\s*\\([^)]+\\)$/.test(val);\n }\n // hsl/hsla\n if (val.startsWith(\"hsl\")) {\n return /^hsla?\\s*\\([^)]+\\)$/.test(val);\n }\n // Named colors (accept any other string, browser will validate)\n return true;\n },\n {\n message:\n \"Invalid color format. Use hex (#rgb, #rrggbb), rgb(), rgba(), hsl(), hsla(), or named colors.\",\n }\n )\n .describe(\"CSS color value\");\n\n/** Inferred type for color values. */\nexport type Color = z.infer<typeof ColorSchema>;\n\n/**\n * MapLibre expression for data-driven styling.\n *\n * @remarks\n * MapLibre expressions provide powerful data-driven styling capabilities.\n * An expression is an array where the first element is the operator name.\n *\n * **Common Operators:**\n * - `get` - Get feature property\n * - `interpolate` - Interpolate between values\n * - `match` - Match values\n * - `case` - Conditional logic\n * - `step` - Step function\n *\n * This schema provides basic validation (array starting with string).\n * Full expression syntax is validated by MapLibre at runtime.\n *\n * @example Get Property\n * ```yaml\n * text-field: [\"get\", \"name\"]\n * ```\n *\n * @example Interpolate by Zoom\n * ```yaml\n * circle-radius:\n * - interpolate\n * - [\"linear\"]\n * - [\"zoom\"]\n * - 5\n * - 2\n * - 15\n * - 10\n * ```\n *\n * @example Match Values\n * ```yaml\n * circle-color:\n * - match\n * - [\"get\", \"type\"]\n * - \"park\"\n * - \"#228B22\"\n * - \"water\"\n * - \"#4169E1\"\n * - \"#808080\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/expressions/ | MapLibre Expressions}\n */\nexport const ExpressionSchema: z.ZodType<any[]> = z\n .array(z.any())\n .refine((val) => val.length > 0 && typeof val[0] === \"string\", {\n message:\n 'Expression must be an array starting with a string operator (e.g., [\"get\", \"property\"])',\n })\n .describe(\"MapLibre expression for data-driven styling\");\n\n/** Inferred type for expressions. */\nexport type Expression = z.infer<typeof ExpressionSchema>;\n\n/**\n * Number value or MapLibre expression.\n *\n * @remarks\n * Accepts either a static number or a dynamic expression.\n * Use expressions for data-driven or zoom-dependent values.\n *\n * @example Static Value\n * ```yaml\n * circle-radius: 8\n * ```\n *\n * @example Expression\n * ```yaml\n * circle-radius:\n * - interpolate\n * - [\"linear\"]\n * - [\"get\", \"magnitude\"]\n * - 0\n * - 4\n * - 10\n * - 20\n * ```\n */\nexport const NumberOrExpressionSchema = z\n .union([z.number(), ExpressionSchema])\n .describe(\"Number value or MapLibre expression\");\n\n/** Inferred type for number or expression. */\nexport type NumberOrExpression = z.infer<typeof NumberOrExpressionSchema>;\n\n/**\n * Color value or MapLibre expression.\n *\n * @remarks\n * Accepts either a static color or a dynamic expression.\n * Use expressions for data-driven colors.\n *\n * @example Static Color\n * ```yaml\n * circle-color: \"#ff0000\"\n * ```\n *\n * @example Expression\n * ```yaml\n * circle-color:\n * - match\n * - [\"get\", \"severity\"]\n * - \"high\"\n * - \"#ff0000\"\n * - \"medium\"\n * - \"#ffaa00\"\n * - \"low\"\n * - \"#00ff00\"\n * - \"#808080\"\n * ```\n */\nexport const ColorOrExpressionSchema = z\n .union([ColorSchema, ExpressionSchema])\n .describe(\"Color value or MapLibre expression\");\n\n/** Inferred type for color or expression. */\nexport type ColorOrExpression = z.infer<typeof ColorOrExpressionSchema>;\n\n/**\n * Map zoom level.\n *\n * @remarks\n * Valid range: 0 to 24\n *\n * **Common Values:**\n * - 0 - Whole world\n * - 5 - Continent\n * - 10 - City\n * - 15 - Streets\n * - 20 - Buildings\n *\n * @example\n * ```yaml\n * zoom: 12\n * minZoom: 8\n * maxZoom: 18\n * ```\n */\nexport const ZoomLevelSchema = z\n .number()\n .min(0, \"Zoom level must be >= 0\")\n .max(24, \"Zoom level must be <= 24\")\n .describe(\"Map zoom level (0-24)\");\n\n/** Inferred type for zoom level. */\nexport type ZoomLevel = z.infer<typeof ZoomLevelSchema>;\n","/**\n * @file Source schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/source\n *\n * @description\n * Zod schemas for all MapLibre data source types with runtime-first defaults.\n * Supports GeoJSON, vector, raster, image, and video sources with dynamic data loading.\n *\n * @example\n * ```typescript\n * import { GeoJSONSourceSchema, LayerSourceSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\nimport { LngLatSchema } from \"./base.schema\";\n\n/**\n * WebSocket or Server-Sent Events streaming configuration.\n *\n * @remarks\n * Enables real-time data updates via WebSocket or SSE connections.\n *\n * **Connection Types:**\n * - `websocket` - Bidirectional WebSocket connection\n * - `sse` - Server-Sent Events (unidirectional)\n *\n * @example WebSocket\n * ```yaml\n * stream:\n * type: websocket\n * url: \"wss://api.example.com/live-data\"\n * reconnect: true\n * reconnectMaxAttempts: 10\n * protocols: [\"json\", \"v1\"]\n * ```\n *\n * @example Server-Sent Events\n * ```yaml\n * stream:\n * type: sse\n * url: \"https://api.example.com/events\"\n * eventTypes: [\"update\", \"delete\"]\n * ```\n */\nexport const StreamConfigSchema = z.object({\n type: z.enum([\"websocket\", \"sse\"]).describe(\"Streaming connection type\"),\n url: z.string().url().optional().describe(\"WebSocket or SSE endpoint URL\"),\n reconnect: z\n .boolean()\n .default(true)\n .describe(\"Automatically reconnect on disconnect\"),\n reconnectMaxAttempts: z\n .number()\n .min(0)\n .default(10)\n .describe(\"Maximum number of reconnection attempts\"),\n reconnectDelay: z\n .number()\n .min(100)\n .default(1000)\n .describe(\"Initial delay in milliseconds before reconnecting\"),\n reconnectMaxDelay: z\n .number()\n .min(1000)\n .default(30000)\n .describe(\"Maximum delay in milliseconds for exponential backoff\"),\n eventTypes: z\n .array(z.string())\n .optional()\n .describe(\"Event types to listen for (SSE only)\"),\n protocols: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe(\"WebSocket sub-protocols (WebSocket only)\"),\n});\n\n/** Inferred type for stream configuration. */\nexport type StreamConfig = z.infer<typeof StreamConfigSchema>;\n\n/**\n * Loading UI configuration for data fetching.\n *\n * @remarks\n * Controls the loading experience while data is being fetched.\n *\n * @example\n * ```yaml\n * loading:\n * enabled: true\n * message: \"Loading earthquake data...\"\n * showErrorOverlay: true\n * ```\n */\nexport const LoadingConfigSchema = z.object({\n enabled: z.boolean().default(false).describe(\"Enable loading UI overlays\"),\n message: z.string().optional().describe(\"Custom loading message to display\"),\n showErrorOverlay: z\n .boolean()\n .default(true)\n .describe(\"Show error overlay on fetch failure\"),\n});\n\n/** Inferred type for loading configuration. */\nexport type LoadingConfig = z.infer<typeof LoadingConfigSchema>;\n\n/**\n * Cache configuration for data fetching.\n *\n * @remarks\n * Controls HTTP caching behavior for fetched data.\n *\n * @example\n * ```yaml\n * cache:\n * enabled: true\n * ttl: 300000 # 5 minutes\n * ```\n */\nexport const CacheConfigSchema = z.object({\n enabled: z.boolean().default(true).describe(\"Enable HTTP caching\"),\n ttl: z\n .number()\n .positive()\n .optional()\n .describe(\"Cache TTL in milliseconds (overrides default)\"),\n});\n\n/** Inferred type for cache configuration. */\nexport type CacheConfig = z.infer<typeof CacheConfigSchema>;\n\n/**\n * Refresh configuration for polling updates.\n *\n * @remarks\n * Configures periodic data refresh with merge strategies.\n *\n * @example Replace Strategy\n * ```yaml\n * refresh:\n * refreshInterval: 5000\n * updateStrategy: replace\n * ```\n *\n * @example Merge Strategy\n * ```yaml\n * refresh:\n * refreshInterval: 10000\n * updateStrategy: merge\n * updateKey: \"vehicleId\"\n * ```\n *\n * @example Append-Window Strategy\n * ```yaml\n * refresh:\n * refreshInterval: 15000\n * updateStrategy: append-window\n * windowSize: 100\n * windowDuration: 3600000 # 1 hour\n * timestampField: \"timestamp\"\n * ```\n */\nexport const RefreshConfigSchema = z\n .object({\n refreshInterval: z\n .number()\n .min(1000)\n .optional()\n .describe(\"Polling interval in milliseconds (minimum 1000ms)\"),\n updateStrategy: z\n .enum([\"replace\", \"merge\", \"append-window\"])\n .default(\"replace\")\n .describe(\"How to merge incoming data with existing data\"),\n updateKey: z\n .string()\n .optional()\n .describe(\"Property key for merge strategy (required for merge)\"),\n windowSize: z\n .number()\n .positive()\n .optional()\n .describe(\"Maximum features to keep (append-window)\"),\n windowDuration: z\n .number()\n .positive()\n .optional()\n .describe(\"Maximum age in milliseconds (append-window)\"),\n timestampField: z\n .string()\n .optional()\n .describe(\"Property field containing timestamp (append-window)\"),\n })\n .refine((data) => !(data.updateStrategy === \"merge\" && !data.updateKey), {\n message: \"updateKey is required when updateStrategy is 'merge'\",\n });\n\n/** Inferred type for refresh configuration. */\nexport type RefreshConfig = z.infer<typeof RefreshConfigSchema>;\n\n/**\n * GeoJSON data source configuration.\n *\n * @remarks\n * The primary data source type for maplibre-yaml. Supports multiple data\n * loading strategies:\n *\n * **Data Sources (one required):**\n * - `url` - Fetch GeoJSON from URL at runtime\n * - `data` - Inline GeoJSON object\n * - `stream` - Real-time WebSocket or SSE connection\n *\n * **Fetch Strategy:**\n * - `runtime` (default) - Fetch when map loads, keeps bundle small\n * - `build` - Fetch at build time, bundle with app\n * - `hybrid` - Build-time with runtime refresh\n *\n * **Real-time Updates:**\n * - Use `refreshInterval` for polling (minimum 1000ms)\n * - Use `stream` for WebSocket/SSE\n * - Configure `updateStrategy` for merge vs replace\n *\n * @example Basic URL Source\n * ```yaml\n * source:\n * type: geojson\n * url: \"https://example.com/data.geojson\"\n * ```\n *\n * @example Inline Data\n * ```yaml\n * source:\n * type: geojson\n * data:\n * type: FeatureCollection\n * features:\n * - type: Feature\n * geometry:\n * type: Point\n * coordinates: [-74.006, 40.7128]\n * properties:\n * name: \"New York\"\n * ```\n *\n * @example Polling Updates\n * ```yaml\n * source:\n * type: geojson\n * url: \"https://api.example.com/live-data\"\n * refreshInterval: 15000\n * loading:\n * message: \"Loading live data...\"\n * ```\n *\n * @example WebSocket Streaming\n * ```yaml\n * source:\n * type: geojson\n * stream:\n * type: websocket\n * url: \"wss://api.example.com/stream\"\n * updateStrategy: merge\n * updateKey: \"id\"\n * ```\n *\n * @example Clustered Points\n * ```yaml\n * source:\n * type: geojson\n * url: \"https://example.com/points.geojson\"\n * cluster: true\n * clusterRadius: 50\n * clusterMaxZoom: 14\n * ```\n *\n * @see {@link StreamConfigSchema} for streaming options\n * @see {@link LoadingConfigSchema} for loading UI options\n * @see {@link https://maplibre.org/maplibre-style-spec/sources/#geojson | MapLibre GeoJSON Source}\n */\nexport const GeoJSONSourceSchema = z\n .object({\n type: z.literal(\"geojson\").describe(\"Source type\"),\n url: z.string().url().optional().describe(\"URL to fetch GeoJSON data\"),\n data: z.any().optional().describe(\"Inline GeoJSON object\"),\n prefetchedData: z\n .any()\n .optional()\n .describe(\"Pre-fetched data from build time\"),\n fetchStrategy: z\n .enum([\"runtime\", \"build\", \"hybrid\"])\n .default(\"runtime\")\n .describe(\"When to fetch data: runtime (default), build, or hybrid\"),\n stream: StreamConfigSchema.optional().describe(\n \"WebSocket/SSE streaming configuration\"\n ),\n refresh: RefreshConfigSchema.optional().describe(\n \"Polling refresh configuration\"\n ),\n // Legacy support for direct refresh properties\n refreshInterval: z\n .number()\n .min(1000)\n .optional()\n .describe(\n \"Polling interval in milliseconds (legacy, use refresh.refreshInterval)\"\n ),\n updateStrategy: z\n .enum([\"replace\", \"merge\", \"append-window\"])\n .optional()\n .describe(\"Update strategy (legacy, use refresh.updateStrategy)\"),\n updateKey: z\n .string()\n .optional()\n .describe(\"Update key (legacy, use refresh.updateKey)\"),\n loading: LoadingConfigSchema.optional().describe(\n \"Loading UI configuration\"\n ),\n cache: CacheConfigSchema.optional().describe(\"Cache configuration\"),\n // MapLibre clustering options\n cluster: z.boolean().optional().describe(\"Enable point clustering\"),\n clusterRadius: z\n .number()\n .int()\n .min(0)\n .optional()\n .describe(\"Cluster radius in pixels (default: 50)\"),\n clusterMaxZoom: z\n .number()\n .min(0)\n .max(24)\n .optional()\n .describe(\"Maximum zoom level to cluster points\"),\n clusterMinPoints: z\n .number()\n .int()\n .min(2)\n .optional()\n .describe(\"Minimum points to form a cluster\"),\n clusterProperties: z\n .record(z.any())\n .optional()\n .describe(\"Aggregate cluster properties\"),\n // Additional MapLibre options (passthrough)\n tolerance: z.number().optional(),\n buffer: z.number().optional(),\n lineMetrics: z.boolean().optional(),\n generateId: z.boolean().optional(),\n promoteId: z.union([z.string(), z.record(z.string())]).optional(),\n attribution: z.string().optional(),\n })\n .passthrough()\n .refine((data) => data.url || data.data || data.prefetchedData, {\n message:\n \"GeoJSON source requires at least one of: url, data, or prefetchedData. \" +\n 'Use \"url\" to fetch from an endpoint, \"data\" for inline GeoJSON, ' +\n 'or \"prefetchedData\" for build-time fetched data.',\n });\n\n/** Inferred type for GeoJSON source. */\nexport type GeoJSONSource = z.infer<typeof GeoJSONSourceSchema>;\n\n/**\n * Vector tile source configuration.\n *\n * @remarks\n * Vector tiles provide efficient rendering of large datasets.\n * Requires either a TileJSON URL or a tiles URL array.\n *\n * @example TileJSON URL\n * ```yaml\n * source:\n * type: vector\n * url: \"https://api.maptiler.com/tiles/v3/tiles.json?key=YOUR_KEY\"\n * ```\n *\n * @example Tiles Array\n * ```yaml\n * source:\n * type: vector\n * tiles:\n * - \"https://tile.example.com/{z}/{x}/{y}.pbf\"\n * minzoom: 0\n * maxzoom: 14\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/sources/#vector | MapLibre Vector Source}\n */\nexport const VectorSourceSchema = z\n .object({\n type: z.literal(\"vector\").describe(\"Source type\"),\n url: z.string().url().optional().describe(\"TileJSON URL\"),\n tiles: z\n .array(z.string().url())\n .optional()\n .describe(\"Tile URL template array\"),\n minzoom: z\n .number()\n .min(0)\n .max(24)\n .optional()\n .describe(\"Minimum zoom level\"),\n maxzoom: z\n .number()\n .min(0)\n .max(24)\n .optional()\n .describe(\"Maximum zoom level\"),\n bounds: z\n .tuple([z.number(), z.number(), z.number(), z.number()])\n .optional()\n .describe(\"Bounding box [west, south, east, north]\"),\n scheme: z\n .enum([\"xyz\", \"tms\"])\n .optional()\n .describe(\"Tile coordinate scheme\"),\n attribution: z.string().optional().describe(\"Attribution text\"),\n promoteId: z.union([z.string(), z.record(z.string())]).optional(),\n volatile: z.boolean().optional(),\n })\n .passthrough()\n .refine((data) => data.url || data.tiles, {\n message:\n 'Vector source requires either \"url\" (TileJSON) or \"tiles\" (tile URL array). ' +\n \"Provide at least one of these properties.\",\n });\n\n/** Inferred type for vector source. */\nexport type VectorSource = z.infer<typeof VectorSourceSchema>;\n\n/**\n * Raster tile source configuration.\n *\n * @remarks\n * Raster tiles for satellite imagery, hillshading, or other bitmap data.\n *\n * @example\n * ```yaml\n * source:\n * type: raster\n * tiles:\n * - \"https://tile.openstreetmap.org/{z}/{x}/{y}.png\"\n * tileSize: 256\n * maxzoom: 19\n * attribution: \"© OpenStreetMap contributors\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/sources/#raster | MapLibre Raster Source}\n */\nexport const RasterSourceSchema = z\n .object({\n type: z.literal(\"raster\").describe(\"Source type\"),\n url: z.string().url().optional().describe(\"TileJSON URL\"),\n tiles: z\n .array(z.string().url())\n .optional()\n .describe(\"Tile URL template array\"),\n tileSize: z\n .number()\n .int()\n .min(1)\n .default(512)\n .describe(\"Tile size in pixels\"),\n minzoom: z\n .number()\n .min(0)\n .max(24)\n .optional()\n .describe(\"Minimum zoom level\"),\n maxzoom: z\n .number()\n .min(0)\n .max(24)\n .optional()\n .describe(\"Maximum zoom level\"),\n bounds: z\n .tuple([z.number(), z.number(), z.number(), z.number()])\n .optional()\n .describe(\"Bounding box [west, south, east, north]\"),\n scheme: z\n .enum([\"xyz\", \"tms\"])\n .optional()\n .describe(\"Tile coordinate scheme\"),\n attribution: z.string().optional().describe(\"Attribution text\"),\n volatile: z.boolean().optional(),\n })\n .passthrough()\n .refine((data) => data.url || data.tiles, {\n message:\n 'Raster source requires either \"url\" (TileJSON) or \"tiles\" (tile URL array). ' +\n \"Provide at least one of these properties.\",\n });\n\n/** Inferred type for raster source. */\nexport type RasterSource = z.infer<typeof RasterSourceSchema>;\n\n/**\n * Image source configuration.\n *\n * @remarks\n * Display a single image on the map anchored to geographic coordinates.\n * Useful for overlaying maps, floor plans, or custom imagery.\n *\n * **Coordinate Order:**\n * Four corners must be specified clockwise starting from top-left:\n * 1. Top-left\n * 2. Top-right\n * 3. Bottom-right\n * 4. Bottom-left\n *\n * @example\n * ```yaml\n * source:\n * type: image\n * url: \"https://example.com/overlay.png\"\n * coordinates:\n * - [-80.425, 46.437] # top-left\n * - [-71.516, 46.437] # top-right\n * - [-71.516, 37.936] # bottom-right\n * - [-80.425, 37.936] # bottom-left\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/sources/#image | MapLibre Image Source}\n */\nexport const ImageSourceSchema = z\n .object({\n type: z.literal(\"image\").describe(\"Source type\"),\n url: z.string().url().describe(\"Image URL\"),\n coordinates: z\n .tuple([LngLatSchema, LngLatSchema, LngLatSchema, LngLatSchema])\n .describe(\n \"Four corner coordinates [topLeft, topRight, bottomRight, bottomLeft]\"\n ),\n })\n .passthrough();\n\n/** Inferred type for image source. */\nexport type ImageSource = z.infer<typeof ImageSourceSchema>;\n\n/**\n * Video source configuration.\n *\n * @remarks\n * Display video content on the map anchored to geographic coordinates.\n * Multiple URLs can be provided for browser compatibility.\n *\n * @example\n * ```yaml\n * source:\n * type: video\n * urls:\n * - \"https://example.com/video.mp4\"\n * - \"https://example.com/video.webm\"\n * coordinates:\n * - [-122.51596391201019, 37.56238816766053]\n * - [-122.51467645168304, 37.56410183312965]\n * - [-122.51309394836426, 37.563391708549425]\n * - [-122.51423120498657, 37.56161849366671]\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/sources/#video | MapLibre Video Source}\n */\nexport const VideoSourceSchema = z\n .object({\n type: z.literal(\"video\").describe(\"Source type\"),\n urls: z\n .array(z.string().url())\n .min(1)\n .describe(\"Array of video URLs for browser compatibility\"),\n coordinates: z\n .tuple([LngLatSchema, LngLatSchema, LngLatSchema, LngLatSchema])\n .describe(\n \"Four corner coordinates [topLeft, topRight, bottomRight, bottomLeft]\"\n ),\n })\n .passthrough();\n\n/** Inferred type for video source. */\nexport type VideoSource = z.infer<typeof VideoSourceSchema>;\n\n/**\n * Union of all layer source types.\n *\n * @remarks\n * Use the `type` field to determine which source type is being used.\n *\n * @example\n * ```typescript\n * const source: LayerSource = {\n * type: 'geojson',\n * url: 'https://example.com/data.geojson'\n * };\n *\n * // TypeScript knows the available fields based on type\n * if (source.type === 'geojson') {\n * console.log(source.refreshInterval); // OK\n * }\n * ```\n */\nexport const LayerSourceSchema = z.union([\n GeoJSONSourceSchema,\n VectorSourceSchema,\n RasterSourceSchema,\n ImageSourceSchema,\n VideoSourceSchema,\n]);\n\n/** Inferred type for any layer source. */\nexport type LayerSource = z.infer<typeof LayerSourceSchema>;\n","/**\n * @file Layer schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/layer\n *\n * @description\n * Zod schemas for all MapLibre layer types with paint/layout properties,\n * interactive events, popups, and legends.\n *\n * @example\n * ```typescript\n * import { LayerSchema, CircleLayerSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\nimport {\n ColorOrExpressionSchema,\n NumberOrExpressionSchema,\n ExpressionSchema,\n ZoomLevelSchema,\n} from \"./base.schema\";\nimport { LayerSourceSchema } from \"./source.schema\";\n\n/**\n * Content item for popup or dynamic text rendering.\n *\n * @remarks\n * Supports static strings, dynamic property interpolation, and fallback values.\n *\n * **Properties:**\n * - `str` - Static text string\n * - `property` - Feature property name to interpolate\n * - `else` - Fallback value if property is missing\n * - `format` - Number format string (e.g., \",.0f\" for thousands separator)\n * - `href` - Link URL (for anchor tags)\n * - `text` - Link text\n * - `src` - Image/iframe source URL\n * - `alt` - Image alt text\n *\n * @example Static Text\n * ```yaml\n * - str: \"Population: \"\n * ```\n *\n * @example Dynamic Property\n * ```yaml\n * - property: name\n * else: \"Unknown\"\n * ```\n *\n * @example Formatted Number\n * ```yaml\n * - property: population\n * format: \",.0f\"\n * ```\n */\nexport const PopupContentItemSchema = z\n .object({\n str: z.string().optional().describe(\"Static text string\"),\n property: z.string().optional().describe(\"Feature property name\"),\n else: z.string().optional().describe(\"Fallback value if property missing\"),\n format: z\n .string()\n .optional()\n .describe('Number format string (e.g., \",.0f\")'),\n href: z.string().url().optional().describe(\"Link URL\"),\n text: z.string().optional().describe(\"Link text\"),\n src: z.string().url().optional().describe(\"Image/iframe source\"),\n alt: z.string().optional().describe(\"Image alt text\"),\n })\n .passthrough()\n .describe(\"Popup content item with static or dynamic values\");\n\n/** Inferred type for popup content item. */\nexport type PopupContentItem = z.infer<typeof PopupContentItemSchema>;\n\n/**\n * Popup content structure.\n *\n * @remarks\n * Array of HTML elements where each element is `{ tagName: [items] }`.\n * Elements are rendered in order to build popup HTML.\n *\n * **Supported Tags:**\n * h1, h2, h3, h4, h5, h6, p, span, div, strong, em, code, pre,\n * a, img, iframe, ul, ol, li, blockquote, hr, br\n *\n * @example\n * ```yaml\n * popup:\n * - h3:\n * - property: name\n * else: \"Unknown\"\n * - p:\n * - str: \"Population: \"\n * - property: population\n * format: \",.0f\"\n * - a:\n * - href: \"https://example.com\"\n * text: \"Learn more\"\n * ```\n *\n * **Output for `{ name: \"NYC\", population: 8336817 }`:**\n * ```html\n * <h3>NYC</h3>\n * <p>Population: 8,336,817</p>\n * <a href=\"https://example.com\">Learn more</a>\n * ```\n */\nexport const PopupContentSchema = z\n .array(z.record(z.array(PopupContentItemSchema)))\n .describe(\"Popup content structure as array of HTML elements\");\n\n/** Inferred type for popup content. */\nexport type PopupContent = z.infer<typeof PopupContentSchema>;\n\n/**\n * Interactive event configuration for layers.\n *\n * @remarks\n * Defines hover and click behaviors for map features.\n *\n * **Events:**\n * - `hover` - Cursor and highlight on mouseover\n * - `click` - Popup, actions, or navigation on click\n * - `mouseenter` - Custom action on mouse enter\n * - `mouseleave` - Custom action on mouse leave\n *\n * @example Hover Cursor\n * ```yaml\n * interactive:\n * hover:\n * cursor: pointer\n * ```\n *\n * @example Click Popup\n * ```yaml\n * interactive:\n * click:\n * popup:\n * - h3:\n * - property: name\n * - p:\n * - property: description\n * ```\n *\n * @example Click with FlyTo\n * ```yaml\n * interactive:\n * click:\n * flyTo:\n * zoom: 15\n * duration: 1000\n * ```\n */\nexport const InteractiveConfigSchema = z\n .object({\n hover: z\n .object({\n cursor: z\n .string()\n .optional()\n .describe('CSS cursor style (e.g., \"pointer\")'),\n highlight: z\n .boolean()\n .optional()\n .describe(\"Highlight feature on hover\"),\n })\n .optional()\n .describe(\"Hover behavior\"),\n click: z\n .object({\n popup: PopupContentSchema.optional().describe(\n \"Popup content to display\"\n ),\n action: z.string().optional().describe(\"Custom action name to trigger\"),\n flyTo: z\n .object({\n center: z.tuple([z.number(), z.number()]).optional(),\n zoom: ZoomLevelSchema.optional(),\n duration: z.number().optional(),\n })\n .optional()\n .describe(\"Fly to location on click\"),\n })\n .optional()\n .describe(\"Click behavior\"),\n mouseenter: z\n .object({\n action: z.string().optional().describe(\"Custom action on mouse enter\"),\n })\n .optional(),\n mouseleave: z\n .object({\n action: z.string().optional().describe(\"Custom action on mouse leave\"),\n })\n .optional(),\n })\n .optional()\n .describe(\"Interactive event configuration\");\n\n/** Inferred type for interactive config. */\nexport type InteractiveConfig = z.infer<typeof InteractiveConfigSchema>;\n\n/**\n * Legend item for a layer.\n *\n * @remarks\n * Defines how the layer appears in the map legend.\n *\n * **Shape Options:**\n * - `circle` - Circular symbol\n * - `square` - Square symbol\n * - `line` - Line symbol\n * - `icon` - Custom icon\n *\n * @example\n * ```yaml\n * legend:\n * color: \"#ff0000\"\n * label: \"Earthquakes\"\n * shape: circle\n * ```\n */\nexport const LegendItemSchema = z\n .object({\n color: z.string().describe(\"CSS color value\"),\n label: z.string().describe(\"Legend label text\"),\n shape: z\n .enum([\"circle\", \"square\", \"line\", \"icon\"])\n .default(\"square\")\n .describe(\"Symbol shape\"),\n icon: z.string().optional().describe(\"Icon name or URL (for shape: icon)\"),\n })\n .describe(\"Legend item configuration\");\n\n/** Inferred type for legend item. */\nexport type LegendItem = z.infer<typeof LegendItemSchema>;\n\n/**\n * Base properties shared by all layer types.\n *\n * @remarks\n * Common configuration that applies to every layer regardless of type.\n */\nexport const BaseLayerPropertiesSchema = z.object({\n id: z.string().describe(\"Unique layer identifier\"),\n label: z.string().optional().describe(\"Human-readable layer label\"),\n source: z\n .union([LayerSourceSchema, z.string()])\n .describe(\"Layer source (inline definition or source ID reference)\"),\n \"source-layer\": z\n .string()\n .optional()\n .describe(\"Source layer name (for vector sources)\"),\n minzoom: ZoomLevelSchema.optional().describe(\n \"Minimum zoom level to show layer\"\n ),\n maxzoom: ZoomLevelSchema.optional().describe(\n \"Maximum zoom level to show layer\"\n ),\n filter: ExpressionSchema.optional().describe(\"MapLibre filter expression\"),\n visible: z.boolean().default(true).describe(\"Initial visibility state\"),\n toggleable: z\n .boolean()\n .default(true)\n .describe(\"Allow users to toggle visibility\"),\n before: z\n .string()\n .optional()\n .describe(\"Layer ID to insert this layer before\"),\n interactive: InteractiveConfigSchema.describe(\n \"Interactive event configuration\"\n ),\n legend: LegendItemSchema.optional().describe(\"Legend configuration\"),\n metadata: z.record(z.any()).optional().describe(\"Custom metadata\"),\n});\n\n/**\n * Circle layer for point data.\n *\n * @remarks\n * Renders points as circles. Supports data-driven styling via\n * MapLibre expressions for all paint properties.\n *\n * **Common Paint Properties:**\n * - `circle-radius` - Size in pixels\n * - `circle-color` - Fill color\n * - `circle-opacity` - Fill opacity (0-1)\n * - `circle-stroke-width` - Border width\n * - `circle-stroke-color` - Border color\n *\n * @example Basic Circle\n * ```yaml\n * - id: points\n * type: circle\n * source:\n * type: geojson\n * url: \"https://example.com/points.geojson\"\n * paint:\n * circle-radius: 8\n * circle-color: \"#ff0000\"\n * ```\n *\n * @example Data-Driven Radius\n * ```yaml\n * paint:\n * circle-radius:\n * - interpolate\n * - [\"linear\"]\n * - [\"get\", \"magnitude\"]\n * - 0\n * - 4\n * - 10\n * - 20\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#circle | MapLibre Circle Layer}\n */\nexport const CircleLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"circle\").describe(\"Layer type\"),\n paint: z\n .object({\n \"circle-radius\": NumberOrExpressionSchema.optional(),\n \"circle-color\": ColorOrExpressionSchema.optional(),\n \"circle-blur\": NumberOrExpressionSchema.optional(),\n \"circle-opacity\": NumberOrExpressionSchema.optional(),\n \"circle-stroke-width\": NumberOrExpressionSchema.optional(),\n \"circle-stroke-color\": ColorOrExpressionSchema.optional(),\n \"circle-stroke-opacity\": NumberOrExpressionSchema.optional(),\n \"circle-pitch-scale\": z.enum([\"map\", \"viewport\"]).optional(),\n \"circle-pitch-alignment\": z.enum([\"map\", \"viewport\"]).optional(),\n \"circle-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"circle-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Circle paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Circle layout properties\"),\n}).passthrough();\n\n/** Inferred type for circle layer. */\nexport type CircleLayer = z.infer<typeof CircleLayerSchema>;\n\n/**\n * Line layer for linear features.\n *\n * @remarks\n * Renders lines from LineString or Polygon geometries.\n * Supports dash patterns, gradients, and data-driven styling.\n *\n * @example Basic Line\n * ```yaml\n * - id: roads\n * type: line\n * source:\n * type: geojson\n * url: \"https://example.com/roads.geojson\"\n * paint:\n * line-color: \"#333333\"\n * line-width: 2\n * ```\n *\n * @example Dashed Line\n * ```yaml\n * paint:\n * line-color: \"#0000ff\"\n * line-width: 3\n * line-dasharray: [2, 1]\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#line | MapLibre Line Layer}\n */\nexport const LineLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"line\").describe(\"Layer type\"),\n paint: z\n .object({\n \"line-opacity\": NumberOrExpressionSchema.optional(),\n \"line-color\": ColorOrExpressionSchema.optional(),\n \"line-width\": NumberOrExpressionSchema.optional(),\n \"line-gap-width\": NumberOrExpressionSchema.optional(),\n \"line-offset\": NumberOrExpressionSchema.optional(),\n \"line-blur\": NumberOrExpressionSchema.optional(),\n \"line-dasharray\": z.array(z.number()).optional(),\n \"line-pattern\": z.string().optional(),\n \"line-gradient\": ColorOrExpressionSchema.optional(),\n \"line-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"line-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Line paint properties\"),\n layout: z\n .object({\n \"line-cap\": z.enum([\"butt\", \"round\", \"square\"]).optional(),\n \"line-join\": z.enum([\"bevel\", \"round\", \"miter\"]).optional(),\n \"line-miter-limit\": z.number().optional(),\n \"line-round-limit\": z.number().optional(),\n \"line-sort-key\": NumberOrExpressionSchema.optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Line layout properties\"),\n}).passthrough();\n\n/** Inferred type for line layer. */\nexport type LineLayer = z.infer<typeof LineLayerSchema>;\n\n/**\n * Fill layer for polygon data.\n *\n * @remarks\n * Renders filled polygons with optional outlines.\n *\n * @example Basic Fill\n * ```yaml\n * - id: parks\n * type: fill\n * source:\n * type: geojson\n * url: \"https://example.com/parks.geojson\"\n * paint:\n * fill-color: \"#228B22\"\n * fill-opacity: 0.5\n * fill-outline-color: \"#006400\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#fill | MapLibre Fill Layer}\n */\nexport const FillLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"fill\").describe(\"Layer type\"),\n paint: z\n .object({\n \"fill-antialias\": z.boolean().optional(),\n \"fill-opacity\": NumberOrExpressionSchema.optional(),\n \"fill-color\": ColorOrExpressionSchema.optional(),\n \"fill-outline-color\": ColorOrExpressionSchema.optional(),\n \"fill-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"fill-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n \"fill-pattern\": z.string().optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Fill paint properties\"),\n layout: z\n .object({\n \"fill-sort-key\": NumberOrExpressionSchema.optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Fill layout properties\"),\n}).passthrough();\n\n/** Inferred type for fill layer. */\nexport type FillLayer = z.infer<typeof FillLayerSchema>;\n\n/**\n * Symbol layer for icons and text.\n *\n * @remarks\n * Renders icons, text labels, or both. Most complex layer type with\n * extensive styling options for typography and icon placement.\n *\n * @example Icon\n * ```yaml\n * - id: markers\n * type: symbol\n * source:\n * type: geojson\n * url: \"https://example.com/markers.geojson\"\n * layout:\n * icon-image: \"marker-15\"\n * icon-size: 1.5\n * ```\n *\n * @example Text Label\n * ```yaml\n * layout:\n * text-field: [\"get\", \"name\"]\n * text-size: 12\n * text-anchor: top\n * paint:\n * text-color: \"#000000\"\n * text-halo-color: \"#ffffff\"\n * text-halo-width: 2\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#symbol | MapLibre Symbol Layer}\n */\nexport const SymbolLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"symbol\").describe(\"Layer type\"),\n layout: z\n .object({\n \"symbol-placement\": z.enum([\"point\", \"line\", \"line-center\"]).optional(),\n \"symbol-spacing\": z.number().optional(),\n \"symbol-avoid-edges\": z.boolean().optional(),\n \"symbol-sort-key\": NumberOrExpressionSchema.optional(),\n \"symbol-z-order\": z.enum([\"auto\", \"viewport-y\", \"source\"]).optional(),\n \"icon-allow-overlap\": z.boolean().optional(),\n \"icon-ignore-placement\": z.boolean().optional(),\n \"icon-optional\": z.boolean().optional(),\n \"icon-rotation-alignment\": z.enum([\"map\", \"viewport\", \"auto\"]).optional(),\n \"icon-size\": NumberOrExpressionSchema.optional(),\n \"icon-text-fit\": z.enum([\"none\", \"width\", \"height\", \"both\"]).optional(),\n \"icon-text-fit-padding\": z\n .tuple([z.number(), z.number(), z.number(), z.number()])\n .optional(),\n \"icon-image\": z.union([z.string(), ExpressionSchema]).optional(),\n \"icon-rotate\": NumberOrExpressionSchema.optional(),\n \"icon-padding\": z.number().optional(),\n \"icon-keep-upright\": z.boolean().optional(),\n \"icon-offset\": z.tuple([z.number(), z.number()]).optional(),\n \"icon-anchor\": z\n .enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n ])\n .optional(),\n \"icon-pitch-alignment\": z.enum([\"map\", \"viewport\", \"auto\"]).optional(),\n \"text-pitch-alignment\": z.enum([\"map\", \"viewport\", \"auto\"]).optional(),\n \"text-rotation-alignment\": z.enum([\"map\", \"viewport\", \"auto\"]).optional(),\n \"text-field\": z.union([z.string(), ExpressionSchema]).optional(),\n \"text-font\": z.array(z.string()).optional(),\n \"text-size\": NumberOrExpressionSchema.optional(),\n \"text-max-width\": NumberOrExpressionSchema.optional(),\n \"text-line-height\": z.number().optional(),\n \"text-letter-spacing\": z.number().optional(),\n \"text-justify\": z.enum([\"auto\", \"left\", \"center\", \"right\"]).optional(),\n \"text-radial-offset\": z.number().optional(),\n \"text-variable-anchor\": z\n .array(\n z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n ])\n )\n .optional(),\n \"text-anchor\": z\n .enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n ])\n .optional(),\n \"text-max-angle\": z.number().optional(),\n \"text-rotate\": NumberOrExpressionSchema.optional(),\n \"text-padding\": z.number().optional(),\n \"text-keep-upright\": z.boolean().optional(),\n \"text-transform\": z.enum([\"none\", \"uppercase\", \"lowercase\"]).optional(),\n \"text-offset\": z.tuple([z.number(), z.number()]).optional(),\n \"text-allow-overlap\": z.boolean().optional(),\n \"text-ignore-placement\": z.boolean().optional(),\n \"text-optional\": z.boolean().optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Symbol layout properties\"),\n paint: z\n .object({\n \"icon-opacity\": NumberOrExpressionSchema.optional(),\n \"icon-color\": ColorOrExpressionSchema.optional(),\n \"icon-halo-color\": ColorOrExpressionSchema.optional(),\n \"icon-halo-width\": NumberOrExpressionSchema.optional(),\n \"icon-halo-blur\": NumberOrExpressionSchema.optional(),\n \"icon-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"icon-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n \"text-opacity\": NumberOrExpressionSchema.optional(),\n \"text-color\": ColorOrExpressionSchema.optional(),\n \"text-halo-color\": ColorOrExpressionSchema.optional(),\n \"text-halo-width\": NumberOrExpressionSchema.optional(),\n \"text-halo-blur\": NumberOrExpressionSchema.optional(),\n \"text-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"text-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Symbol paint properties\"),\n}).passthrough();\n\n/** Inferred type for symbol layer. */\nexport type SymbolLayer = z.infer<typeof SymbolLayerSchema>;\n\n/**\n * Raster layer for raster tiles or images.\n *\n * @remarks\n * Renders raster imagery with opacity and blending controls.\n *\n * @example\n * ```yaml\n * - id: satellite\n * type: raster\n * source:\n * type: raster\n * tiles: [\"https://tile.example.com/{z}/{x}/{y}.png\"]\n * paint:\n * raster-opacity: 0.8\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#raster | MapLibre Raster Layer}\n */\nexport const RasterLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"raster\").describe(\"Layer type\"),\n paint: z\n .object({\n \"raster-opacity\": NumberOrExpressionSchema.optional(),\n \"raster-hue-rotate\": NumberOrExpressionSchema.optional(),\n \"raster-brightness-min\": NumberOrExpressionSchema.optional(),\n \"raster-brightness-max\": NumberOrExpressionSchema.optional(),\n \"raster-saturation\": NumberOrExpressionSchema.optional(),\n \"raster-contrast\": NumberOrExpressionSchema.optional(),\n \"raster-resampling\": z.enum([\"linear\", \"nearest\"]).optional(),\n \"raster-fade-duration\": z.number().optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Raster paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Raster layout properties\"),\n}).passthrough();\n\n/** Inferred type for raster layer. */\nexport type RasterLayer = z.infer<typeof RasterLayerSchema>;\n\n/**\n * Fill extrusion layer for 3D buildings and structures.\n *\n * @remarks\n * Renders filled polygons extruded in 3D space.\n *\n * @example 3D Buildings\n * ```yaml\n * - id: buildings\n * type: fill-extrusion\n * source:\n * type: vector\n * url: \"https://example.com/buildings.json\"\n * source-layer: buildings\n * paint:\n * fill-extrusion-color: \"#aaaaaa\"\n * fill-extrusion-height: [\"get\", \"height\"]\n * fill-extrusion-base: [\"get\", \"min_height\"]\n * fill-extrusion-opacity: 0.8\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#fill-extrusion | MapLibre Fill Extrusion Layer}\n */\nexport const FillExtrusionLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"fill-extrusion\").describe(\"Layer type\"),\n paint: z\n .object({\n \"fill-extrusion-opacity\": NumberOrExpressionSchema.optional(),\n \"fill-extrusion-color\": ColorOrExpressionSchema.optional(),\n \"fill-extrusion-translate\": z.tuple([z.number(), z.number()]).optional(),\n \"fill-extrusion-translate-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n \"fill-extrusion-pattern\": z.string().optional(),\n \"fill-extrusion-height\": NumberOrExpressionSchema.optional(),\n \"fill-extrusion-base\": NumberOrExpressionSchema.optional(),\n \"fill-extrusion-vertical-gradient\": z.boolean().optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Fill extrusion paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Fill extrusion layout properties\"),\n}).passthrough();\n\n/** Inferred type for fill extrusion layer. */\nexport type FillExtrusionLayer = z.infer<typeof FillExtrusionLayerSchema>;\n\n/**\n * Heatmap layer for point density visualization.\n *\n * @remarks\n * Renders point data as a smooth heatmap with color gradients.\n *\n * @example\n * ```yaml\n * - id: earthquakes-heat\n * type: heatmap\n * source:\n * type: geojson\n * url: \"https://example.com/earthquakes.geojson\"\n * paint:\n * heatmap-intensity: 1\n * heatmap-radius: 20\n * heatmap-color:\n * - interpolate\n * - [\"linear\"]\n * - [\"heatmap-density\"]\n * - 0\n * - \"rgba(0,0,255,0)\"\n * - 0.5\n * - \"yellow\"\n * - 1\n * - \"red\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#heatmap | MapLibre Heatmap Layer}\n */\nexport const HeatmapLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"heatmap\").describe(\"Layer type\"),\n paint: z\n .object({\n \"heatmap-radius\": NumberOrExpressionSchema.optional(),\n \"heatmap-weight\": NumberOrExpressionSchema.optional(),\n \"heatmap-intensity\": NumberOrExpressionSchema.optional(),\n \"heatmap-color\": ColorOrExpressionSchema.optional(),\n \"heatmap-opacity\": NumberOrExpressionSchema.optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Heatmap paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Heatmap layout properties\"),\n}).passthrough();\n\n/** Inferred type for heatmap layer. */\nexport type HeatmapLayer = z.infer<typeof HeatmapLayerSchema>;\n\n/**\n * Hillshade layer for terrain visualization.\n *\n * @remarks\n * Renders raster DEM data as hillshading.\n *\n * @example\n * ```yaml\n * - id: hillshade\n * type: hillshade\n * source:\n * type: raster-dem\n * url: \"https://example.com/terrain.json\"\n * paint:\n * hillshade-illumination-direction: 315\n * hillshade-exaggeration: 0.5\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#hillshade | MapLibre Hillshade Layer}\n */\nexport const HillshadeLayerSchema = BaseLayerPropertiesSchema.extend({\n type: z.literal(\"hillshade\").describe(\"Layer type\"),\n paint: z\n .object({\n \"hillshade-illumination-direction\": z.number().optional(),\n \"hillshade-illumination-anchor\": z.enum([\"map\", \"viewport\"]).optional(),\n \"hillshade-exaggeration\": NumberOrExpressionSchema.optional(),\n \"hillshade-shadow-color\": ColorOrExpressionSchema.optional(),\n \"hillshade-highlight-color\": ColorOrExpressionSchema.optional(),\n \"hillshade-accent-color\": ColorOrExpressionSchema.optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Hillshade paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Hillshade layout properties\"),\n}).passthrough();\n\n/** Inferred type for hillshade layer. */\nexport type HillshadeLayer = z.infer<typeof HillshadeLayerSchema>;\n\n/**\n * Background layer for solid color backgrounds.\n *\n * @remarks\n * Renders a solid color or pattern as the map background.\n * Only one background layer is typically used per style.\n *\n * @example\n * ```yaml\n * - id: background\n * type: background\n * paint:\n * background-color: \"#f0f0f0\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-style-spec/layers/#background | MapLibre Background Layer}\n */\nexport const BackgroundLayerSchema = z\n .object({\n id: z.string().describe(\"Unique layer identifier\"),\n type: z.literal(\"background\").describe(\"Layer type\"),\n paint: z\n .object({\n \"background-color\": ColorOrExpressionSchema.optional(),\n \"background-pattern\": z.string().optional(),\n \"background-opacity\": NumberOrExpressionSchema.optional(),\n })\n .passthrough()\n .optional()\n .describe(\"Background paint properties\"),\n layout: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Background layout properties\"),\n metadata: z.record(z.any()).optional().describe(\"Custom metadata\"),\n })\n .passthrough();\n\n/** Inferred type for background layer. */\nexport type BackgroundLayer = z.infer<typeof BackgroundLayerSchema>;\n\n/**\n * Union of all layer types.\n *\n * @remarks\n * Use the `type` field to determine which layer type is being used.\n *\n * @example\n * ```typescript\n * const layer: Layer = {\n * id: 'my-layer',\n * type: 'circle',\n * source: { type: 'geojson', url: '...' },\n * paint: { 'circle-radius': 8 }\n * };\n * ```\n */\nexport const LayerSchema = z.union([\n CircleLayerSchema,\n LineLayerSchema,\n FillLayerSchema,\n SymbolLayerSchema,\n RasterLayerSchema,\n FillExtrusionLayerSchema,\n HeatmapLayerSchema,\n HillshadeLayerSchema,\n BackgroundLayerSchema,\n]);\n\n/** Inferred type for any layer. */\nexport type Layer = z.infer<typeof LayerSchema>;\n\n/**\n * Layer reference for reusing global layer definitions.\n *\n * @remarks\n * References a layer defined in the global `layers` object using\n * JSON Pointer-like syntax: `#/layers/layerName`\n *\n * @example\n * ```yaml\n * # Global definition\n * layers:\n * bikeLayer:\n * id: bikes\n * type: line\n * # ...\n *\n * # Reference in map\n * pages:\n * - blocks:\n * - layers:\n * - $ref: \"#/layers/bikeLayer\"\n * ```\n */\nexport const LayerReferenceSchema = z\n .object({\n $ref: z\n .string()\n .describe('Reference to global layer (e.g., \"#/layers/bikeLayer\")'),\n })\n .describe(\"Layer reference\");\n\n/** Inferred type for layer reference. */\nexport type LayerReference = z.infer<typeof LayerReferenceSchema>;\n\n/**\n * Union of layer or layer reference.\n *\n * @remarks\n * Layers can be defined inline or referenced from global definitions.\n */\nexport const LayerOrReferenceSchema = z.union([\n LayerSchema,\n LayerReferenceSchema,\n]);\n\n/** Inferred type for layer or reference. */\nexport type LayerOrReference = z.infer<typeof LayerOrReferenceSchema>;\n","/**\n * @file Map block schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/map\n *\n * @description\n * Zod schemas for map configuration, controls, legends, and map blocks.\n *\n * @example\n * ```typescript\n * import { MapConfigSchema, MapBlockSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\nimport {\n LngLatSchema,\n LngLatBoundsSchema,\n ZoomLevelSchema,\n} from \"./base.schema\";\nimport { LayerOrReferenceSchema } from \"./layer.schema\";\n\n/**\n * Control position on the map.\n *\n * @remarks\n * Controls can be positioned in any of the four corners.\n */\nexport const ControlPositionSchema = z.enum([\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n]);\n\n/** Inferred type for control position. */\nexport type ControlPosition = z.infer<typeof ControlPositionSchema>;\n\n/**\n * Individual control configuration.\n *\n * @remarks\n * Can be a boolean (uses default position) or an object with position.\n */\nconst ControlConfigSchema = z.union([\n z.boolean(),\n z.object({\n enabled: z.boolean().describe(\"Whether control is enabled\"),\n position: ControlPositionSchema.optional().describe(\"Control position\"),\n }),\n]);\n\n/**\n * Map controls configuration.\n *\n * @remarks\n * Configure which controls are displayed and their positions.\n *\n * **Available Controls:**\n * - `navigation` - Zoom and rotation controls (default: top-right)\n * - `geolocate` - User geolocation (default: top-right)\n * - `scale` - Distance scale (default: bottom-left)\n * - `fullscreen` - Fullscreen toggle (default: top-right)\n * - `attribution` - Attribution text (default: bottom-right)\n *\n * @example Enable All Controls\n * ```yaml\n * controls:\n * navigation: true\n * geolocate: true\n * scale: true\n * fullscreen: true\n * ```\n *\n * @example Custom Positions\n * ```yaml\n * controls:\n * navigation:\n * enabled: true\n * position: top-left\n * scale:\n * enabled: true\n * position: bottom-right\n * ```\n */\nexport const ControlsConfigSchema = z\n .object({\n navigation: ControlConfigSchema.optional().describe(\n \"Navigation controls (zoom, rotation)\"\n ),\n geolocate: ControlConfigSchema.optional().describe(\"Geolocation control\"),\n scale: ControlConfigSchema.optional().describe(\"Scale control\"),\n fullscreen: ControlConfigSchema.optional().describe(\"Fullscreen control\"),\n attribution: ControlConfigSchema.optional().describe(\"Attribution control\"),\n })\n .describe(\"Map controls configuration\");\n\n/** Inferred type for controls config. */\nexport type ControlsConfig = z.infer<typeof ControlsConfigSchema>;\n\n/**\n * Legend configuration.\n *\n * @remarks\n * The legend displays layer information and can be positioned anywhere.\n * If `items` is not provided, legend items are automatically extracted\n * from layers with `legend` configuration.\n *\n * @example Automatic Legend\n * ```yaml\n * legend:\n * title: \"Map Legend\"\n * position: top-left\n * ```\n *\n * @example Custom Legend Items\n * ```yaml\n * legend:\n * title: \"Features\"\n * position: top-left\n * collapsed: false\n * items:\n * - color: \"#ff0000\"\n * label: \"High Priority\"\n * shape: circle\n * - color: \"#00ff00\"\n * label: \"Low Priority\"\n * shape: circle\n * ```\n */\nexport const LegendConfigSchema = z\n .object({\n position:\n ControlPositionSchema.default(\"top-left\").describe(\"Legend position\"),\n title: z.string().optional().describe(\"Legend title\"),\n collapsed: z.boolean().default(false).describe(\"Start collapsed\"),\n items: z\n .array(\n z.object({\n color: z.string().describe(\"Item color\"),\n label: z.string().describe(\"Item label\"),\n shape: z\n .enum([\"circle\", \"square\", \"line\", \"icon\"])\n .default(\"square\")\n .describe(\"Symbol shape\"),\n icon: z\n .string()\n .optional()\n .describe(\"Icon name/URL (for shape: icon)\"),\n })\n )\n .optional()\n .describe(\"Custom legend items (overrides layer legends)\"),\n })\n .describe(\"Legend configuration\");\n\n/** Inferred type for legend config. */\nexport type LegendConfig = z.infer<typeof LegendConfigSchema>;\n\n/**\n * Map configuration with MapLibre options.\n *\n * @remarks\n * Core map configuration including initial view, style, and interaction settings.\n * Uses `.passthrough()` to allow any MapLibre GL JS options.\n *\n * **Required:**\n * - `center` - Initial map center [lng, lat]\n * - `zoom` - Initial zoom level (0-24)\n * - `mapStyle` - MapLibre style URL or object\n *\n * **View Options:**\n * - `pitch` - Camera tilt angle (0-85)\n * - `bearing` - Camera rotation (0-360)\n * - `bounds` - Fit to bounds\n * - `minZoom`, `maxZoom` - Zoom constraints\n * - `minPitch`, `maxPitch` - Pitch constraints\n * - `maxBounds` - Geographic bounds constraint\n *\n * **Interaction:**\n * - `interactive` - Enable/disable all interactions\n * - `scrollZoom`, `boxZoom`, `dragRotate`, `dragPan` - Individual controls\n * - `keyboard`, `doubleClickZoom`, `touchZoomRotate`, `touchPitch`\n *\n * @example Basic Map\n * ```yaml\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @example 3D View\n * ```yaml\n * config:\n * center: [-122.4194, 37.7749]\n * zoom: 15\n * pitch: 60\n * bearing: 30\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @example Constrained Map\n * ```yaml\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * minZoom: 8\n * maxZoom: 18\n * maxBounds: [-74.3, 40.5, -73.7, 40.9]\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @example Non-Interactive Map\n * ```yaml\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * interactive: false\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @see {@link https://maplibre.org/maplibre-gl-js/docs/API/type-aliases/MapOptions/ | MapLibre Map Options}\n */\nexport const MapConfigSchema = z\n .object({\n // Required\n center: LngLatSchema.describe(\"Initial map center [longitude, latitude]\"),\n zoom: ZoomLevelSchema.describe(\"Initial zoom level (0-24)\"),\n mapStyle: z\n .union([z.string().url(), z.any()])\n .describe(\"MapLibre style URL or style object\"),\n\n // View\n pitch: z\n .number()\n .min(0)\n .max(85)\n .default(0)\n .describe(\"Camera pitch angle in degrees (0-85)\"),\n bearing: z\n .number()\n .min(-180)\n .max(180)\n .default(0)\n .describe(\"Camera bearing (rotation) in degrees (-180 to 180)\"),\n bounds: z\n .union([LngLatBoundsSchema, z.array(z.number())])\n .optional()\n .describe(\"Fit map to bounds\"),\n\n // Constraints\n minZoom: ZoomLevelSchema.optional().describe(\"Minimum zoom level\"),\n maxZoom: ZoomLevelSchema.optional().describe(\"Maximum zoom level\"),\n minPitch: z.number().min(0).max(85).optional().describe(\"Minimum pitch\"),\n maxPitch: z.number().min(0).max(85).optional().describe(\"Maximum pitch\"),\n maxBounds: LngLatBoundsSchema.optional().describe(\n \"Maximum geographic bounds\"\n ),\n\n // Interaction\n interactive: z.boolean().default(true).describe(\"Enable map interaction\"),\n scrollZoom: z.boolean().optional().describe(\"Enable scroll to zoom\"),\n boxZoom: z.boolean().optional().describe(\"Enable box zoom (shift+drag)\"),\n dragRotate: z.boolean().optional().describe(\"Enable drag to rotate\"),\n dragPan: z.boolean().optional().describe(\"Enable drag to pan\"),\n keyboard: z.boolean().optional().describe(\"Enable keyboard shortcuts\"),\n doubleClickZoom: z\n .boolean()\n .optional()\n .describe(\"Enable double-click zoom\"),\n touchZoomRotate: z\n .boolean()\n .optional()\n .describe(\"Enable touch zoom/rotate\"),\n touchPitch: z.boolean().optional().describe(\"Enable touch pitch\"),\n\n // Display\n hash: z.boolean().optional().describe(\"Sync map state with URL hash\"),\n attributionControl: z\n .boolean()\n .optional()\n .describe(\"Show attribution control\"),\n logoPosition: ControlPositionSchema.optional().describe(\n \"MapLibre logo position\"\n ),\n fadeDuration: z\n .number()\n .optional()\n .describe(\"Fade duration in milliseconds\"),\n crossSourceCollisions: z\n .boolean()\n .optional()\n .describe(\"Check for cross-source collisions\"),\n\n // Rendering\n antialias: z.boolean().optional().describe(\"Enable antialiasing\"),\n refreshExpiredTiles: z\n .boolean()\n .optional()\n .describe(\"Refresh expired tiles\"),\n renderWorldCopies: z\n .boolean()\n .optional()\n .describe(\"Render multiple world copies\"),\n locale: z.record(z.string()).optional().describe(\"Localization strings\"),\n\n // Performance\n maxTileCacheSize: z.number().optional().describe(\"Maximum tiles to cache\"),\n localIdeographFontFamily: z\n .string()\n .optional()\n .describe(\"Font for CJK characters\"),\n trackResize: z.boolean().optional().describe(\"Track container resize\"),\n preserveDrawingBuffer: z\n .boolean()\n .optional()\n .describe(\"Preserve drawing buffer\"),\n failIfMajorPerformanceCaveat: z\n .boolean()\n .optional()\n .describe(\"Fail if major performance caveat\"),\n })\n .passthrough()\n .describe(\"Map configuration with MapLibre options\");\n\n/** Inferred type for map config. */\nexport type MapConfig = z.infer<typeof MapConfigSchema>;\n\n/**\n * Standard map block.\n *\n * @remarks\n * Creates a map within a page layout. Can be sized using CSS via\n * `className` and `style` properties.\n *\n * @example Basic Map Block\n * ```yaml\n * - type: map\n * id: main-map\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers:\n * - id: points\n * type: circle\n * source:\n * type: geojson\n * url: \"https://example.com/points.geojson\"\n * paint:\n * circle-radius: 8\n * circle-color: \"#ff0000\"\n * ```\n *\n * @example Map with Controls and Legend\n * ```yaml\n * - type: map\n * id: interactive-map\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers:\n * - $ref: \"#/layers/bikeLayer\"\n * - $ref: \"#/layers/parkLayer\"\n * controls:\n * navigation: true\n * scale: true\n * legend:\n * title: \"Map Features\"\n * position: top-left\n * ```\n *\n * @example Sized Map\n * ```yaml\n * - type: map\n * id: small-map\n * className: \"map-container\"\n * style: \"height: 400px; width: 100%;\"\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n */\nexport const MapBlockSchema: z.ZodObject<any> = z\n .object({\n type: z.literal(\"map\").describe(\"Block type\"),\n id: z.string().describe(\"Unique block identifier\"),\n className: z.string().optional().describe(\"CSS class name for container\"),\n style: z.string().optional().describe(\"Inline CSS styles for container\"),\n config: MapConfigSchema.describe(\"Map configuration\"),\n layers: z.array(LayerOrReferenceSchema).default([]).describe(\"Map layers\"),\n controls: ControlsConfigSchema.optional().describe(\"Map controls\"),\n legend: LegendConfigSchema.optional().describe(\"Legend configuration\"),\n })\n .describe(\"Standard map block\");\n\n/** Inferred type for map block. */\nexport type MapBlock = z.infer<typeof MapBlockSchema>;\n\n/**\n * Full-page map block.\n *\n * @remarks\n * Creates a map that fills the entire viewport. Automatically handles\n * viewport sizing and positioning. Ideal for map-focused pages.\n *\n * @example Full-Page Map\n * ```yaml\n * - type: map-fullpage\n * id: fullpage-map\n * config:\n * center: [-122.4194, 37.7749]\n * zoom: 13\n * pitch: 45\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers:\n * - id: buildings\n * type: fill-extrusion\n * source:\n * type: vector\n * url: \"https://example.com/buildings.json\"\n * source-layer: buildings\n * paint:\n * fill-extrusion-color: \"#aaa\"\n * fill-extrusion-height: [\"get\", \"height\"]\n * controls:\n * navigation: true\n * fullscreen: true\n * ```\n */\nexport const MapFullPageBlockSchema: z.ZodObject<any> = z\n .object({\n type: z.literal(\"map-fullpage\").describe(\"Block type\"),\n id: z.string().describe(\"Unique block identifier\"),\n className: z.string().optional().describe(\"CSS class name for container\"),\n style: z.string().optional().describe(\"Inline CSS styles for container\"),\n config: MapConfigSchema.describe(\"Map configuration\"),\n layers: z.array(LayerOrReferenceSchema).default([]).describe(\"Map layers\"),\n controls: ControlsConfigSchema.optional().describe(\"Map controls\"),\n legend: LegendConfigSchema.optional().describe(\"Legend configuration\"),\n })\n .describe(\"Full-page map block\");\n\n/** Inferred type for full-page map block. */\nexport type MapFullPageBlock = z.infer<typeof MapFullPageBlockSchema>;\n","/**\n * @file Scrollytelling schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/scrollytelling\n *\n * @description\n * Zod schemas for narrative scrollytelling maps with chapters, animations,\n * and layer transitions.\n *\n * @example\n * ```typescript\n * import { ScrollytellingBlockSchema, ChapterSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\nimport { LngLatSchema, ExpressionSchema } from \"./base.schema\";\nimport { MapConfigSchema } from \"./map.schema\";\nimport { LayerOrReferenceSchema } from \"./layer.schema\";\n\n/**\n * Chapter action for map state changes.\n *\n * @remarks\n * Actions are triggered when entering or exiting a chapter.\n * They can modify layer properties, filters, or trigger animations.\n *\n * **Action Types:**\n * - `setFilter` - Update layer filter\n * - `setPaintProperty` - Update layer paint property\n * - `setLayoutProperty` - Update layer layout property\n * - `flyTo` - Fly to location (handled by chapter config)\n * - `easeTo` - Ease to location (handled by chapter config)\n * - `fitBounds` - Fit to bounds\n * - `custom` - Custom action (handled by application)\n *\n * @example Set Filter\n * ```yaml\n * onChapterEnter:\n * - action: setFilter\n * layer: earthquakes\n * filter: [\">=\", [\"get\", \"magnitude\"], 5]\n * ```\n *\n * @example Set Paint Property\n * ```yaml\n * onChapterEnter:\n * - action: setPaintProperty\n * layer: buildings\n * property: fill-extrusion-height\n * value: [\"get\", \"height\"]\n * ```\n *\n * @example Fit Bounds\n * ```yaml\n * onChapterEnter:\n * - action: fitBounds\n * bounds: [-74.3, 40.5, -73.7, 40.9]\n * options:\n * padding: 50\n * duration: 1000\n * ```\n */\nexport const ChapterActionSchema = z\n .object({\n action: z\n .enum([\n \"setFilter\",\n \"setPaintProperty\",\n \"setLayoutProperty\",\n \"flyTo\",\n \"easeTo\",\n \"fitBounds\",\n \"custom\",\n ])\n .describe(\"Action type\"),\n layer: z.string().optional().describe(\"Target layer ID\"),\n property: z\n .string()\n .optional()\n .describe(\"Property name (for setPaintProperty/setLayoutProperty)\"),\n value: z.any().optional().describe(\"Property value\"),\n filter: ExpressionSchema.nullable()\n .optional()\n .describe(\"Filter expression (for setFilter, null to clear)\"),\n bounds: z\n .array(z.number())\n .optional()\n .describe(\"Bounds array (for fitBounds)\"),\n options: z.record(z.any()).optional().describe(\"Additional options\"),\n })\n .describe(\"Chapter action for map state changes\");\n\n/** Inferred type for chapter action. */\nexport type ChapterAction = z.infer<typeof ChapterActionSchema>;\n\n/**\n * Chapter layer visibility configuration.\n *\n * @remarks\n * Controls which layers are visible during this chapter.\n *\n * @example\n * ```yaml\n * layers:\n * show:\n * - earthquakes\n * - fault-lines\n * hide:\n * - buildings\n * ```\n */\nexport const ChapterLayersSchema = z\n .object({\n show: z.array(z.string()).default([]).describe(\"Layer IDs to show\"),\n hide: z.array(z.string()).default([]).describe(\"Layer IDs to hide\"),\n })\n .describe(\"Chapter layer visibility configuration\");\n\n/** Inferred type for chapter layers. */\nexport type ChapterLayers = z.infer<typeof ChapterLayersSchema>;\n\n/**\n * Scrollytelling chapter.\n *\n * @remarks\n * A chapter represents one section of the scrollytelling narrative.\n * As the user scrolls, the map transitions between chapters with\n * camera animations and layer changes.\n *\n * **Required:**\n * - `id` - Unique chapter identifier\n * - `title` - Chapter title\n * - `center` - Map center for this chapter\n * - `zoom` - Zoom level for this chapter\n *\n * **Content:**\n * - `description` - HTML description (supports markdown)\n * - `image` - Hero image URL\n * - `video` - Video URL\n *\n * **Camera:**\n * - `pitch` - Camera tilt (0-85)\n * - `bearing` - Camera rotation (-180 to 180)\n * - `animation` - Animation type (flyTo, easeTo, jumpTo)\n * - `speed`, `curve` - Animation parameters\n *\n * **Layout:**\n * - `alignment` - Content position (left, right, center, full)\n * - `hidden` - Hide chapter content (map-only)\n *\n * **Interactivity:**\n * - `layers` - Show/hide layers\n * - `onChapterEnter`, `onChapterExit` - Actions\n *\n * @example Basic Chapter\n * ```yaml\n * - id: intro\n * title: \"Welcome\"\n * description: \"This is the introduction.\"\n * center: [-74.006, 40.7128]\n * zoom: 12\n * ```\n *\n * @example Chapter with 3D View\n * ```yaml\n * - id: downtown\n * title: \"Downtown\"\n * description: \"Explore the city center in 3D.\"\n * center: [-74.006, 40.7128]\n * zoom: 16\n * pitch: 60\n * bearing: 30\n * ```\n *\n * @example Chapter with Media\n * ```yaml\n * - id: overview\n * title: \"City Overview\"\n * description: \"A bird's eye view of the city.\"\n * image: \"https://example.com/overview.jpg\"\n * center: [-74.006, 40.7128]\n * zoom: 10\n * ```\n *\n * @example Chapter with Layer Control\n * ```yaml\n * - id: earthquakes\n * title: \"Recent Earthquakes\"\n * description: \"Major earthquakes in the last month.\"\n * center: [-120, 35]\n * zoom: 6\n * layers:\n * show:\n * - earthquakes\n * - fault-lines\n * hide:\n * - cities\n * ```\n *\n * @example Chapter with Actions\n * ```yaml\n * - id: filtered\n * title: \"High Magnitude Events\"\n * center: [-120, 35]\n * zoom: 6\n * onChapterEnter:\n * - action: setFilter\n * layer: earthquakes\n * filter: [\">=\", [\"get\", \"magnitude\"], 5]\n * onChapterExit:\n * - action: setFilter\n * layer: earthquakes\n * filter: null\n * ```\n *\n * @example Full-Width Chapter\n * ```yaml\n * - id: fullwidth\n * title: \"Immersive View\"\n * alignment: full\n * center: [-74.006, 40.7128]\n * zoom: 14\n * pitch: 45\n * ```\n */\nexport const ChapterSchema = z\n .object({\n // Required\n id: z.string().describe(\"Unique chapter identifier\"),\n title: z.string().describe(\"Chapter title\"),\n center: LngLatSchema.describe(\"Map center [longitude, latitude]\"),\n zoom: z.number().describe(\"Zoom level\"),\n\n // Content\n description: z\n .string()\n .optional()\n .describe(\"Chapter description (HTML/markdown supported)\"),\n image: z.string().url().optional().describe(\"Hero image URL\"),\n video: z.string().url().optional().describe(\"Video URL\"),\n\n // Camera\n pitch: z\n .number()\n .min(0)\n .max(85)\n .default(0)\n .describe(\"Camera pitch angle (0-85)\"),\n bearing: z\n .number()\n .min(-180)\n .max(180)\n .default(0)\n .describe(\"Camera bearing (-180 to 180)\"),\n speed: z\n .number()\n .min(0)\n .max(2)\n .default(0.6)\n .describe(\"Animation speed multiplier (0-2)\"),\n curve: z\n .number()\n .min(0)\n .max(2)\n .default(1)\n .describe(\"Animation curve (0=linear, 1=default, 2=steep)\"),\n animation: z\n .enum([\"flyTo\", \"easeTo\", \"jumpTo\"])\n .default(\"flyTo\")\n .describe(\"Animation type\"),\n\n // Rotation animation\n rotateAnimation: z\n .boolean()\n .optional()\n .describe(\"Enable continuous rotation animation\"),\n spinGlobe: z\n .boolean()\n .optional()\n .describe(\"Spin globe animation (for low zoom levels)\"),\n\n // Layout\n alignment: z\n .enum([\"left\", \"right\", \"center\", \"full\"])\n .default(\"center\")\n .describe(\"Content alignment\"),\n hidden: z\n .boolean()\n .default(false)\n .describe(\"Hide chapter content (map-only)\"),\n\n // Layers\n layers: ChapterLayersSchema.optional().describe(\"Layer visibility control\"),\n\n // Actions\n onChapterEnter: z\n .array(ChapterActionSchema)\n .default([])\n .describe(\"Actions when entering chapter\"),\n onChapterExit: z\n .array(ChapterActionSchema)\n .default([])\n .describe(\"Actions when exiting chapter\"),\n\n // Custom\n callback: z.string().optional().describe(\"Custom callback function name\"),\n })\n .describe(\"Scrollytelling chapter\");\n\n/** Inferred type for chapter. */\nexport type Chapter = z.infer<typeof ChapterSchema>;\n\n/**\n * Scrollytelling block for narrative map stories.\n *\n * @remarks\n * Creates an immersive scrollytelling experience where the map\n * transitions between chapters as the user scrolls through content.\n *\n * **Features:**\n * - Smooth camera transitions\n * - Layer show/hide animations\n * - Dynamic property updates\n * - Chapter-based narrative structure\n * - Customizable themes and markers\n *\n * **Structure:**\n * 1. Base map configuration (persistent)\n * 2. Persistent layers (visible throughout)\n * 3. Chapters (individual story sections)\n * 4. Optional footer\n *\n * @example Basic Scrollytelling\n * ```yaml\n * - type: scrollytelling\n * id: story\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * chapters:\n * - id: intro\n * title: \"Introduction\"\n * description: \"Welcome to our story.\"\n * center: [-74.006, 40.7128]\n * zoom: 12\n * - id: detail\n * title: \"A Closer Look\"\n * description: \"Let's zoom in.\"\n * center: [-74.006, 40.7128]\n * zoom: 16\n * ```\n *\n * @example Themed Scrollytelling\n * ```yaml\n * - type: scrollytelling\n * id: dark-story\n * theme: dark\n * showMarkers: true\n * markerColor: \"#ff0000\"\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * chapters:\n * - id: chapter1\n * title: \"Chapter 1\"\n * center: [0, 0]\n * zoom: 3\n * ```\n *\n * @example With Persistent Layers\n * ```yaml\n * - type: scrollytelling\n * id: earthquake-story\n * config:\n * center: [-120, 35]\n * zoom: 5\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers:\n * - id: base-layer\n * type: circle\n * source:\n * type: geojson\n * url: \"https://example.com/data.geojson\"\n * paint:\n * circle-radius: 6\n * circle-color: \"#888888\"\n * chapters:\n * - id: overview\n * title: \"Overview\"\n * center: [-120, 35]\n * zoom: 5\n * - id: detail\n * title: \"Major Event\"\n * center: [-118, 34]\n * zoom: 10\n * layers:\n * show:\n * - base-layer\n * ```\n *\n * @example With Footer\n * ```yaml\n * - type: scrollytelling\n * id: story\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * chapters:\n * - id: chapter1\n * title: \"Chapter 1\"\n * center: [0, 0]\n * zoom: 3\n * footer: |\n * <p>Data sources: ...</p>\n * <p>Created with maplibre-yaml</p>\n * ```\n */\nexport const ScrollytellingBlockSchema: z.ZodObject<any> = z\n .object({\n type: z.literal(\"scrollytelling\").describe(\"Block type\"),\n id: z.string().describe(\"Unique block identifier\"),\n className: z.string().optional().describe(\"CSS class name for container\"),\n style: z.string().optional().describe(\"Inline CSS styles for container\"),\n\n // Base config\n config: MapConfigSchema.describe(\"Base map configuration\"),\n\n // Theme\n theme: z.enum([\"light\", \"dark\"]).default(\"light\").describe(\"Visual theme\"),\n\n // Markers\n showMarkers: z\n .boolean()\n .default(false)\n .describe(\"Show chapter markers on map\"),\n markerColor: z.string().default(\"#3FB1CE\").describe(\"Chapter marker color\"),\n\n // Layers (persistent across all chapters)\n layers: z\n .array(LayerOrReferenceSchema)\n .default([])\n .describe(\"Persistent layers (visible throughout story)\"),\n\n // Chapters\n chapters: z\n .array(ChapterSchema)\n .min(1, \"At least one chapter is required for scrollytelling\")\n .describe(\"Story chapters\"),\n\n // Footer\n footer: z.string().optional().describe(\"Footer content (HTML)\"),\n })\n .describe(\"Scrollytelling block for narrative map stories\");\n\n/** Inferred type for scrollytelling block. */\nexport type ScrollytellingBlock = z.infer<typeof ScrollytellingBlockSchema>;\n","/**\n * @file Page and root configuration schemas for maplibre-yaml\n * @module @maplibre-yaml/core/schemas/page\n *\n * @description\n * Zod schemas for pages, global configuration, and the root schema.\n * Includes recursive MixedBlock for complex layouts.\n *\n * @example\n * ```typescript\n * import { RootSchema, PageSchema } from '@maplibre-yaml/core/schemas';\n * ```\n */\n\nimport { z } from \"zod\";\nimport { ContentBlockSchema } from \"./content.schema\";\nimport { MapBlockSchema, MapFullPageBlockSchema } from \"./map.schema\";\nimport { ScrollytellingBlockSchema } from \"./scrollytelling.schema\";\nimport { LayerSchema } from \"./layer.schema\";\nimport { LayerSourceSchema } from \"./source.schema\";\n/**\n * Mixed block for combining multiple block types.\n *\n * @remarks\n * MixedBlock allows you to create complex layouts by combining\n * content, map, and scrollytelling blocks. Uses z.lazy() for recursion.\n *\n * **Layout Options:**\n * - `row` - Horizontal layout (default)\n * - `column` - Vertical layout\n * - `grid` - CSS Grid layout\n *\n * @example Row Layout\n * ```yaml\n * - type: mixed\n * layout: row\n * blocks:\n * - type: content\n * content:\n * - h2: [{ str: \"Left Column\" }]\n * - type: map\n * id: side-map\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"...\"\n * ```\n *\n * @example Grid Layout\n * ```yaml\n * - type: mixed\n * layout: grid\n * style: \"grid-template-columns: repeat(2, 1fr); gap: 20px;\"\n * blocks:\n * - type: content\n * content: [...]\n * - type: content\n * content: [...]\n * - type: map\n * id: map1\n * config: {...}\n * - type: map\n * id: map2\n * config: {...}\n * ```\n *\n * @example Nested Mixed Blocks\n * ```yaml\n * - type: mixed\n * layout: column\n * blocks:\n * - type: content\n * content: [...]\n * - type: mixed\n * layout: row\n * blocks:\n * - type: map\n * id: left-map\n * config: {...}\n * - type: map\n * id: right-map\n * config: {...}\n * ```\n */\nexport const MixedBlockSchema: z.ZodType<any> = z.lazy(() =>\n z\n .object({\n type: z.literal(\"mixed\").describe(\"Block type\"),\n id: z.string().optional().describe(\"Unique block identifier\"),\n className: z.string().optional().describe(\"CSS class name for container\"),\n style: z.string().optional().describe(\"Inline CSS styles for container\"),\n layout: z\n .enum([\"row\", \"column\", \"grid\"])\n .default(\"row\")\n .describe(\"Layout direction\"),\n gap: z\n .string()\n .optional()\n .describe(\"Gap between blocks (CSS gap property)\"),\n blocks: z.array(BlockSchema).describe(\"Child blocks\"),\n })\n .describe(\"Mixed block for combining multiple block types\")\n);\n\n/** Inferred type for mixed block. */\nexport type MixedBlock = {\n type: \"mixed\";\n id?: string;\n className?: string;\n style?: string;\n layout?: \"row\" | \"column\" | \"grid\";\n gap?: string;\n blocks: Block[];\n};\n\n/**\n * Union of all block types.\n *\n * @remarks\n * Blocks are the building blocks of pages. Each page contains an\n * array of blocks that are rendered in order.\n *\n * **Block Types:**\n * - `content` - Rich text and media\n * - `map` - Standard map\n * - `map-fullpage` - Full viewport map\n * - `scrollytelling` - Narrative map story\n * - `mixed` - Layout container for other blocks\n */\nexport const BlockSchema: z.ZodType<any> = z.union([\n ContentBlockSchema,\n MapBlockSchema,\n MapFullPageBlockSchema,\n ScrollytellingBlockSchema,\n MixedBlockSchema,\n]);\n\n/** Inferred type for any block. */\nexport type Block = z.infer<typeof BlockSchema>;\n\n/**\n * Page configuration.\n *\n * @remarks\n * A page represents a single route/URL in your application.\n * Pages contain blocks that define the content and maps.\n *\n * **Required:**\n * - `path` - URL path (e.g., \"/\", \"/about\", \"/map\")\n * - `title` - Page title (used for browser tab and SEO)\n * - `blocks` - Array of content/map blocks\n *\n * **Optional:**\n * - `description` - Meta description for SEO\n *\n * @example Home Page\n * ```yaml\n * - path: \"/\"\n * title: \"Home\"\n * description: \"Welcome to our mapping application\"\n * blocks:\n * - type: content\n * content:\n * - h1: [{ str: \"Welcome\" }]\n * - type: map\n * id: home-map\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"...\"\n * ```\n *\n * @example Story Page\n * ```yaml\n * - path: \"/story\"\n * title: \"Our Story\"\n * description: \"An interactive map story\"\n * blocks:\n * - type: scrollytelling\n * id: main-story\n * config: {...}\n * chapters: [...]\n * ```\n *\n * @example Complex Layout\n * ```yaml\n * - path: \"/dashboard\"\n * title: \"Dashboard\"\n * blocks:\n * - type: content\n * content:\n * - h1: [{ str: \"Dashboard\" }]\n * - type: mixed\n * layout: row\n * blocks:\n * - type: map\n * id: map1\n * config: {...}\n * - type: map\n * id: map2\n * config: {...}\n * ```\n */\nexport const PageSchema = z\n .object({\n path: z.string().describe('URL path (e.g., \"/\", \"/about\")'),\n title: z.string().describe(\"Page title\"),\n description: z.string().optional().describe(\"Page description for SEO\"),\n blocks: z.array(BlockSchema).describe(\"Page content blocks\"),\n })\n .describe(\"Page configuration\");\n\n/** Inferred type for page. */\nexport type Page = z.infer<typeof PageSchema>;\n\n/**\n * Global configuration.\n *\n * @remarks\n * Global settings that apply across all pages.\n *\n * **General:**\n * - `title` - Application title\n * - `description` - Application description\n * - `defaultMapStyle` - Default map style for all maps\n * - `theme` - Default theme (light/dark)\n *\n * **Data Fetching:**\n * - `defaultStrategy` - Default fetch strategy (runtime, build, hybrid)\n * - `timeout` - Default fetch timeout\n * - `retryAttempts` - Default retry attempts\n *\n * @example Basic Config\n * ```yaml\n * config:\n * title: \"My Map App\"\n * description: \"Interactive maps and stories\"\n * defaultMapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @example With Data Fetching\n * ```yaml\n * config:\n * title: \"My Map App\"\n * defaultMapStyle: \"https://demotiles.maplibre.org/style.json\"\n * theme: dark\n * dataFetching:\n * defaultStrategy: build\n * timeout: 15000\n * retryAttempts: 5\n * ```\n */\nexport const GlobalConfigSchema = z\n .object({\n title: z.string().optional().describe(\"Application title\"),\n description: z.string().optional().describe(\"Application description\"),\n defaultMapStyle: z\n .string()\n .url()\n .optional()\n .describe(\"Default map style URL\"),\n theme: z.enum([\"light\", \"dark\"]).default(\"light\").describe(\"Default theme\"),\n dataFetching: z\n .object({\n defaultStrategy: z\n .enum([\"runtime\", \"build\", \"hybrid\"])\n .default(\"runtime\")\n .describe(\"Default fetch strategy\"),\n timeout: z\n .number()\n .min(1000)\n .default(30000)\n .describe(\"Default timeout in milliseconds\"),\n retryAttempts: z\n .number()\n .int()\n .min(0)\n .default(3)\n .describe(\"Default retry attempts\"),\n })\n .optional()\n .describe(\"Data fetching configuration\"),\n })\n .describe(\"Global configuration\");\n\n/** Inferred type for global config. */\nexport type GlobalConfig = z.infer<typeof GlobalConfigSchema>;\n\n/**\n * Root configuration schema.\n *\n * @remarks\n * The root schema represents the entire maplibre-yaml configuration.\n * This is the top-level structure for YAML files.\n *\n * **Structure:**\n * 1. `config` - Global settings (optional)\n * 2. `layers` - Named layer definitions for reuse (optional)\n * 3. `sources` - Named source definitions for reuse (optional)\n * 4. `pages` - Page definitions (required, minimum 1)\n *\n * **Global Layers and Sources:**\n * Define layers and sources once, reference them anywhere using `$ref`.\n *\n * @example Minimal Configuration\n * ```yaml\n * pages:\n * - path: \"/\"\n * title: \"Home\"\n * blocks:\n * - type: map\n * id: main-map\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * ```\n *\n * @example With Global Config\n * ```yaml\n * config:\n * title: \"My App\"\n * defaultMapStyle: \"https://demotiles.maplibre.org/style.json\"\n *\n * pages:\n * - path: \"/\"\n * title: \"Home\"\n * blocks:\n * - type: map\n * id: main-map\n * config:\n * center: [0, 0]\n * zoom: 2\n * ```\n *\n * @example With Global Layers\n * ```yaml\n * config:\n * defaultMapStyle: \"https://demotiles.maplibre.org/style.json\"\n *\n * layers:\n * bikeLayer:\n * id: bikes\n * type: line\n * source:\n * type: geojson\n * url: \"https://example.com/bikes.geojson\"\n * paint:\n * line-color: \"#00ff00\"\n * line-width: 2\n *\n * parkLayer:\n * id: parks\n * type: fill\n * source:\n * type: geojson\n * url: \"https://example.com/parks.geojson\"\n * paint:\n * fill-color: \"#228B22\"\n * fill-opacity: 0.5\n *\n * pages:\n * - path: \"/\"\n * title: \"Home\"\n * blocks:\n * - type: map\n * id: main-map\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * layers:\n * - $ref: \"#/layers/bikeLayer\"\n * - $ref: \"#/layers/parkLayer\"\n * ```\n *\n * @example With Global Sources\n * ```yaml\n * sources:\n * earthquakeSource:\n * type: geojson\n * url: \"https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson\"\n * refreshInterval: 60000\n *\n * layers:\n * earthquakes:\n * id: earthquakes\n * type: circle\n * source: earthquakeSource\n * paint:\n * circle-radius: 8\n * circle-color: \"#ff0000\"\n *\n * pages:\n * - path: \"/\"\n * title: \"Earthquakes\"\n * blocks:\n * - type: map\n * id: quake-map\n * config:\n * center: [0, 0]\n * zoom: 2\n * mapStyle: \"...\"\n * layers:\n * - $ref: \"#/layers/earthquakes\"\n * ```\n *\n * @example Multi-Page Application\n * ```yaml\n * config:\n * title: \"Multi-Page Map App\"\n * defaultMapStyle: \"https://demotiles.maplibre.org/style.json\"\n *\n * pages:\n * - path: \"/\"\n * title: \"Home\"\n * blocks:\n * - type: content\n * content:\n * - h1: [{ str: \"Welcome\" }]\n *\n * - path: \"/map\"\n * title: \"Interactive Map\"\n * blocks:\n * - type: map\n * id: main-map\n * config:\n * center: [0, 0]\n * zoom: 2\n *\n * - path: \"/story\"\n * title: \"Our Story\"\n * blocks:\n * - type: scrollytelling\n * id: story\n * config:\n * center: [0, 0]\n * zoom: 2\n * chapters:\n * - id: intro\n * title: \"Introduction\"\n * center: [0, 0]\n * zoom: 3\n * ```\n */\nexport const RootSchema: z.ZodType<any> = z\n .object({\n config: GlobalConfigSchema.optional().describe(\"Global configuration\"),\n layers: z\n .record(LayerSchema)\n .optional()\n .describe(\"Named layer definitions for reuse\"),\n sources: z\n .record(LayerSourceSchema)\n .optional()\n .describe(\"Named source definitions for reuse\"),\n pages: z\n .array(PageSchema)\n .min(1, \"At least one page is required\")\n .describe(\"Page definitions\"),\n })\n .describe(\"Root configuration schema\");\n\n/** Inferred type for root configuration. */\nexport type RootConfig = z.infer<typeof RootSchema>;\n","/**\n * @file TTL-based in-memory cache for fetched data\n * @module @maplibre-yaml/core/data\n */\n\n/**\n * Configuration options for MemoryCache\n */\nexport interface CacheConfig {\n /**\n * Maximum number of entries to store\n * @default 100\n */\n maxSize: number;\n\n /**\n * Default time-to-live in milliseconds\n * @default 300000 (5 minutes)\n */\n defaultTTL: number;\n\n /**\n * Whether to use conditional requests with ETag/Last-Modified headers\n * @default true\n */\n useConditionalRequests: boolean;\n}\n\n/**\n * Cache entry containing data and metadata\n */\nexport interface CacheEntry<T = unknown> {\n /** Cached data */\n data: T;\n\n /** Timestamp when cached (milliseconds) */\n timestamp: number;\n\n /** Time-to-live for this entry in milliseconds (overrides default) */\n ttl?: number;\n\n /** ETag header from HTTP response */\n etag?: string;\n\n /** Last-Modified header from HTTP response */\n lastModified?: string;\n}\n\n/**\n * Cache statistics\n */\nexport interface CacheStats {\n /** Number of entries currently in cache */\n size: number;\n\n /** Total number of cache hits */\n hits: number;\n\n /** Total number of cache misses */\n misses: number;\n\n /** Hit rate as percentage (0-100) */\n hitRate: number;\n}\n\n/**\n * TTL-based in-memory cache with LRU eviction.\n *\n * @remarks\n * Features:\n * - LRU (Least Recently Used) eviction when at capacity\n * - Respects HTTP cache headers (ETag, Last-Modified)\n * - Configurable per-entry TTL\n * - Support for conditional requests (If-None-Match, If-Modified-Since)\n * - Automatic expiration checking on get operations\n *\n * @example\n * ```typescript\n * const cache = new MemoryCache<GeoJSON.FeatureCollection>({\n * maxSize: 100,\n * defaultTTL: 300000, // 5 minutes\n * });\n *\n * // Store data with ETag\n * cache.set('https://example.com/data.json', {\n * data: geojsonData,\n * timestamp: Date.now(),\n * etag: '\"abc123\"',\n * });\n *\n * // Retrieve (returns null if expired or missing)\n * const entry = cache.get('https://example.com/data.json');\n * if (entry) {\n * console.log('Cache hit:', entry.data);\n * }\n *\n * // Get conditional headers for HTTP request\n * const headers = cache.getConditionalHeaders('https://example.com/data.json');\n * // headers = { 'If-None-Match': '\"abc123\"' }\n * ```\n *\n * @typeParam T - Type of cached data\n */\nexport class MemoryCache<T = unknown> {\n private static readonly DEFAULT_CONFIG: CacheConfig = {\n maxSize: 100,\n defaultTTL: 300000, // 5 minutes\n useConditionalRequests: true,\n };\n\n private config: CacheConfig;\n private cache = new Map<string, CacheEntry<T>>();\n private accessOrder: string[] = [];\n private stats = { hits: 0, misses: 0 };\n\n /**\n * Create a new MemoryCache instance\n *\n * @param config - Cache configuration options\n */\n constructor(config?: Partial<CacheConfig>) {\n this.config = { ...MemoryCache.DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Retrieve a cache entry\n *\n * @remarks\n * - Returns null if key doesn't exist\n * - Returns null if entry has expired (and removes it)\n * - Updates access order for LRU\n * - Updates cache statistics\n *\n * @param key - Cache key (typically a URL)\n * @returns Cache entry or null if not found/expired\n */\n get(key: string): CacheEntry<T> | null {\n const entry = this.cache.get(key);\n\n if (!entry) {\n this.stats.misses++;\n return null;\n }\n\n const ttl = entry.ttl ?? this.config.defaultTTL;\n const age = Date.now() - entry.timestamp;\n\n if (age > ttl) {\n this.cache.delete(key);\n this.removeFromAccessOrder(key);\n this.stats.misses++;\n return null;\n }\n\n this.updateAccessOrder(key);\n this.stats.hits++;\n return entry;\n }\n\n /**\n * Check if a key exists in cache (without checking expiration)\n *\n * @param key - Cache key\n * @returns True if key exists in cache\n */\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n /**\n * Store a cache entry\n *\n * @remarks\n * - Evicts least recently used entries if at capacity\n * - Updates access order\n *\n * @param key - Cache key (typically a URL)\n * @param entry - Cache entry to store\n */\n set(key: string, entry: CacheEntry<T>): void {\n // Evict oldest entries if at capacity\n while (this.cache.size >= this.config.maxSize && !this.cache.has(key)) {\n const oldest = this.accessOrder.shift();\n if (oldest) {\n this.cache.delete(oldest);\n }\n }\n\n this.cache.set(key, entry);\n this.updateAccessOrder(key);\n }\n\n /**\n * Delete a cache entry\n *\n * @param key - Cache key\n * @returns True if entry was deleted, false if it didn't exist\n */\n delete(key: string): boolean {\n const existed = this.cache.delete(key);\n if (existed) {\n this.removeFromAccessOrder(key);\n }\n return existed;\n }\n\n /**\n * Clear all cache entries and reset statistics\n */\n clear(): void {\n this.cache.clear();\n this.accessOrder = [];\n this.stats = { hits: 0, misses: 0 };\n }\n\n /**\n * Remove expired entries from cache\n *\n * @remarks\n * Iterates through all entries and removes those that have exceeded their TTL.\n * This is useful for periodic cleanup.\n *\n * @returns Number of entries removed\n */\n prune(): number {\n let removed = 0;\n const now = Date.now();\n\n for (const [key, entry] of this.cache.entries()) {\n const ttl = entry.ttl ?? this.config.defaultTTL;\n const age = now - entry.timestamp;\n\n if (age > ttl) {\n this.cache.delete(key);\n this.removeFromAccessOrder(key);\n removed++;\n }\n }\n\n return removed;\n }\n\n /**\n * Get cache statistics\n *\n * @returns Current cache statistics including hit rate\n */\n getStats(): CacheStats {\n const total = this.stats.hits + this.stats.misses;\n const hitRate = total > 0 ? (this.stats.hits / total) * 100 : 0;\n\n return {\n size: this.cache.size,\n hits: this.stats.hits,\n misses: this.stats.misses,\n hitRate: Math.round(hitRate * 100) / 100, // Round to 2 decimal places\n };\n }\n\n /**\n * Get conditional request headers for HTTP caching\n *\n * @remarks\n * Returns appropriate If-None-Match and/or If-Modified-Since headers\n * based on cached entry metadata. Returns empty object if:\n * - Key doesn't exist in cache\n * - Entry has expired\n * - useConditionalRequests is false\n *\n * @param key - Cache key\n * @returns Object with conditional headers (may be empty)\n *\n * @example\n * ```typescript\n * const headers = cache.getConditionalHeaders(url);\n * const response = await fetch(url, { headers });\n * if (response.status === 304) {\n * // Use cached data\n * }\n * ```\n */\n getConditionalHeaders(key: string): Record<string, string> {\n if (!this.config.useConditionalRequests) {\n return {};\n }\n\n const entry = this.get(key);\n if (!entry) {\n return {};\n }\n\n const headers: Record<string, string> = {};\n\n if (entry.etag) {\n headers[\"If-None-Match\"] = entry.etag;\n }\n\n if (entry.lastModified) {\n headers[\"If-Modified-Since\"] = entry.lastModified;\n }\n\n return headers;\n }\n\n /**\n * Update the last access time for an entry\n *\n * @remarks\n * Useful for keeping an entry \"fresh\" without modifying its data.\n * Updates the access order for LRU.\n *\n * @param key - Cache key\n */\n touch(key: string): void {\n if (this.cache.has(key)) {\n this.updateAccessOrder(key);\n }\n }\n\n /**\n * Update access order for LRU tracking\n *\n * @param key - Cache key\n */\n private updateAccessOrder(key: string): void {\n // Remove from current position\n this.removeFromAccessOrder(key);\n // Add to end (most recently used)\n this.accessOrder.push(key);\n }\n\n /**\n * Remove a key from access order array\n *\n * @param key - Cache key\n */\n private removeFromAccessOrder(key: string): void {\n const index = this.accessOrder.indexOf(key);\n if (index !== -1) {\n this.accessOrder.splice(index, 1);\n }\n }\n}\n","/**\n * @file Exponential backoff retry manager\n * @module @maplibre-yaml/core/data\n */\n\n/**\n * Configuration options for retry behavior\n */\nexport interface RetryConfig {\n /**\n * Maximum number of retry attempts\n * @default 10\n */\n maxRetries: number;\n\n /**\n * Initial delay in milliseconds before first retry\n * @default 1000\n */\n initialDelay: number;\n\n /**\n * Maximum delay in milliseconds between retries\n * @default 30000\n */\n maxDelay: number;\n\n /**\n * Backoff multiplier for exponential backoff\n * @default 2\n */\n backoffFactor: number;\n\n /**\n * Whether to apply random jitter to delays\n * @default true\n */\n jitter: boolean;\n\n /**\n * Jitter factor (percentage of delay to randomize)\n * @default 0.25\n */\n jitterFactor: number;\n}\n\n/**\n * Callbacks for retry lifecycle events\n */\nexport interface RetryCallbacks {\n /**\n * Called before each retry attempt\n *\n * @param attempt - Current attempt number (1-indexed)\n * @param delay - Delay in milliseconds before this retry\n * @param error - Error that triggered the retry\n */\n onRetry?: (attempt: number, delay: number, error: Error) => void;\n\n /**\n * Called when all retry attempts are exhausted\n *\n * @param attempts - Total number of attempts made\n * @param lastError - The final error\n */\n onExhausted?: (attempts: number, lastError: Error) => void;\n\n /**\n * Called when operation succeeds\n *\n * @param attempts - Number of attempts before success (1 = first try)\n */\n onSuccess?: (attempts: number) => void;\n\n /**\n * Predicate to determine if an error is retryable\n *\n * @param error - Error to check\n * @returns True if the error should trigger a retry\n *\n * @default All errors are retryable\n */\n isRetryable?: (error: Error) => boolean;\n}\n\n/**\n * Error thrown when maximum retry attempts are exceeded\n */\nexport class MaxRetriesExceededError extends Error {\n /**\n * Create a MaxRetriesExceededError\n *\n * @param lastError - The error from the final attempt\n * @param attempts - Number of attempts made\n */\n constructor(public lastError: Error, public attempts: number) {\n super(\n `Maximum retry attempts (${attempts}) exceeded. Last error: ${lastError.message}`\n );\n this.name = \"MaxRetriesExceededError\";\n\n // Maintain proper prototype chain\n Object.setPrototypeOf(this, MaxRetriesExceededError.prototype);\n }\n}\n\n/**\n * Retry manager with exponential backoff and jitter.\n *\n * @remarks\n * Implements exponential backoff with the formula:\n * ```\n * delay = min(initialDelay * (backoffFactor ^ (attempt - 1)), maxDelay)\n * ```\n *\n * With jitter applied as:\n * ```\n * delay = delay + (random(-1, 1) * delay * jitterFactor)\n * ```\n *\n * Jitter helps prevent thundering herd problems when multiple clients\n * retry simultaneously.\n *\n * @example\n * ```typescript\n * const retry = new RetryManager({\n * maxRetries: 5,\n * initialDelay: 1000,\n * backoffFactor: 2,\n * });\n *\n * try {\n * const result = await retry.execute(\n * async () => {\n * const response = await fetch('https://api.example.com/data');\n * if (!response.ok) throw new Error('Request failed');\n * return response.json();\n * },\n * {\n * onRetry: (attempt, delay, error) => {\n * console.log(`Retry ${attempt} in ${delay}ms: ${error.message}`);\n * },\n * }\n * );\n * console.log('Success:', result);\n * } catch (error) {\n * console.error('All retries failed:', error);\n * }\n * ```\n */\nexport class RetryManager {\n private static readonly DEFAULT_CONFIG: RetryConfig = {\n maxRetries: 10,\n initialDelay: 1000,\n maxDelay: 30000,\n backoffFactor: 2,\n jitter: true,\n jitterFactor: 0.25,\n };\n\n private config: RetryConfig;\n\n /**\n * Create a new RetryManager instance\n *\n * @param config - Retry configuration options\n */\n constructor(config?: Partial<RetryConfig>) {\n this.config = { ...RetryManager.DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Execute a function with retry logic\n *\n * @typeParam T - Return type of the function\n * @param fn - Async function to execute with retries\n * @param callbacks - Optional lifecycle callbacks\n * @returns Promise that resolves with the function's result\n * @throws {MaxRetriesExceededError} When all retry attempts fail\n *\n * @example\n * ```typescript\n * const data = await retry.execute(\n * () => fetchData(url),\n * {\n * isRetryable: (error) => {\n * // Don't retry 4xx errors except 429 (rate limit)\n * if (error.message.includes('429')) return true;\n * if (error.message.match(/4\\d\\d/)) return false;\n * return true;\n * },\n * }\n * );\n * ```\n */\n async execute<T>(\n fn: () => Promise<T>,\n callbacks?: RetryCallbacks\n ): Promise<T> {\n let lastError: Error | null = null;\n let attempt = 0;\n\n while (attempt <= this.config.maxRetries) {\n attempt++;\n\n try {\n const result = await fn();\n callbacks?.onSuccess?.(attempt);\n return result;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Check if error is retryable\n if (callbacks?.isRetryable && !callbacks.isRetryable(lastError)) {\n throw lastError;\n }\n\n // If we've exhausted retries, throw\n if (attempt > this.config.maxRetries) {\n callbacks?.onExhausted?.(attempt, lastError);\n throw new MaxRetriesExceededError(lastError, attempt);\n }\n\n // Calculate delay and wait before retry\n const delay = this.calculateDelay(attempt);\n callbacks?.onRetry?.(attempt, delay, lastError);\n\n await this.sleep(delay);\n }\n }\n\n // This should never be reached due to throw above, but TypeScript needs it\n throw new MaxRetriesExceededError(\n lastError || new Error(\"Unknown error\"),\n attempt\n );\n }\n\n /**\n * Calculate delay for a given attempt using exponential backoff\n *\n * @param attempt - Current attempt number (1-indexed)\n * @returns Delay in milliseconds\n *\n * @example\n * ```typescript\n * const retry = new RetryManager({ initialDelay: 1000, backoffFactor: 2 });\n * console.log(retry.calculateDelay(1)); // ~1000ms\n * console.log(retry.calculateDelay(2)); // ~2000ms\n * console.log(retry.calculateDelay(3)); // ~4000ms\n * ```\n */\n calculateDelay(attempt: number): number {\n // Calculate base delay with exponential backoff\n let delay =\n this.config.initialDelay *\n Math.pow(this.config.backoffFactor, attempt - 1);\n\n // Cap at max delay\n delay = Math.min(delay, this.config.maxDelay);\n\n // Apply jitter if enabled\n if (this.config.jitter) {\n const jitterRange = delay * this.config.jitterFactor;\n // Random value between -jitterRange and +jitterRange\n const jitterOffset = (Math.random() * 2 - 1) * jitterRange;\n delay = delay + jitterOffset;\n }\n\n // Ensure non-negative and round to integer\n return Math.max(0, Math.round(delay));\n }\n\n /**\n * Reset internal state\n *\n * @remarks\n * Currently this class is stateless, but this method is provided\n * for API consistency and future extensibility.\n */\n reset(): void {\n // Currently stateless, but provided for API consistency\n }\n\n /**\n * Sleep for specified milliseconds\n *\n * @param ms - Milliseconds to sleep\n * @returns Promise that resolves after the delay\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","/**\n * @file HTTP data fetcher with caching and retry support\n * @module @maplibre-yaml/core/data\n */\n\nimport { MemoryCache, type CacheEntry, type CacheStats } from \"./memory-cache\";\nimport { RetryManager } from \"./retry-manager\";\nimport type { FeatureCollection } from \"geojson\";\n\n/**\n * Configuration for DataFetcher\n */\nexport interface FetcherConfig {\n /**\n * Cache configuration\n */\n cache: {\n /** Whether caching is enabled */\n enabled: boolean;\n /** Default TTL in milliseconds */\n defaultTTL: number;\n /** Maximum number of cached entries */\n maxSize: number;\n };\n\n /**\n * Retry configuration\n */\n retry: {\n /** Whether retry is enabled */\n enabled: boolean;\n /** Maximum number of retry attempts */\n maxRetries: number;\n /** Initial delay in milliseconds */\n initialDelay: number;\n /** Maximum delay in milliseconds */\n maxDelay: number;\n };\n\n /**\n * Request timeout in milliseconds\n * @default 30000\n */\n timeout: number;\n\n /**\n * Default headers to include in all requests\n */\n defaultHeaders: Record<string, string>;\n}\n\n/**\n * Options for individual fetch requests\n */\nexport interface FetchOptions {\n /**\n * Custom TTL for this request (overrides default)\n */\n ttl?: number;\n\n /**\n * Skip cache and force fresh fetch\n * @default false\n */\n skipCache?: boolean;\n\n /**\n * AbortSignal for request cancellation\n */\n signal?: AbortSignal;\n\n /**\n * Additional headers for this request\n */\n headers?: Record<string, string>;\n\n /**\n * Callback before each retry attempt\n */\n onRetry?: (attempt: number, delay: number, error: Error) => void;\n\n /**\n * Callback when fetch starts\n */\n onStart?: () => void;\n\n /**\n * Callback when fetch completes successfully\n */\n onComplete?: (data: FeatureCollection, fromCache: boolean) => void;\n\n /**\n * Callback when fetch fails\n */\n onError?: (error: Error) => void;\n}\n\n/**\n * Result of a fetch operation\n */\nexport interface FetchResult {\n /** The fetched GeoJSON data */\n data: FeatureCollection;\n\n /** Whether data came from cache */\n fromCache: boolean;\n\n /** Number of features in the collection */\n featureCount: number;\n\n /** Duration of fetch operation in milliseconds */\n duration: number;\n}\n\n/**\n * HTTP data fetcher with caching and retry support.\n *\n * @remarks\n * Features:\n * - In-memory caching with TTL\n * - Conditional requests (If-None-Match, If-Modified-Since)\n * - Automatic retry with exponential backoff\n * - Request timeout and cancellation\n * - GeoJSON validation\n * - Lifecycle callbacks\n *\n * @example\n * ```typescript\n * const fetcher = new DataFetcher({\n * cache: { enabled: true, defaultTTL: 300000, maxSize: 100 },\n * retry: { enabled: true, maxRetries: 3, initialDelay: 1000, maxDelay: 10000 },\n * timeout: 30000,\n * });\n *\n * // Fetch with caching\n * const result = await fetcher.fetch('https://example.com/data.geojson');\n * console.log(`Fetched ${result.featureCount} features in ${result.duration}ms`);\n *\n * // Prefetch for later use\n * await fetcher.prefetch('https://example.com/data2.geojson');\n *\n * // Force fresh fetch\n * const fresh = await fetcher.fetch(url, { skipCache: true });\n * ```\n */\nexport class DataFetcher {\n private static readonly DEFAULT_CONFIG: FetcherConfig = {\n cache: {\n enabled: true,\n defaultTTL: 300000, // 5 minutes\n maxSize: 100,\n },\n retry: {\n enabled: true,\n maxRetries: 3,\n initialDelay: 1000,\n maxDelay: 10000,\n },\n timeout: 30000,\n defaultHeaders: {\n Accept: \"application/geo+json,application/json\",\n },\n };\n\n private config: FetcherConfig;\n private cache: MemoryCache<FeatureCollection>;\n private retryManager: RetryManager;\n private activeRequests = new Map<string, AbortController>();\n\n /**\n * Create a new DataFetcher instance\n *\n * @param config - Fetcher configuration\n */\n constructor(config?: Partial<FetcherConfig>) {\n this.config = this.mergeConfig(config);\n\n this.cache = new MemoryCache<FeatureCollection>({\n maxSize: this.config.cache.maxSize,\n defaultTTL: this.config.cache.defaultTTL,\n useConditionalRequests: true,\n });\n\n this.retryManager = new RetryManager({\n maxRetries: this.config.retry.maxRetries,\n initialDelay: this.config.retry.initialDelay,\n maxDelay: this.config.retry.maxDelay,\n });\n }\n\n /**\n * Fetch GeoJSON data from a URL\n *\n * @param url - URL to fetch from\n * @param options - Fetch options\n * @returns Fetch result with data and metadata\n * @throws {Error} On network error, timeout, invalid JSON, or non-GeoJSON response\n *\n * @example\n * ```typescript\n * const result = await fetcher.fetch(\n * 'https://example.com/data.geojson',\n * {\n * ttl: 60000, // 1 minute cache\n * onRetry: (attempt, delay, error) => {\n * console.log(`Retry ${attempt} in ${delay}ms: ${error.message}`);\n * },\n * }\n * );\n * ```\n */\n async fetch(url: string, options: FetchOptions = {}): Promise<FetchResult> {\n const startTime = Date.now();\n\n options.onStart?.();\n\n try {\n // Check cache first (unless skipCache is true)\n if (this.config.cache.enabled && !options.skipCache) {\n const cached = this.cache.get(url);\n if (cached) {\n const result: FetchResult = {\n data: cached.data,\n fromCache: true,\n featureCount: cached.data.features.length,\n duration: Date.now() - startTime,\n };\n options.onComplete?.(cached.data, true);\n return result;\n }\n }\n\n // Fetch fresh data\n const data = await this.fetchWithRetry(url, options);\n\n // Cache the result\n if (this.config.cache.enabled && !options.skipCache) {\n const cacheEntry: CacheEntry<FeatureCollection> = {\n data,\n timestamp: Date.now(),\n ttl: options.ttl,\n };\n this.cache.set(url, cacheEntry);\n }\n\n const result: FetchResult = {\n data,\n fromCache: false,\n featureCount: data.features.length,\n duration: Date.now() - startTime,\n };\n\n options.onComplete?.(data, false);\n return result;\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n options.onError?.(err);\n throw err;\n }\n }\n\n /**\n * Prefetch data and store in cache\n *\n * @remarks\n * Useful for preloading data that will be needed soon.\n * Does not return the data.\n *\n * @param url - URL to prefetch\n * @param ttl - Optional custom TTL for cached entry\n *\n * @example\n * ```typescript\n * // Prefetch data for quick access later\n * await fetcher.prefetch('https://example.com/data.geojson', 600000);\n * ```\n */\n async prefetch(url: string, ttl?: number): Promise<void> {\n await this.fetch(url, { ttl, skipCache: false });\n }\n\n /**\n * Invalidate cached entry for a URL\n *\n * @param url - URL to invalidate\n *\n * @example\n * ```typescript\n * // Force next fetch to get fresh data\n * fetcher.invalidate('https://example.com/data.geojson');\n * ```\n */\n invalidate(url: string): void {\n this.cache.delete(url);\n }\n\n /**\n * Clear all cached entries\n */\n clearCache(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache statistics\n *\n * @returns Cache stats including size, hits, misses, and hit rate\n */\n getCacheStats(): CacheStats {\n return this.cache.getStats();\n }\n\n /**\n * Abort all active requests\n */\n abortAll(): void {\n for (const controller of this.activeRequests.values()) {\n controller.abort();\n }\n this.activeRequests.clear();\n }\n\n /**\n * Fetch with retry logic\n */\n private async fetchWithRetry(\n url: string,\n options: FetchOptions\n ): Promise<FeatureCollection> {\n if (!this.config.retry.enabled) {\n return this.performFetch(url, options);\n }\n\n return this.retryManager.execute(\n () => this.performFetch(url, options),\n {\n onRetry: options.onRetry,\n isRetryable: (error) => this.isRetryableError(error),\n }\n );\n }\n\n /**\n * Perform the actual HTTP fetch\n */\n private async performFetch(\n url: string,\n options: FetchOptions\n ): Promise<FeatureCollection> {\n // Create abort controller with timeout\n const controller = options.signal\n ? new AbortController()\n : new AbortController();\n\n // Link external signal if provided\n if (options.signal) {\n options.signal.addEventListener(\"abort\", () => controller.abort());\n }\n\n // Set timeout\n const timeoutId = setTimeout(() => {\n controller.abort();\n }, this.config.timeout);\n\n this.activeRequests.set(url, controller);\n\n try {\n // Prepare headers\n const headers = {\n ...this.config.defaultHeaders,\n ...options.headers,\n };\n\n // Add conditional headers if we have cached entry\n if (this.config.cache.enabled && this.cache.has(url)) {\n const conditionalHeaders = this.cache.getConditionalHeaders(url);\n Object.assign(headers, conditionalHeaders);\n }\n\n // Perform fetch\n const response = await fetch(url, {\n signal: controller.signal,\n headers,\n });\n\n // Handle 304 Not Modified\n if (response.status === 304) {\n const cached = this.cache.get(url);\n if (cached) {\n // Touch to update access order\n this.cache.touch(url);\n return cached.data;\n }\n // Fallback: shouldn't happen, but handle gracefully\n throw new Error(\"304 Not Modified but no cached data available\");\n }\n\n // Handle HTTP errors\n if (!response.ok) {\n throw new Error(\n `HTTP ${response.status}: ${response.statusText} for ${url}`\n );\n }\n\n // Parse JSON\n let data: unknown;\n try {\n data = await response.json();\n } catch (error) {\n throw new Error(`Invalid JSON response from ${url}`);\n }\n\n // Validate GeoJSON\n if (!this.isValidGeoJSON(data)) {\n throw new Error(`Response from ${url} is not valid GeoJSON`);\n }\n\n // Update cache metadata with response headers\n if (this.config.cache.enabled) {\n const etag = response.headers.get(\"etag\");\n const lastModified = response.headers.get(\"last-modified\");\n\n if (etag || lastModified) {\n const cached = this.cache.get(url);\n if (cached) {\n // Update existing cache entry with new headers\n this.cache.set(url, {\n ...cached,\n etag: etag || cached.etag,\n lastModified: lastModified || cached.lastModified,\n });\n }\n }\n }\n\n return data as FeatureCollection;\n } finally {\n clearTimeout(timeoutId);\n this.activeRequests.delete(url);\n }\n }\n\n /**\n * Check if an error should trigger a retry\n */\n private isRetryableError(error: Error): boolean {\n const message = error.message.toLowerCase();\n\n // Don't retry on client errors (except 429 rate limit)\n if (message.includes(\"http 4\") && !message.includes(\"429\")) {\n return false;\n }\n\n // Don't retry on invalid JSON or GeoJSON\n if (\n message.includes(\"invalid json\") ||\n message.includes(\"not valid geojson\")\n ) {\n return false;\n }\n\n // Retry on network errors, timeouts, and server errors\n return true;\n }\n\n /**\n * Validate that data is a GeoJSON FeatureCollection\n */\n private isValidGeoJSON(data: unknown): data is FeatureCollection {\n if (typeof data !== \"object\" || data === null) {\n return false;\n }\n\n const obj = data as Record<string, unknown>;\n\n return (\n obj.type === \"FeatureCollection\" && Array.isArray(obj.features)\n );\n }\n\n /**\n * Merge partial config with defaults\n */\n private mergeConfig(partial?: Partial<FetcherConfig>): FetcherConfig {\n if (!partial) return DataFetcher.DEFAULT_CONFIG;\n\n return {\n cache: { ...DataFetcher.DEFAULT_CONFIG.cache, ...partial.cache },\n retry: { ...DataFetcher.DEFAULT_CONFIG.retry, ...partial.retry },\n timeout: partial.timeout ?? DataFetcher.DEFAULT_CONFIG.timeout,\n defaultHeaders: {\n ...DataFetcher.DEFAULT_CONFIG.defaultHeaders,\n ...partial.defaultHeaders,\n },\n };\n }\n}\n","/**\n * @file Polling manager for periodic data refresh\n * @module @maplibre-yaml/core/data\n */\n\n/**\n * Configuration for a polling subscription.\n *\n * @remarks\n * The polling manager ensures non-overlapping execution by waiting for each\n * tick to complete before scheduling the next one. This prevents concurrent\n * execution of the same polling task.\n *\n * @example\n * ```typescript\n * const polling = new PollingManager();\n *\n * polling.start('vehicles', {\n * interval: 5000,\n * onTick: async () => {\n * const data = await fetch('/api/vehicles');\n * updateMap(data);\n * },\n * onError: (error) => console.error(error),\n * immediate: true,\n * pauseWhenHidden: true,\n * });\n * ```\n */\nexport interface PollingConfig {\n /** Polling interval in milliseconds (minimum 1000ms) */\n interval: number;\n\n /** Function to execute on each tick */\n onTick: () => Promise<void>;\n\n /** Error handler for tick failures */\n onError?: (error: Error) => void;\n\n /** Execute immediately on start (default: false) */\n immediate?: boolean;\n\n /** Pause polling when document is hidden (default: true) */\n pauseWhenHidden?: boolean;\n}\n\n/**\n * Current state of a polling subscription.\n */\nexport interface PollingState {\n /** Whether polling is active */\n isActive: boolean;\n\n /** Whether polling is paused */\n isPaused: boolean;\n\n /** Timestamp of last successful tick */\n lastTick: number | null;\n\n /** Timestamp of next scheduled tick */\n nextTick: number | null;\n\n /** Total number of successful ticks */\n tickCount: number;\n\n /** Total number of errors */\n errorCount: number;\n}\n\n/**\n * Internal subscription data.\n */\ninterface Subscription {\n config: PollingConfig;\n state: PollingState;\n timerId: ReturnType<typeof setTimeout> | null;\n isExecuting: boolean;\n pausedByVisibility: boolean;\n}\n\n/**\n * Manages polling intervals for data refresh.\n *\n * @remarks\n * Features:\n * - Independent intervals per subscription\n * - Visibility-aware (pause when tab hidden)\n * - Tracks tick count and error count\n * - Non-overlapping execution (waits for tick to complete)\n * - Pause/resume functionality\n * - Manual trigger support\n *\n * The polling manager automatically pauses polling when the document becomes\n * hidden (unless `pauseWhenHidden` is false) and resumes when visible again.\n *\n * @example\n * ```typescript\n * const polling = new PollingManager();\n *\n * // Start polling\n * polling.start('data-refresh', {\n * interval: 10000,\n * onTick: async () => {\n * await fetchAndUpdateData();\n * },\n * immediate: true,\n * });\n *\n * // Pause temporarily\n * polling.pause('data-refresh');\n *\n * // Resume\n * polling.resume('data-refresh');\n *\n * // Trigger immediately\n * await polling.triggerNow('data-refresh');\n *\n * // Stop completely\n * polling.stop('data-refresh');\n * ```\n */\nexport class PollingManager {\n private subscriptions = new Map<string, Subscription>();\n private visibilityListener: (() => void) | null = null;\n\n constructor() {\n this.setupVisibilityListener();\n }\n\n /**\n * Start a new polling subscription.\n *\n * @param id - Unique identifier for the subscription\n * @param config - Polling configuration\n * @throws Error if a subscription with the same ID already exists\n *\n * @example\n * ```typescript\n * polling.start('layer-1', {\n * interval: 5000,\n * onTick: async () => {\n * await updateLayerData();\n * },\n * });\n * ```\n */\n start(id: string, config: PollingConfig): void {\n if (this.subscriptions.has(id)) {\n throw new Error(`Polling subscription with id \"${id}\" already exists`);\n }\n\n const subscription: Subscription = {\n config,\n state: {\n isActive: true,\n isPaused: false,\n lastTick: null,\n nextTick: null,\n tickCount: 0,\n errorCount: 0,\n },\n timerId: null,\n isExecuting: false,\n pausedByVisibility: false,\n };\n\n this.subscriptions.set(id, subscription);\n\n // Execute immediately if requested\n if (config.immediate) {\n this.executeTick(id);\n } else {\n this.scheduleNextTick(id);\n }\n }\n\n /**\n * Stop a polling subscription and clean up resources.\n *\n * @param id - Subscription identifier\n *\n * @example\n * ```typescript\n * polling.stop('layer-1');\n * ```\n */\n stop(id: string): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription) return;\n\n if (subscription.timerId !== null) {\n clearTimeout(subscription.timerId);\n }\n\n subscription.state.isActive = false;\n this.subscriptions.delete(id);\n }\n\n /**\n * Stop all polling subscriptions.\n *\n * @example\n * ```typescript\n * polling.stopAll();\n * ```\n */\n stopAll(): void {\n for (const id of this.subscriptions.keys()) {\n this.stop(id);\n }\n }\n\n /**\n * Pause a polling subscription without stopping it.\n *\n * @param id - Subscription identifier\n *\n * @remarks\n * Paused subscriptions can be resumed with {@link resume}.\n * The subscription maintains its state while paused.\n *\n * @example\n * ```typescript\n * polling.pause('layer-1');\n * ```\n */\n pause(id: string): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription || subscription.state.isPaused) return;\n\n if (subscription.timerId !== null) {\n clearTimeout(subscription.timerId);\n subscription.timerId = null;\n }\n\n subscription.state.isPaused = true;\n subscription.state.nextTick = null;\n }\n\n /**\n * Pause all active polling subscriptions.\n *\n * @example\n * ```typescript\n * polling.pauseAll();\n * ```\n */\n pauseAll(): void {\n for (const id of this.subscriptions.keys()) {\n this.pause(id);\n }\n }\n\n /**\n * Resume a paused polling subscription.\n *\n * @param id - Subscription identifier\n *\n * @example\n * ```typescript\n * polling.resume('layer-1');\n * ```\n */\n resume(id: string): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription || !subscription.state.isPaused) return;\n\n subscription.state.isPaused = false;\n subscription.pausedByVisibility = false;\n this.scheduleNextTick(id);\n }\n\n /**\n * Resume all paused polling subscriptions.\n *\n * @example\n * ```typescript\n * polling.resumeAll();\n * ```\n */\n resumeAll(): void {\n for (const id of this.subscriptions.keys()) {\n this.resume(id);\n }\n }\n\n /**\n * Trigger an immediate execution of the polling tick.\n *\n * @param id - Subscription identifier\n * @returns Promise that resolves when the tick completes\n * @throws Error if the subscription doesn't exist\n *\n * @remarks\n * This does not affect the regular polling schedule. The next scheduled\n * tick will still occur at the expected time.\n *\n * @example\n * ```typescript\n * await polling.triggerNow('layer-1');\n * ```\n */\n async triggerNow(id: string): Promise<void> {\n const subscription = this.subscriptions.get(id);\n if (!subscription) {\n throw new Error(`Polling subscription \"${id}\" not found`);\n }\n\n await this.executeTick(id);\n }\n\n /**\n * Get the current state of a polling subscription.\n *\n * @param id - Subscription identifier\n * @returns Current state or null if not found\n *\n * @example\n * ```typescript\n * const state = polling.getState('layer-1');\n * if (state) {\n * console.log(`Ticks: ${state.tickCount}, Errors: ${state.errorCount}`);\n * }\n * ```\n */\n getState(id: string): PollingState | null {\n const subscription = this.subscriptions.get(id);\n return subscription ? { ...subscription.state } : null;\n }\n\n /**\n * Get all active polling subscription IDs.\n *\n * @returns Array of subscription IDs\n *\n * @example\n * ```typescript\n * const ids = polling.getActiveIds();\n * console.log(`Active pollers: ${ids.join(', ')}`);\n * ```\n */\n getActiveIds(): string[] {\n return Array.from(this.subscriptions.keys());\n }\n\n /**\n * Check if a polling subscription exists.\n *\n * @param id - Subscription identifier\n * @returns True if the subscription exists\n *\n * @example\n * ```typescript\n * if (polling.has('layer-1')) {\n * polling.pause('layer-1');\n * }\n * ```\n */\n has(id: string): boolean {\n return this.subscriptions.has(id);\n }\n\n /**\n * Update the interval for an active polling subscription.\n *\n * @param id - Subscription identifier\n * @param interval - New interval in milliseconds (minimum 1000ms)\n * @throws Error if the subscription doesn't exist\n *\n * @remarks\n * The new interval takes effect after the current tick completes.\n *\n * @example\n * ```typescript\n * polling.setInterval('layer-1', 10000);\n * ```\n */\n setInterval(id: string, interval: number): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription) {\n throw new Error(`Polling subscription \"${id}\" not found`);\n }\n\n if (interval < 1000) {\n throw new Error(\"Interval must be at least 1000ms\");\n }\n\n subscription.config.interval = interval;\n\n // Reschedule if active and not paused\n if (\n !subscription.state.isPaused &&\n !subscription.isExecuting &&\n subscription.timerId !== null\n ) {\n clearTimeout(subscription.timerId);\n this.scheduleNextTick(id);\n }\n }\n\n /**\n * Clean up all resources and stop all polling.\n *\n * @remarks\n * Should be called when the polling manager is no longer needed.\n * After calling destroy, the polling manager should not be used.\n *\n * @example\n * ```typescript\n * polling.destroy();\n * ```\n */\n destroy(): void {\n this.stopAll();\n this.teardownVisibilityListener();\n }\n\n /**\n * Execute a single tick for a subscription.\n */\n private async executeTick(id: string): Promise<void> {\n const subscription = this.subscriptions.get(id);\n if (!subscription || subscription.isExecuting) return;\n\n subscription.isExecuting = true;\n\n try {\n await subscription.config.onTick();\n subscription.state.tickCount++;\n subscription.state.lastTick = Date.now();\n } catch (error) {\n subscription.state.errorCount++;\n const err = error instanceof Error ? error : new Error(String(error));\n subscription.config.onError?.(err);\n } finally {\n subscription.isExecuting = false;\n\n // Schedule next tick if still active and not paused\n if (\n this.subscriptions.has(id) &&\n subscription.state.isActive &&\n !subscription.state.isPaused\n ) {\n this.scheduleNextTick(id);\n }\n }\n }\n\n /**\n * Schedule the next tick for a subscription.\n */\n private scheduleNextTick(id: string): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription) return;\n\n const nextTime = Date.now() + subscription.config.interval;\n subscription.state.nextTick = nextTime;\n\n subscription.timerId = setTimeout(() => {\n this.executeTick(id);\n }, subscription.config.interval);\n }\n\n /**\n * Setup document visibility listener for automatic pause/resume.\n */\n private setupVisibilityListener(): void {\n if (typeof document === \"undefined\") return;\n\n this.visibilityListener = () => {\n if (document.hidden) {\n this.handleVisibilityChange(true);\n } else {\n this.handleVisibilityChange(false);\n }\n };\n\n document.addEventListener(\"visibilitychange\", this.visibilityListener);\n }\n\n /**\n * Handle document visibility changes.\n */\n private handleVisibilityChange(hidden: boolean): void {\n for (const [id, subscription] of this.subscriptions) {\n const pauseEnabled = subscription.config.pauseWhenHidden !== false;\n\n if (hidden && pauseEnabled && !subscription.state.isPaused) {\n // Pause due to visibility\n subscription.pausedByVisibility = true;\n this.pause(id);\n } else if (!hidden && pauseEnabled && subscription.pausedByVisibility) {\n // Resume from visibility pause\n this.resume(id);\n }\n }\n }\n\n /**\n * Remove document visibility listener.\n */\n private teardownVisibilityListener(): void {\n if (this.visibilityListener && typeof document !== \"undefined\") {\n document.removeEventListener(\"visibilitychange\", this.visibilityListener);\n this.visibilityListener = null;\n }\n }\n}\n","/**\n * @file Type-safe event emitter utility\n * @module @maplibre-yaml/core/utils\n */\n\n/**\n * Event handler function type\n */\nexport type EventHandler<T> = (data: T) => void;\n\n/**\n * Type-safe event emitter with strongly-typed event names and payloads\n *\n * @remarks\n * This class provides a type-safe event emitter pattern where event names\n * and their payload types are strictly enforced. It's designed to be extended\n * by classes that need event emission capabilities.\n *\n * @example\n * ```typescript\n * interface MyEvents {\n * connect: void;\n * message: { text: string };\n * error: { error: Error };\n * }\n *\n * class MyEmitter extends EventEmitter<MyEvents> {\n * connect() {\n * this.emit('connect', undefined);\n * }\n *\n * sendMessage(text: string) {\n * this.emit('message', { text });\n * }\n * }\n *\n * const emitter = new MyEmitter();\n * emitter.on('message', (data) => {\n * console.log(data.text); // Strongly typed!\n * });\n * ```\n *\n * @typeParam Events - Record of event names to payload types\n */\nexport class EventEmitter<Events extends Record<string, unknown>> {\n private handlers = new Map<keyof Events, Set<EventHandler<any>>>();\n\n /**\n * Register an event handler\n *\n * @param event - Event name to listen for\n * @param handler - Callback function to invoke when event is emitted\n * @returns Unsubscribe function that removes this specific handler\n *\n * @example\n * ```typescript\n * const unsubscribe = emitter.on('message', (data) => {\n * console.log(data.text);\n * });\n *\n * // Later, to unsubscribe:\n * unsubscribe();\n * ```\n */\n on<K extends keyof Events>(\n event: K,\n handler: EventHandler<Events[K]>\n ): () => void {\n if (!this.handlers.has(event)) {\n this.handlers.set(event, new Set());\n }\n\n this.handlers.get(event)!.add(handler);\n\n // Return unsubscribe function\n return () => this.off(event, handler);\n }\n\n /**\n * Register a one-time event handler\n *\n * @remarks\n * The handler will be automatically removed after being invoked once.\n *\n * @param event - Event name to listen for\n * @param handler - Callback function to invoke once\n *\n * @example\n * ```typescript\n * emitter.once('connect', () => {\n * console.log('Connected!');\n * });\n * ```\n */\n once<K extends keyof Events>(\n event: K,\n handler: EventHandler<Events[K]>\n ): void {\n const onceWrapper: EventHandler<Events[K]> = (data) => {\n this.off(event, onceWrapper);\n handler(data);\n };\n\n this.on(event, onceWrapper);\n }\n\n /**\n * Remove an event handler\n *\n * @param event - Event name\n * @param handler - Handler function to remove\n *\n * @example\n * ```typescript\n * const handler = (data) => console.log(data);\n * emitter.on('message', handler);\n * emitter.off('message', handler);\n * ```\n */\n off<K extends keyof Events>(\n event: K,\n handler: EventHandler<Events[K]>\n ): void {\n const handlers = this.handlers.get(event);\n if (handlers) {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.handlers.delete(event);\n }\n }\n }\n\n /**\n * Emit an event to all registered handlers\n *\n * @remarks\n * This method is protected to ensure only the extending class can emit events.\n * All handlers are invoked synchronously in the order they were registered.\n *\n * @param event - Event name to emit\n * @param data - Event payload data\n *\n * @example\n * ```typescript\n * class MyEmitter extends EventEmitter<MyEvents> {\n * doSomething() {\n * this.emit('something-happened', { value: 42 });\n * }\n * }\n * ```\n */\n protected emit<K extends keyof Events>(event: K, data: Events[K]): void {\n const handlers = this.handlers.get(event);\n if (handlers) {\n for (const handler of handlers) {\n handler(data);\n }\n }\n }\n\n /**\n * Remove all handlers for an event, or all handlers for all events\n *\n * @param event - Optional event name. If omitted, removes all handlers for all events.\n *\n * @example\n * ```typescript\n * // Remove all handlers for 'message' event\n * emitter.removeAllListeners('message');\n *\n * // Remove all handlers for all events\n * emitter.removeAllListeners();\n * ```\n */\n removeAllListeners<K extends keyof Events>(event?: K): void {\n if (event) {\n this.handlers.delete(event);\n } else {\n this.handlers.clear();\n }\n }\n\n /**\n * Get the number of handlers registered for an event\n *\n * @param event - Event name\n * @returns Number of registered handlers\n *\n * @example\n * ```typescript\n * const count = emitter.listenerCount('message');\n * console.log(`${count} handlers registered`);\n * ```\n */\n listenerCount<K extends keyof Events>(event: K): number {\n const handlers = this.handlers.get(event);\n return handlers ? handlers.size : 0;\n }\n\n /**\n * Get all event names that have registered handlers\n *\n * @returns Array of event names\n *\n * @example\n * ```typescript\n * const events = emitter.eventNames();\n * console.log('Events with handlers:', events);\n * ```\n */\n eventNames(): Array<keyof Events> {\n return Array.from(this.handlers.keys());\n }\n\n /**\n * Check if an event has any registered handlers\n *\n * @param event - Event name\n * @returns True if the event has at least one handler\n *\n * @example\n * ```typescript\n * if (emitter.hasListeners('message')) {\n * emitter.emit('message', { text: 'Hello' });\n * }\n * ```\n */\n hasListeners<K extends keyof Events>(event: K): boolean {\n return this.listenerCount(event) > 0;\n }\n}\n","/**\n * @file Base connection class for streaming connections\n * @module @maplibre-yaml/core/data/streaming\n */\n\nimport { EventEmitter } from \"../../utils/event-emitter\";\nimport { RetryManager } from \"../retry-manager\";\nimport type { RetryConfig } from \"../retry-manager\";\n\n/**\n * Connection state enum.\n *\n * @remarks\n * State transitions:\n * - disconnected → connecting → connected\n * - connected → disconnected (on manual disconnect)\n * - connected → reconnecting → connected (on connection loss with reconnect enabled)\n * - reconnecting → failed (after max reconnect attempts)\n */\nexport type ConnectionState =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"reconnecting\"\n | \"failed\";\n\n/**\n * Events emitted by streaming connections.\n *\n * @remarks\n * All connections emit these events to allow consumers to react to\n * connection lifecycle changes and incoming messages.\n */\nexport interface ConnectionEvents extends Record<string, unknown> {\n /** Emitted when connection is established */\n connect: void;\n\n /** Emitted when connection is closed */\n disconnect: { reason: string };\n\n /** Emitted when a message is received */\n message: { data: unknown };\n\n /** Emitted when an error occurs */\n error: { error: Error };\n\n /** Emitted when attempting to reconnect */\n reconnecting: { attempt: number; delay: number };\n\n /** Emitted when reconnection succeeds */\n reconnected: { attempts: number };\n\n /** Emitted when reconnection fails after max attempts */\n failed: { attempts: number; lastError: Error };\n\n /** Emitted whenever connection state changes */\n stateChange: { from: ConnectionState; to: ConnectionState };\n}\n\n/**\n * Base configuration for all connection types.\n */\nexport interface ConnectionConfig {\n /** Connection URL */\n url: string;\n\n /** Enable automatic reconnection on disconnect (default: true) */\n reconnect?: boolean;\n\n /** Reconnection retry configuration */\n reconnectConfig?: Partial<RetryConfig>;\n}\n\n/**\n * Abstract base class for streaming connections.\n *\n * @remarks\n * Provides common functionality for all streaming connection types:\n * - Connection state management\n * - Event emission via EventEmitter\n * - Automatic reconnection with exponential backoff\n * - State change tracking\n *\n * Subclasses must implement:\n * - `connect()`: Establish the connection\n * - `disconnect()`: Close the connection\n *\n * @example\n * ```typescript\n * class MyConnection extends BaseConnection {\n * async connect(): Promise<void> {\n * this.setState('connecting');\n * // ... connection logic\n * this.setState('connected');\n * this.emit('connect', undefined);\n * }\n *\n * disconnect(): void {\n * // ... disconnection logic\n * this.handleDisconnect('Manual disconnect');\n * }\n * }\n * ```\n */\nexport abstract class BaseConnection extends EventEmitter<ConnectionEvents> {\n protected state: ConnectionState = \"disconnected\";\n protected config: Required<ConnectionConfig>;\n protected retryManager: RetryManager;\n protected reconnectAttempts = 0;\n protected manualDisconnect = false;\n\n /**\n * Create a new base connection.\n *\n * @param config - Connection configuration\n */\n constructor(config: ConnectionConfig) {\n super();\n\n this.config = {\n reconnect: true,\n reconnectConfig: {},\n ...config,\n };\n\n // Setup retry manager for reconnection\n this.retryManager = new RetryManager({\n maxRetries: 10,\n initialDelay: 1000,\n maxDelay: 30000,\n backoffFactor: 2,\n jitter: true,\n jitterFactor: 0.25,\n ...this.config.reconnectConfig,\n });\n }\n\n /**\n * Establish connection to the server.\n *\n * @remarks\n * Must be implemented by subclasses. Should:\n * 1. Set state to 'connecting'\n * 2. Establish the connection\n * 3. Set state to 'connected'\n * 4. Emit 'connect' event\n *\n * @throws Error if connection fails\n */\n abstract connect(): Promise<void>;\n\n /**\n * Close the connection.\n *\n * @remarks\n * Must be implemented by subclasses. Should:\n * 1. Close the underlying connection\n * 2. Call handleDisconnect() with reason\n */\n abstract disconnect(): void;\n\n /**\n * Get current connection state.\n *\n * @returns Current state\n *\n * @example\n * ```typescript\n * const state = connection.getState();\n * if (state === 'connected') {\n * // Connection is ready\n * }\n * ```\n */\n getState(): ConnectionState {\n return this.state;\n }\n\n /**\n * Check if connection is currently connected.\n *\n * @returns True if connected\n *\n * @example\n * ```typescript\n * if (connection.isConnected()) {\n * connection.send(data);\n * }\n * ```\n */\n isConnected(): boolean {\n return this.state === \"connected\";\n }\n\n /**\n * Get the number of reconnection attempts.\n *\n * @returns Number of reconnect attempts\n */\n getReconnectAttempts(): number {\n return this.reconnectAttempts;\n }\n\n /**\n * Update connection state and emit state change event.\n *\n * @param newState - New connection state\n *\n * @remarks\n * Automatically emits 'stateChange' event when state changes.\n * Subclasses should call this method instead of setting state directly.\n *\n * @example\n * ```typescript\n * protected async connect() {\n * this.setState('connecting');\n * await this.establishConnection();\n * this.setState('connected');\n * }\n * ```\n */\n protected setState(newState: ConnectionState): void {\n if (this.state === newState) return;\n\n const oldState = this.state;\n this.state = newState;\n\n this.emit(\"stateChange\", { from: oldState, to: newState });\n }\n\n /**\n * Handle disconnection and optionally attempt reconnection.\n *\n * @param reason - Reason for disconnection\n *\n * @remarks\n * This method should be called by subclasses when the connection is lost.\n * It will:\n * 1. Emit 'disconnect' event\n * 2. Attempt reconnection if enabled and not manually disconnected\n * 3. Emit 'reconnecting', 'reconnected', or 'failed' events as appropriate\n *\n * @example\n * ```typescript\n * ws.onclose = () => {\n * this.handleDisconnect('Connection closed');\n * };\n * ```\n */\n protected async handleDisconnect(reason: string): Promise<void> {\n // Set state before emitting disconnect event\n const wasConnected = this.state === \"connected\";\n this.setState(\"disconnected\");\n\n // Emit disconnect event\n this.emit(\"disconnect\", { reason });\n\n // Only attempt reconnection if:\n // 1. Reconnect is enabled\n // 2. Not manually disconnected\n // 3. Was previously connected (not a failed initial connection)\n if (!this.config.reconnect || this.manualDisconnect || !wasConnected) {\n return;\n }\n\n // Attempt reconnection with exponential backoff\n await this.attemptReconnection();\n }\n\n /**\n * Attempt to reconnect with exponential backoff.\n */\n private async attemptReconnection(): Promise<void> {\n this.setState(\"reconnecting\");\n this.reconnectAttempts = 0;\n\n try {\n await this.retryManager.execute(\n async () => {\n this.reconnectAttempts++;\n await this.connect();\n },\n {\n onRetry: (attempt, delay) => {\n this.emit(\"reconnecting\", { attempt, delay });\n },\n onSuccess: (attempts) => {\n this.reconnectAttempts = 0;\n this.emit(\"reconnected\", { attempts });\n },\n }\n );\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.setState(\"failed\");\n this.emit(\"failed\", {\n attempts: this.reconnectAttempts,\n lastError: error,\n });\n }\n }\n\n /**\n * Mark disconnection as manual to prevent reconnection.\n *\n * @remarks\n * Should be called by subclasses in their disconnect() implementation\n * before closing the connection.\n *\n * @example\n * ```typescript\n * disconnect(): void {\n * this.setManualDisconnect();\n * this.ws.close();\n * }\n * ```\n */\n protected setManualDisconnect(): void {\n this.manualDisconnect = true;\n }\n\n /**\n * Reset manual disconnect flag.\n *\n * @remarks\n * Should be called when establishing a new connection to allow\n * automatic reconnection for subsequent disconnections.\n */\n protected resetManualDisconnect(): void {\n this.manualDisconnect = false;\n }\n}\n","/**\n * @file Server-Sent Events connection implementation\n * @module @maplibre-yaml/core/data/streaming\n */\n\nimport { BaseConnection } from \"./base-connection\";\nimport type { ConnectionConfig } from \"./base-connection\";\n\n/**\n * Configuration for SSE connections.\n *\n * @remarks\n * Server-Sent Events (SSE) is a server push technology enabling a client\n * to receive automatic updates from a server via an HTTP connection.\n *\n * SSE is unidirectional (server to client only) and automatically handles\n * reconnection when the connection is lost.\n */\nexport interface SSEConfig extends ConnectionConfig {\n /**\n * Event types to listen for (default: ['message'])\n *\n * @remarks\n * The EventSource API can listen for custom event types sent by the server.\n * By default, it listens to the 'message' event type.\n *\n * @example\n * ```typescript\n * eventTypes: ['update', 'delete', 'create']\n * ```\n */\n eventTypes?: string[];\n\n /**\n * Include credentials in CORS requests (default: false)\n *\n * @remarks\n * When true, the EventSource will include credentials (cookies, authorization\n * headers, etc.) when making cross-origin requests.\n */\n withCredentials?: boolean;\n}\n\n/**\n * Server-Sent Events connection.\n *\n * @remarks\n * Primary streaming mechanism for real-time updates. Uses the native\n * EventSource API for robust, automatic reconnection handling.\n *\n * Features:\n * - Automatic reconnection by the browser\n * - Event-based message streaming\n * - JSON message parsing with error handling\n * - Multiple event type support\n * - Last event ID tracking for resume\n *\n * @example\n * ```typescript\n * const sse = new SSEConnection({\n * url: 'https://api.example.com/events',\n * eventTypes: ['update', 'delete'],\n * });\n *\n * sse.on('message', ({ data }) => {\n * console.log('Received:', data);\n * });\n *\n * sse.on('error', ({ error }) => {\n * console.error('Error:', error);\n * });\n *\n * await sse.connect();\n * ```\n */\nexport class SSEConnection extends BaseConnection {\n private eventSource: EventSource | null = null;\n private lastEventId: string | null = null;\n private readonly sseConfig: Required<SSEConfig>;\n\n /**\n * Create a new SSE connection.\n *\n * @param config - SSE configuration\n *\n * @example\n * ```typescript\n * const connection = new SSEConnection({\n * url: 'https://api.example.com/stream',\n * eventTypes: ['message', 'update'],\n * withCredentials: true,\n * });\n * ```\n */\n constructor(config: SSEConfig) {\n super(config);\n\n this.sseConfig = {\n ...this.config,\n eventTypes: config.eventTypes ?? [\"message\"],\n withCredentials: config.withCredentials ?? false,\n };\n }\n\n /**\n * Establish SSE connection.\n *\n * @remarks\n * Creates an EventSource and sets up event listeners for:\n * - Connection open\n * - Message events (for each configured event type)\n * - Error events\n *\n * The EventSource API handles reconnection automatically when the\n * connection is lost, unless explicitly closed.\n *\n * @throws Error if EventSource is not supported or connection fails\n *\n * @example\n * ```typescript\n * await connection.connect();\n * console.log('Connected to SSE stream');\n * ```\n */\n async connect(): Promise<void> {\n if (this.eventSource !== null) {\n throw new Error(\"Connection already exists\");\n }\n\n this.setState(\"connecting\");\n\n try {\n // Create EventSource with configuration\n this.eventSource = new EventSource(this.sseConfig.url, {\n withCredentials: this.sseConfig.withCredentials,\n });\n\n // Wait for connection to open\n await new Promise<void>((resolve, reject) => {\n if (!this.eventSource) {\n reject(new Error(\"EventSource not created\"));\n return;\n }\n\n const onOpen = () => {\n cleanup();\n this.setState(\"connected\");\n this.resetManualDisconnect();\n this.emit(\"connect\", undefined);\n resolve();\n };\n\n const onError = () => {\n cleanup();\n const error = new Error(\"Failed to connect to SSE stream\");\n this.emit(\"error\", { error });\n reject(error);\n };\n\n const cleanup = () => {\n this.eventSource?.removeEventListener(\"open\", onOpen);\n this.eventSource?.removeEventListener(\"error\", onError);\n };\n\n this.eventSource.addEventListener(\"open\", onOpen);\n this.eventSource.addEventListener(\"error\", onError);\n });\n\n // Setup message listeners for each event type\n this.setupEventListeners();\n } catch (error) {\n this.closeEventSource();\n throw error;\n }\n }\n\n /**\n * Close SSE connection.\n *\n * @remarks\n * Closes the EventSource and cleans up all event listeners.\n * Sets the manual disconnect flag to prevent automatic reconnection.\n *\n * @example\n * ```typescript\n * connection.disconnect();\n * console.log('Disconnected from SSE stream');\n * ```\n */\n disconnect(): void {\n this.setManualDisconnect();\n this.closeEventSource();\n this.handleDisconnect(\"Manual disconnect\");\n }\n\n /**\n * Get the last event ID received from the server.\n *\n * @returns Last event ID or null if none received\n *\n * @remarks\n * The event ID is used by the EventSource API to resume the stream\n * from the last received event after a reconnection. The browser\n * automatically sends this ID in the `Last-Event-ID` header.\n *\n * @example\n * ```typescript\n * const lastId = connection.getLastEventId();\n * if (lastId) {\n * console.log(`Last event: ${lastId}`);\n * }\n * ```\n */\n getLastEventId(): string | null {\n return this.lastEventId;\n }\n\n /**\n * Setup event listeners for configured event types.\n */\n private setupEventListeners(): void {\n if (!this.eventSource) return;\n\n // Add listener for each configured event type\n for (const eventType of this.sseConfig.eventTypes) {\n this.eventSource.addEventListener(eventType, (event: MessageEvent) => {\n this.handleMessage(event);\n });\n }\n\n // Add error listener for connection issues\n this.eventSource.addEventListener(\"error\", () => {\n this.handleError();\n });\n }\n\n /**\n * Handle incoming message event.\n */\n private handleMessage(event: MessageEvent): void {\n // Update last event ID if provided\n if (event.lastEventId) {\n this.lastEventId = event.lastEventId;\n }\n\n try {\n // Try to parse as JSON\n const data = JSON.parse(event.data);\n this.emit(\"message\", { data });\n } catch (error) {\n // If parsing fails, emit error but don't disconnect\n const parseError = new Error(\n `Failed to parse SSE message as JSON: ${event.data}`\n );\n this.emit(\"error\", { error: parseError });\n }\n }\n\n /**\n * Handle error event from EventSource.\n */\n private handleError(): void {\n // Only handle errors when connected (ignore reconnection attempts)\n if (this.state === \"connected\") {\n const error = new Error(\"SSE connection error\");\n this.emit(\"error\", { error });\n\n // Check if EventSource is closed\n if (this.eventSource?.readyState === EventSource.CLOSED) {\n this.closeEventSource();\n this.handleDisconnect(\"Connection closed by server\");\n }\n }\n }\n\n /**\n * Close EventSource and clean up.\n */\n private closeEventSource(): void {\n if (this.eventSource) {\n this.eventSource.close();\n this.eventSource = null;\n }\n }\n}\n","/**\n * @file WebSocket connection implementation\n * @module @maplibre-yaml/core/data/streaming\n */\n\nimport { BaseConnection } from \"./base-connection\";\nimport type { ConnectionConfig } from \"./base-connection\";\n\n/**\n * Configuration for WebSocket connections.\n *\n * @remarks\n * WebSocket provides full-duplex communication over a single TCP connection,\n * enabling bidirectional data flow between client and server.\n */\nexport interface WebSocketConfig extends ConnectionConfig {\n /**\n * WebSocket sub-protocols to use\n *\n * @remarks\n * Sub-protocols allow the client and server to agree on a specific\n * protocol on top of WebSocket. Can be a single string or array of strings.\n *\n * @example\n * ```typescript\n * protocols: 'json'\n * protocols: ['json', 'msgpack']\n * ```\n */\n protocols?: string | string[];\n}\n\n/**\n * WebSocket connection for bidirectional streaming.\n *\n * @remarks\n * Provides real-time bidirectional communication with automatic reconnection.\n * Unlike SSE, WebSocket supports sending data from client to server.\n *\n * Features:\n * - Full-duplex communication\n * - JSON message parsing with text fallback\n * - Manual reconnection with exponential backoff\n * - Sub-protocol support\n * - Send capability with connection validation\n *\n * @example\n * ```typescript\n * const ws = new WebSocketConnection({\n * url: 'wss://api.example.com/stream',\n * protocols: 'json',\n * });\n *\n * ws.on('message', ({ data }) => {\n * console.log('Received:', data);\n * });\n *\n * await ws.connect();\n * ws.send({ type: 'subscribe', channel: 'updates' });\n * ```\n */\nexport class WebSocketConnection extends BaseConnection {\n private ws: WebSocket | null = null;\n private readonly wsConfig: WebSocketConfig;\n\n /**\n * Create a new WebSocket connection.\n *\n * @param config - WebSocket configuration\n *\n * @example\n * ```typescript\n * const connection = new WebSocketConnection({\n * url: 'wss://api.example.com/stream',\n * protocols: ['json', 'v1'],\n * });\n * ```\n */\n constructor(config: WebSocketConfig) {\n super(config);\n\n this.wsConfig = {\n ...this.config,\n protocols: config.protocols,\n };\n }\n\n /**\n * Establish WebSocket connection.\n *\n * @remarks\n * Creates a WebSocket and sets up event listeners for:\n * - Connection open\n * - Message reception\n * - Connection close\n * - Errors\n *\n * Unlike EventSource, WebSocket does not have built-in reconnection,\n * so reconnection is handled manually via the BaseConnection.\n *\n * @throws Error if WebSocket is not supported or connection fails\n *\n * @example\n * ```typescript\n * await connection.connect();\n * console.log('Connected to WebSocket');\n * ```\n */\n async connect(): Promise<void> {\n if (this.ws !== null) {\n throw new Error(\"Connection already exists\");\n }\n\n this.setState(\"connecting\");\n\n try {\n // Create WebSocket with optional protocols\n this.ws = this.wsConfig.protocols\n ? new WebSocket(this.wsConfig.url, this.wsConfig.protocols)\n : new WebSocket(this.wsConfig.url);\n\n // Wait for connection to open\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) {\n reject(new Error(\"WebSocket not created\"));\n return;\n }\n\n const onOpen = () => {\n cleanup();\n this.setState(\"connected\");\n this.resetManualDisconnect();\n this.emit(\"connect\", undefined);\n resolve();\n };\n\n const onError = () => {\n cleanup();\n const error = new Error(\"Failed to connect to WebSocket\");\n this.emit(\"error\", { error });\n reject(error);\n };\n\n const cleanup = () => {\n if (this.ws) {\n this.ws.removeEventListener(\"open\", onOpen);\n this.ws.removeEventListener(\"error\", onError);\n }\n };\n\n this.ws.addEventListener(\"open\", onOpen);\n this.ws.addEventListener(\"error\", onError);\n });\n\n // Setup message and close listeners\n this.setupEventListeners();\n } catch (error) {\n this.closeWebSocket();\n throw error;\n }\n }\n\n /**\n * Close WebSocket connection.\n *\n * @remarks\n * Closes the WebSocket with a normal closure code (1000).\n * Sets the manual disconnect flag to prevent automatic reconnection.\n *\n * @example\n * ```typescript\n * connection.disconnect();\n * console.log('Disconnected from WebSocket');\n * ```\n */\n disconnect(): void {\n this.setManualDisconnect();\n this.closeWebSocket();\n this.handleDisconnect(\"Manual disconnect\");\n }\n\n /**\n * Send data through WebSocket.\n *\n * @param data - Data to send (will be JSON stringified)\n * @throws Error if not connected\n *\n * @remarks\n * The data is automatically converted to JSON before sending.\n * Throws an error if called when the connection is not established.\n *\n * @example\n * ```typescript\n * connection.send({ type: 'ping' });\n * connection.send({ type: 'subscribe', channel: 'updates' });\n * ```\n */\n send(data: unknown): void {\n if (!this.isConnected() || !this.ws) {\n throw new Error(\"Cannot send: not connected\");\n }\n\n const message = JSON.stringify(data);\n this.ws.send(message);\n }\n\n /**\n * Setup WebSocket event listeners.\n */\n private setupEventListeners(): void {\n if (!this.ws) return;\n\n // Message listener\n this.ws.addEventListener(\"message\", (event: MessageEvent) => {\n this.handleMessage(event);\n });\n\n // Close listener\n this.ws.addEventListener(\"close\", (event: CloseEvent) => {\n this.handleClose(event);\n });\n\n // Error listener\n this.ws.addEventListener(\"error\", () => {\n this.handleError();\n });\n }\n\n /**\n * Handle incoming message event.\n */\n private handleMessage(event: MessageEvent): void {\n try {\n // Try to parse as JSON\n const data = JSON.parse(event.data);\n this.emit(\"message\", { data });\n } catch {\n // If parsing fails, emit raw text data\n this.emit(\"message\", { data: event.data });\n }\n }\n\n /**\n * Handle close event from WebSocket.\n */\n private handleClose(event: CloseEvent): void {\n this.closeWebSocket();\n\n const reason = event.reason || `WebSocket closed (code: ${event.code})`;\n this.handleDisconnect(reason);\n }\n\n /**\n * Handle error event from WebSocket.\n */\n private handleError(): void {\n if (this.state === \"connecting\" || this.state === \"connected\") {\n const error = new Error(\"WebSocket connection error\");\n this.emit(\"error\", { error });\n }\n }\n\n /**\n * Close WebSocket and clean up.\n */\n private closeWebSocket(): void {\n if (this.ws) {\n // Use normal closure code (1000)\n if (this.ws.readyState === WebSocket.OPEN) {\n this.ws.close(1000, \"Normal closure\");\n }\n this.ws = null;\n }\n }\n}\n","import type { FeatureCollection } from \"geojson\";\nimport type { ConnectionState } from \"./base-connection\";\nimport { SSEConnection } from \"./sse-connection\";\nimport { WebSocketConnection } from \"./websocket-connection\";\nimport type { SSEConfig } from \"./sse-connection\";\nimport type { WebSocketConfig } from \"./websocket-connection\";\n\n/**\n * Configuration for a streaming connection.\n *\n * @example\n * ```typescript\n * const config: StreamConfig = {\n * type: 'sse',\n * url: 'https://api.example.com/events',\n * onData: (data) => console.log('Received:', data),\n * reconnect: { enabled: true, maxRetries: 10 }\n * };\n * ```\n */\nexport interface StreamConfig {\n /** Type of streaming connection */\n type: \"websocket\" | \"sse\";\n\n /** URL for the streaming connection */\n url: string;\n\n /** Callback for incoming data */\n onData: (data: FeatureCollection) => void;\n\n /** Callback for connection state changes */\n onStateChange?: (state: ConnectionState) => void;\n\n /** Callback for errors */\n onError?: (error: Error) => void;\n\n /** Reconnection configuration */\n reconnect?: {\n enabled?: boolean;\n maxRetries?: number;\n initialDelay?: number;\n maxDelay?: number;\n };\n\n /** Event types to listen for (SSE only) */\n eventTypes?: string[];\n\n /** WebSocket protocols (WebSocket only) */\n protocols?: string | string[];\n}\n\n/**\n * State of a streaming connection.\n */\nexport interface StreamState {\n /** Current connection state */\n connectionState: ConnectionState;\n\n /** Number of messages received */\n messageCount: number;\n\n /** Timestamp of last message (milliseconds) */\n lastMessage: number | null;\n\n /** Number of reconnection attempts */\n reconnectAttempts: number;\n}\n\n/**\n * Internal stream subscription.\n */\ninterface StreamSubscription {\n config: StreamConfig;\n connection: SSEConnection | WebSocketConnection;\n state: StreamState;\n}\n\n/**\n * Manages streaming connections (SSE and WebSocket).\n *\n * @remarks\n * Provides a unified interface for managing multiple streaming connections,\n * handling connection lifecycle, automatic reconnection, and message routing.\n *\n * Features:\n * - Multiple concurrent connections\n * - Automatic reconnection with exponential backoff\n * - Connection state tracking\n * - Message counting and statistics\n * - Type-safe callbacks\n *\n * @example\n * ```typescript\n * const manager = new StreamManager();\n *\n * // Connect to SSE stream\n * await manager.connect('earthquake-feed', {\n * type: 'sse',\n * url: 'https://earthquake.usgs.gov/events',\n * onData: (data) => updateMap(data),\n * reconnect: { enabled: true }\n * });\n *\n * // Connect to WebSocket stream\n * await manager.connect('vehicle-updates', {\n * type: 'websocket',\n * url: 'wss://transit.example.com/vehicles',\n * onData: (data) => updateVehicles(data),\n * protocols: ['json']\n * });\n *\n * // Send data via WebSocket\n * manager.send('vehicle-updates', { type: 'subscribe', channel: 'all' });\n *\n * // Check connection state\n * const state = manager.getState('earthquake-feed');\n * console.log(`Messages received: ${state?.messageCount}`);\n *\n * // Disconnect when done\n * manager.disconnect('earthquake-feed');\n * manager.disconnectAll();\n * ```\n */\nexport class StreamManager {\n private subscriptions = new Map<string, StreamSubscription>();\n\n /**\n * Connect to a streaming source.\n *\n * @param id - Unique identifier for this connection\n * @param config - Stream configuration\n * @throws {Error} If a connection with the given id already exists\n *\n * @example\n * ```typescript\n * await manager.connect('updates', {\n * type: 'sse',\n * url: 'https://api.example.com/stream',\n * onData: (data) => console.log(data)\n * });\n * ```\n */\n async connect(id: string, config: StreamConfig): Promise<void> {\n if (this.subscriptions.has(id)) {\n throw new Error(`Stream with id \"${id}\" already exists`);\n }\n\n // Create connection based on type\n const connection = this.createConnection(config);\n\n // Initialize state\n const state: StreamState = {\n connectionState: \"disconnected\",\n messageCount: 0,\n lastMessage: null,\n reconnectAttempts: 0,\n };\n\n // Store subscription\n this.subscriptions.set(id, { config, connection, state });\n\n // Setup event handlers\n this.setupEventHandlers(connection, config, state);\n\n // Connect\n await connection.connect();\n }\n\n /**\n * Disconnect a specific stream.\n *\n * @param id - Stream identifier\n *\n * @example\n * ```typescript\n * manager.disconnect('updates');\n * ```\n */\n disconnect(id: string): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription) {\n return;\n }\n\n subscription.connection.disconnect();\n this.subscriptions.delete(id);\n }\n\n /**\n * Disconnect all active streams.\n *\n * @example\n * ```typescript\n * manager.disconnectAll();\n * ```\n */\n disconnectAll(): void {\n for (const id of this.subscriptions.keys()) {\n this.disconnect(id);\n }\n }\n\n /**\n * Get the current state of a stream.\n *\n * @param id - Stream identifier\n * @returns Stream state or null if not found\n *\n * @example\n * ```typescript\n * const state = manager.getState('updates');\n * if (state) {\n * console.log(`State: ${state.connectionState}`);\n * console.log(`Messages: ${state.messageCount}`);\n * }\n * ```\n */\n getState(id: string): StreamState | null {\n const subscription = this.subscriptions.get(id);\n return subscription ? { ...subscription.state } : null;\n }\n\n /**\n * Check if a stream is currently connected.\n *\n * @param id - Stream identifier\n * @returns True if connected, false otherwise\n *\n * @example\n * ```typescript\n * if (manager.isConnected('updates')) {\n * console.log('Stream is active');\n * }\n * ```\n */\n isConnected(id: string): boolean {\n const subscription = this.subscriptions.get(id);\n return subscription ? subscription.connection.isConnected() : false;\n }\n\n /**\n * Get all active stream IDs.\n *\n * @returns Array of active stream identifiers\n *\n * @example\n * ```typescript\n * const activeStreams = manager.getActiveIds();\n * console.log(`Active streams: ${activeStreams.join(', ')}`);\n * ```\n */\n getActiveIds(): string[] {\n return Array.from(this.subscriptions.keys());\n }\n\n /**\n * Send data to a WebSocket connection.\n *\n * @param id - Stream identifier\n * @param data - Data to send (will be JSON stringified)\n * @throws {Error} If stream is not a WebSocket connection or not connected\n *\n * @example\n * ```typescript\n * manager.send('ws-updates', {\n * type: 'subscribe',\n * channels: ['news', 'sports']\n * });\n * ```\n */\n send(id: string, data: unknown): void {\n const subscription = this.subscriptions.get(id);\n if (!subscription) {\n throw new Error(`Stream \"${id}\" not found`);\n }\n\n if (!(subscription.connection instanceof WebSocketConnection)) {\n throw new Error(`Stream \"${id}\" is not a WebSocket connection`);\n }\n\n subscription.connection.send(data);\n }\n\n /**\n * Clean up all resources.\n *\n * @example\n * ```typescript\n * manager.destroy();\n * ```\n */\n destroy(): void {\n this.disconnectAll();\n }\n\n /**\n * Create a connection instance based on config type.\n */\n private createConnection(\n config: StreamConfig\n ): SSEConnection | WebSocketConnection {\n const reconnectConfig =\n config.reconnect?.enabled !== false\n ? {\n reconnect: true,\n retryConfig: {\n maxRetries: config.reconnect?.maxRetries ?? 10,\n initialDelay: config.reconnect?.initialDelay ?? 1000,\n maxDelay: config.reconnect?.maxDelay ?? 30000,\n },\n }\n : { reconnect: false };\n\n if (config.type === \"sse\") {\n const sseConfig: SSEConfig = {\n url: config.url,\n ...reconnectConfig,\n eventTypes: config.eventTypes,\n };\n return new SSEConnection(sseConfig);\n } else {\n const wsConfig: WebSocketConfig = {\n url: config.url,\n ...reconnectConfig,\n protocols: config.protocols,\n };\n return new WebSocketConnection(wsConfig);\n }\n }\n\n /**\n * Setup event handlers for a connection.\n */\n private setupEventHandlers(\n connection: SSEConnection | WebSocketConnection,\n config: StreamConfig,\n state: StreamState\n ): void {\n // State change handler\n connection.on(\"stateChange\", ({ to }) => {\n state.connectionState = to;\n config.onStateChange?.(to);\n });\n\n // Message handler\n connection.on(\"message\", ({ data }) => {\n state.messageCount++;\n state.lastMessage = Date.now();\n\n // Validate data is a FeatureCollection\n if (this.isFeatureCollection(data)) {\n config.onData(data);\n } else {\n const error = new Error(\n \"Received data is not a valid GeoJSON FeatureCollection\"\n );\n config.onError?.(error);\n }\n });\n\n // Error handler\n connection.on(\"error\", ({ error }) => {\n config.onError?.(error);\n });\n\n // Reconnection tracking\n connection.on(\"reconnecting\", () => {\n state.reconnectAttempts++;\n });\n\n // Reset attempts on successful reconnection\n connection.on(\"reconnected\", () => {\n state.reconnectAttempts = 0;\n });\n\n // Failed connection\n connection.on(\"failed\", ({ lastError }) => {\n config.onError?.(lastError);\n });\n }\n\n /**\n * Type guard to check if data is a FeatureCollection.\n */\n private isFeatureCollection(data: unknown): data is FeatureCollection {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"type\" in data &&\n data.type === \"FeatureCollection\" &&\n \"features\" in data &&\n Array.isArray(data.features)\n );\n }\n}\n","import type { FeatureCollection, Feature } from \"geojson\";\n\n/**\n * Strategy for merging data.\n */\nexport type MergeStrategy = \"replace\" | \"merge\" | \"append-window\";\n\n/**\n * Options for merging data.\n *\n * @example\n * ```typescript\n * // Replace strategy\n * const replaceOptions: MergeOptions = {\n * strategy: 'replace'\n * };\n *\n * // Merge strategy with update key\n * const mergeOptions: MergeOptions = {\n * strategy: 'merge',\n * updateKey: 'id'\n * };\n *\n * // Append-window with size and time limits\n * const windowOptions: MergeOptions = {\n * strategy: 'append-window',\n * windowSize: 100,\n * windowDuration: 3600000, // 1 hour\n * timestampField: 'timestamp'\n * };\n * ```\n */\nexport interface MergeOptions {\n /** Merge strategy to use */\n strategy: MergeStrategy;\n\n /** Property key used to identify features for merge strategy */\n updateKey?: string;\n\n /** Maximum number of features to keep (append-window) */\n windowSize?: number;\n\n /** Maximum age of features in milliseconds (append-window) */\n windowDuration?: number;\n\n /** Property field containing timestamp (append-window) */\n timestampField?: string;\n}\n\n/**\n * Result of a merge operation.\n */\nexport interface MergeResult {\n /** Merged feature collection */\n data: FeatureCollection;\n\n /** Number of features added */\n added: number;\n\n /** Number of features updated */\n updated: number;\n\n /** Number of features removed */\n removed: number;\n\n /** Total number of features in result */\n total: number;\n}\n\n/**\n * Merges GeoJSON FeatureCollections using configurable strategies.\n *\n * @remarks\n * Supports three merge strategies:\n *\n * **replace**: Complete replacement of existing data\n * - Replaces all existing features with incoming features\n * - Simple and efficient for full updates\n *\n * **merge**: Update by key, keep unmatched\n * - Updates existing features by matching on a key property\n * - Adds new features that don't match existing keys\n * - Preserves existing features not in the update\n * - Requires `updateKey` option\n *\n * **append-window**: Add with time/size limits\n * - Appends incoming features to existing features\n * - Applies size limit (keeps most recent N features)\n * - Applies time limit (removes features older than duration)\n * - Requires `timestampField` for time-based filtering\n *\n * @example\n * ```typescript\n * const merger = new DataMerger();\n *\n * // Replace all data\n * const result = merger.merge(existing, incoming, {\n * strategy: 'replace'\n * });\n *\n * // Merge by vehicle ID\n * const result = merger.merge(existing, incoming, {\n * strategy: 'merge',\n * updateKey: 'vehicleId'\n * });\n *\n * // Append with 100 feature limit and 1 hour window\n * const result = merger.merge(existing, incoming, {\n * strategy: 'append-window',\n * windowSize: 100,\n * windowDuration: 3600000,\n * timestampField: 'timestamp'\n * });\n * ```\n */\nexport class DataMerger {\n /**\n * Merge two FeatureCollections using the specified strategy.\n *\n * @param existing - Existing feature collection\n * @param incoming - Incoming feature collection to merge\n * @param options - Merge options including strategy\n * @returns Merge result with statistics\n * @throws {Error} If merge strategy requires missing options\n *\n * @example\n * ```typescript\n * const merger = new DataMerger();\n *\n * const result = merger.merge(existingData, newData, {\n * strategy: 'merge',\n * updateKey: 'id'\n * });\n *\n * console.log(`Added: ${result.added}, Updated: ${result.updated}`);\n * console.log(`Total features: ${result.total}`);\n * ```\n */\n merge(\n existing: FeatureCollection,\n incoming: FeatureCollection,\n options: MergeOptions\n ): MergeResult {\n switch (options.strategy) {\n case \"replace\":\n return this.mergeReplace(existing, incoming);\n case \"merge\":\n return this.mergeMerge(existing, incoming, options);\n case \"append-window\":\n return this.mergeAppendWindow(existing, incoming, options);\n default:\n throw new Error(\n `Unknown merge strategy: ${options.strategy as string}`\n );\n }\n }\n\n /**\n * Replace strategy: Complete replacement of existing data.\n */\n private mergeReplace(\n existing: FeatureCollection,\n incoming: FeatureCollection\n ): MergeResult {\n return {\n data: incoming,\n added: incoming.features.length,\n updated: 0,\n removed: existing.features.length,\n total: incoming.features.length,\n };\n }\n\n /**\n * Merge strategy: Update by key, keep unmatched features.\n */\n private mergeMerge(\n existing: FeatureCollection,\n incoming: FeatureCollection,\n options: MergeOptions\n ): MergeResult {\n if (!options.updateKey) {\n throw new Error(\"updateKey is required for merge strategy\");\n }\n\n const updateKey = options.updateKey;\n let added = 0;\n let updated = 0;\n\n // Create a map of existing features by their key\n const existingMap = new Map<unknown, Feature>();\n for (const feature of existing.features) {\n const key = feature.properties?.[updateKey];\n if (key !== undefined && key !== null) {\n existingMap.set(key, feature);\n }\n }\n\n // Process incoming features\n for (const feature of incoming.features) {\n const key = feature.properties?.[updateKey];\n if (key !== undefined && key !== null) {\n if (existingMap.has(key)) {\n updated++;\n } else {\n added++;\n }\n existingMap.set(key, feature);\n }\n }\n\n // Convert map back to features array\n const features = Array.from(existingMap.values());\n\n return {\n data: {\n type: \"FeatureCollection\",\n features,\n },\n added,\n updated,\n removed: 0,\n total: features.length,\n };\n }\n\n /**\n * Append-window strategy: Add with time/size limits.\n */\n private mergeAppendWindow(\n existing: FeatureCollection,\n incoming: FeatureCollection,\n options: MergeOptions\n ): MergeResult {\n const initialCount = existing.features.length;\n\n // Combine existing and incoming features\n let features = [...existing.features, ...incoming.features];\n\n // Apply time window if configured\n if (options.windowDuration && options.timestampField) {\n const cutoffTime = Date.now() - options.windowDuration;\n\n features = features.filter((feature) => {\n const timestamp = feature.properties?.[options.timestampField!];\n if (typeof timestamp === \"number\") {\n return timestamp >= cutoffTime;\n }\n // Keep features without timestamp (safer than removing)\n return true;\n });\n\n // Sort by timestamp descending (most recent first)\n features.sort((a, b) => {\n const timeA = a.properties?.[options.timestampField!] ?? 0;\n const timeB = b.properties?.[options.timestampField!] ?? 0;\n return (timeB as number) - (timeA as number);\n });\n\n // Apply size window if configured\n if (options.windowSize && features.length > options.windowSize) {\n features = features.slice(0, options.windowSize);\n }\n\n const removed = initialCount + incoming.features.length - features.length;\n\n return {\n data: {\n type: \"FeatureCollection\",\n features,\n },\n added: incoming.features.length,\n updated: 0,\n removed,\n total: features.length,\n };\n }\n\n // Apply size window only if no time window\n if (options.windowSize) {\n // For size-only window, keep most recent features\n // If timestampField is provided, sort by it; otherwise keep insertion order\n if (options.timestampField) {\n features.sort((a, b) => {\n const timeA = a.properties?.[options.timestampField!] ?? 0;\n const timeB = b.properties?.[options.timestampField!] ?? 0;\n return (timeB as number) - (timeA as number);\n });\n }\n\n if (features.length > options.windowSize) {\n features = features.slice(0, options.windowSize);\n }\n }\n\n const removed = initialCount + incoming.features.length - features.length;\n\n return {\n data: {\n type: \"FeatureCollection\",\n features,\n },\n added: incoming.features.length,\n updated: 0,\n removed,\n total: features.length,\n };\n }\n}\n","import { EventEmitter } from \"../utils/event-emitter\";\n\n/**\n * Configuration for the loading manager.\n */\nexport interface LoadingConfig {\n /** Whether to show loading UI overlays (default: false) */\n showUI: boolean;\n\n /** Custom messages for loading states */\n messages?: {\n loading?: string;\n error?: string;\n retry?: string;\n };\n\n /** Spinner style (default: 'circle') */\n spinnerStyle?: \"circle\" | \"dots\";\n\n /** Minimum time to display loading UI in milliseconds (default: 300) */\n minDisplayTime?: number;\n}\n\n/**\n * Events emitted by the loading manager.\n */\nexport interface LoadingEvents extends Record<string, unknown> {\n \"loading:start\": { layerId: string; message?: string };\n \"loading:progress\": { layerId: string; loaded: number; total?: number };\n \"loading:complete\": {\n layerId: string;\n duration: number;\n fromCache: boolean;\n };\n \"loading:error\": { layerId: string; error: Error; retrying: boolean };\n \"loading:retry\": { layerId: string; attempt: number; delay: number };\n}\n\n/**\n * State of a loading operation.\n */\nexport interface LoadingState {\n /** Whether currently loading */\n isLoading: boolean;\n\n /** When loading started (timestamp) */\n startTime: number | null;\n\n /** Custom loading message */\n message?: string;\n\n /** Current error if any */\n error?: Error;\n\n /** Current retry attempt number */\n retryAttempt?: number;\n}\n\n/**\n * Internal loading subscription with UI elements.\n */\ninterface LoadingSubscription {\n state: LoadingState;\n container: HTMLElement | null;\n overlay: HTMLElement | null;\n minDisplayTimer: number | null;\n}\n\n/**\n * Manages loading states and optional UI overlays.\n *\n * @remarks\n * Provides centralized loading state management with optional visual feedback.\n * Emits events for all loading state changes, allowing external UI integration.\n * Can optionally show built-in loading overlays with spinners and error messages.\n *\n * Features:\n * - Event-driven state changes\n * - Optional loading UI overlays\n * - Customizable messages and spinner styles\n * - Minimum display time to prevent flashing\n * - Retry support with visual feedback\n * - Multiple concurrent loading operations\n *\n * @example\n * ```typescript\n * const manager = new LoadingManager({\n * showUI: true,\n * minDisplayTime: 300\n * });\n *\n * // Listen to loading events\n * manager.on('loading:start', ({ layerId }) => {\n * console.log(`Loading ${layerId}...`);\n * });\n *\n * // Show loading state\n * const container = document.getElementById('map-container');\n * manager.showLoading('vehicles', container, 'Loading vehicle data...');\n *\n * // Hide when complete\n * manager.hideLoading('vehicles', { fromCache: false });\n *\n * // Show error with retry\n * manager.showError('vehicles', container, new Error('Failed'), () => {\n * // Retry logic\n * });\n * ```\n */\nexport class LoadingManager extends EventEmitter<LoadingEvents> {\n private config: Required<LoadingConfig>;\n private subscriptions = new Map<string, LoadingSubscription>();\n\n private static readonly DEFAULT_CONFIG: Required<LoadingConfig> = {\n showUI: false,\n messages: {\n loading: \"Loading...\",\n error: \"Failed to load data\",\n retry: \"Retrying...\",\n },\n spinnerStyle: \"circle\",\n minDisplayTime: 300,\n };\n\n /**\n * Create a new LoadingManager.\n *\n * @param config - Loading manager configuration\n *\n * @example\n * ```typescript\n * const manager = new LoadingManager({\n * showUI: true,\n * messages: {\n * loading: 'Fetching data...',\n * error: 'Could not load data'\n * },\n * spinnerStyle: 'dots',\n * minDisplayTime: 500\n * });\n * ```\n */\n constructor(config?: Partial<LoadingConfig>) {\n super();\n\n this.config = {\n ...LoadingManager.DEFAULT_CONFIG,\n ...config,\n messages: {\n ...LoadingManager.DEFAULT_CONFIG.messages,\n ...config?.messages,\n },\n };\n }\n\n /**\n * Show loading state for a layer.\n *\n * @param layerId - Layer identifier\n * @param container - Container element for UI overlay\n * @param message - Custom loading message\n *\n * @example\n * ```typescript\n * const container = document.getElementById('map');\n * manager.showLoading('earthquakes', container, 'Loading earthquake data...');\n * ```\n */\n showLoading(layerId: string, container: HTMLElement, message?: string): void {\n const existingSub = this.subscriptions.get(layerId);\n if (existingSub?.state.isLoading) {\n return; // Already loading\n }\n\n const state: LoadingState = {\n isLoading: true,\n startTime: Date.now(),\n message: message || this.config.messages.loading,\n };\n\n let overlay: HTMLElement | null = null;\n if (this.config.showUI) {\n overlay = this.createLoadingOverlay(\n state.message || this.config.messages.loading || \"Loading...\"\n );\n container.style.position = \"relative\";\n container.appendChild(overlay);\n }\n\n this.subscriptions.set(layerId, {\n state,\n container,\n overlay,\n minDisplayTimer: null,\n });\n\n this.emit(\"loading:start\", { layerId, message: state.message });\n }\n\n /**\n * Hide loading state for a layer.\n *\n * @param layerId - Layer identifier\n * @param result - Optional result information\n *\n * @example\n * ```typescript\n * manager.hideLoading('earthquakes', { fromCache: true });\n * ```\n */\n hideLoading(layerId: string, result?: { fromCache: boolean }): void {\n const subscription = this.subscriptions.get(layerId);\n if (!subscription?.state.isLoading) {\n return;\n }\n\n const duration = Date.now() - (subscription.state.startTime || Date.now());\n const timeRemaining = Math.max(0, this.config.minDisplayTime - duration);\n\n const cleanup = () => {\n if (subscription.overlay) {\n subscription.overlay.remove();\n }\n subscription.state.isLoading = false;\n subscription.state.startTime = null;\n subscription.state.error = undefined;\n subscription.state.retryAttempt = undefined;\n\n this.emit(\"loading:complete\", {\n layerId,\n duration,\n fromCache: result?.fromCache ?? false,\n });\n };\n\n if (timeRemaining > 0 && subscription.overlay) {\n // Wait for minimum display time\n subscription.minDisplayTimer = window.setTimeout(cleanup, timeRemaining);\n } else {\n cleanup();\n }\n }\n\n /**\n * Show error state for a layer.\n *\n * @param layerId - Layer identifier\n * @param container - Container element for UI overlay\n * @param error - Error that occurred\n * @param onRetry - Optional retry callback\n *\n * @example\n * ```typescript\n * manager.showError('earthquakes', container, error, () => {\n * // Retry loading\n * fetchData();\n * });\n * ```\n */\n showError(\n layerId: string,\n container: HTMLElement,\n error: Error,\n onRetry?: () => void\n ): void {\n const subscription = this.subscriptions.get(layerId);\n const state: LoadingState = subscription?.state || {\n isLoading: false,\n startTime: null,\n };\n\n state.error = error;\n state.isLoading = false;\n\n // Remove loading overlay if present\n if (subscription?.overlay) {\n subscription.overlay.remove();\n }\n\n let overlay: HTMLElement | null = null;\n if (this.config.showUI) {\n overlay = this.createErrorOverlay(\n error.message || this.config.messages.error || \"An error occurred\",\n onRetry\n );\n container.style.position = \"relative\";\n container.appendChild(overlay);\n }\n\n this.subscriptions.set(layerId, {\n state,\n container,\n overlay,\n minDisplayTimer: null,\n });\n\n this.emit(\"loading:error\", {\n layerId,\n error,\n retrying: !!onRetry,\n });\n }\n\n /**\n * Show retrying state for a layer.\n *\n * @param layerId - Layer identifier\n * @param attempt - Current retry attempt number\n * @param delay - Delay before retry in milliseconds\n *\n * @example\n * ```typescript\n * manager.showRetrying('earthquakes', 2, 2000);\n * ```\n */\n showRetrying(layerId: string, attempt: number, delay: number): void {\n const subscription = this.subscriptions.get(layerId);\n if (subscription) {\n subscription.state.retryAttempt = attempt;\n\n if (subscription.overlay && this.config.showUI) {\n const message = `${this.config.messages.retry} (attempt ${attempt})`;\n const newOverlay = this.createLoadingOverlay(message);\n subscription.overlay.replaceWith(newOverlay);\n subscription.overlay = newOverlay;\n }\n }\n\n this.emit(\"loading:retry\", { layerId, attempt, delay });\n }\n\n /**\n * Get loading state for a layer.\n *\n * @param layerId - Layer identifier\n * @returns Loading state or null if not found\n *\n * @example\n * ```typescript\n * const state = manager.getState('earthquakes');\n * if (state?.isLoading) {\n * console.log('Still loading...');\n * }\n * ```\n */\n getState(layerId: string): LoadingState | null {\n const subscription = this.subscriptions.get(layerId);\n return subscription ? { ...subscription.state } : null;\n }\n\n /**\n * Check if a layer is currently loading.\n *\n * @param layerId - Layer identifier\n * @returns True if loading, false otherwise\n *\n * @example\n * ```typescript\n * if (manager.isLoading('earthquakes')) {\n * console.log('Loading in progress');\n * }\n * ```\n */\n isLoading(layerId: string): boolean {\n return this.subscriptions.get(layerId)?.state.isLoading ?? false;\n }\n\n /**\n * Clear all loading states and UI.\n *\n * @example\n * ```typescript\n * manager.clearAll();\n * ```\n */\n clearAll(): void {\n for (const [layerId, subscription] of this.subscriptions.entries()) {\n if (subscription.minDisplayTimer) {\n clearTimeout(subscription.minDisplayTimer);\n }\n if (subscription.overlay) {\n subscription.overlay.remove();\n }\n this.subscriptions.delete(layerId);\n }\n }\n\n /**\n * Clean up all resources.\n *\n * @example\n * ```typescript\n * manager.destroy();\n * ```\n */\n destroy(): void {\n this.clearAll();\n this.removeAllListeners();\n }\n\n /**\n * Create loading overlay element.\n */\n private createLoadingOverlay(message: string): HTMLElement {\n const overlay = document.createElement(\"div\");\n overlay.className = \"mly-loading-overlay\";\n\n const content = document.createElement(\"div\");\n content.className = \"mly-loading-content\";\n\n const spinner = document.createElement(\"div\");\n spinner.className = `mly-spinner mly-spinner--${this.config.spinnerStyle}`;\n\n const text = document.createElement(\"div\");\n text.className = \"mly-loading-text\";\n text.textContent = message;\n\n content.appendChild(spinner);\n content.appendChild(text);\n overlay.appendChild(content);\n\n return overlay;\n }\n\n /**\n * Create error overlay element.\n */\n private createErrorOverlay(\n message: string,\n onRetry?: () => void\n ): HTMLElement {\n const overlay = document.createElement(\"div\");\n overlay.className = \"mly-loading-overlay mly-loading-overlay--error\";\n\n const content = document.createElement(\"div\");\n content.className = \"mly-error-content\";\n\n const icon = document.createElement(\"div\");\n icon.className = \"mly-error-icon\";\n icon.textContent = \"⚠\";\n\n const text = document.createElement(\"div\");\n text.className = \"mly-error-text\";\n text.textContent = message;\n\n content.appendChild(icon);\n content.appendChild(text);\n\n if (onRetry) {\n const button = document.createElement(\"button\");\n button.className = \"mly-retry-button\";\n button.textContent = \"Retry\";\n button.onclick = () => {\n overlay.remove();\n onRetry();\n };\n content.appendChild(button);\n }\n\n overlay.appendChild(content);\n\n return overlay;\n }\n}\n","/**\n * @file Layer manager for MapLibre map layers\n * @module @maplibre-yaml/core/renderer\n */\n\nimport type { Map as MapLibreMap, GeoJSONSource } from \"maplibre-gl\";\nimport type { z } from \"zod\";\nimport type { FeatureCollection } from \"geojson\";\nimport {\n LayerSchema,\n GeoJSONSourceSchema,\n VectorSourceSchema,\n RasterSourceSchema,\n ImageSourceSchema,\n VideoSourceSchema,\n} from \"../schemas\";\nimport { DataFetcher } from \"../data/data-fetcher\";\nimport { PollingManager } from \"../data/polling-manager\";\nimport { StreamManager } from \"../data/streaming/stream-manager\";\nimport { DataMerger } from \"../data/merge/data-merger\";\nimport { LoadingManager } from \"../ui/loading-manager\";\nimport type { MergeStrategy } from \"../data/merge/data-merger\";\n\ntype Layer = z.infer<typeof LayerSchema>;\ntype GeoJSONSourceConfig = z.infer<typeof GeoJSONSourceSchema>;\ntype VectorSourceConfig = z.infer<typeof VectorSourceSchema>;\ntype RasterSourceConfig = z.infer<typeof RasterSourceSchema>;\ntype ImageSourceConfig = z.infer<typeof ImageSourceSchema>;\ntype VideoSourceConfig = z.infer<typeof VideoSourceSchema>;\n\n/**\n * Callbacks for layer data loading events\n */\nexport interface LayerManagerCallbacks {\n onDataLoading?: (layerId: string) => void;\n onDataLoaded?: (layerId: string, featureCount: number) => void;\n onDataError?: (layerId: string, error: Error) => void;\n}\n\n/**\n * Manages map layers and their data sources\n */\nexport class LayerManager {\n private map: MapLibreMap;\n private callbacks: LayerManagerCallbacks;\n private dataFetcher: DataFetcher;\n private pollingManager: PollingManager;\n private streamManager: StreamManager;\n private dataMerger: DataMerger;\n private loadingManager: LoadingManager;\n private sourceData: Map<string, FeatureCollection>;\n private layerToSource: Map<string, string>;\n\n // Legacy support (deprecated)\n private refreshIntervals: Map<string, NodeJS.Timeout>;\n private abortControllers: Map<string, AbortController>;\n\n constructor(map: MapLibreMap, callbacks?: LayerManagerCallbacks) {\n this.map = map;\n this.callbacks = callbacks || {};\n this.dataFetcher = new DataFetcher();\n this.pollingManager = new PollingManager();\n this.streamManager = new StreamManager();\n this.dataMerger = new DataMerger();\n this.loadingManager = new LoadingManager({ showUI: false });\n this.sourceData = new Map();\n this.layerToSource = new Map();\n\n // Legacy support\n this.refreshIntervals = new Map();\n this.abortControllers = new Map();\n }\n\n async addLayer(layer: Layer): Promise<void> {\n const sourceId = `${layer.id}-source`;\n this.layerToSource.set(layer.id, sourceId);\n await this.addSource(sourceId, layer);\n\n const layerSpec: any = {\n id: layer.id,\n type: layer.type,\n source: sourceId,\n };\n\n if (\"paint\" in layer && layer.paint) layerSpec.paint = layer.paint;\n if (\"layout\" in layer && layer.layout) layerSpec.layout = layer.layout;\n if (\"source-layer\" in layer && layer[\"source-layer\"])\n layerSpec[\"source-layer\"] = layer[\"source-layer\"];\n if (layer.minzoom !== undefined) layerSpec.minzoom = layer.minzoom;\n if (layer.maxzoom !== undefined) layerSpec.maxzoom = layer.maxzoom;\n if (layer.filter) layerSpec.filter = layer.filter;\n\n if (layer.visible === false) {\n layerSpec.layout = layerSpec.layout || {};\n layerSpec.layout.visibility = \"none\";\n }\n\n this.map.addLayer(layerSpec, layer.before as string | undefined);\n\n // Check if this is a GeoJSON source with refresh interval (legacy or new config)\n if (typeof layer.source === \"object\" && layer.source !== null) {\n const sourceObj = layer.source as GeoJSONSourceConfig;\n if (sourceObj.type === \"geojson\") {\n // Use new refresh config if available, otherwise fall back to legacy\n if (sourceObj.refresh || sourceObj.refreshInterval) {\n await this.setupDataUpdates(layer.id, sourceId, sourceObj);\n }\n }\n }\n }\n\n private async addSource(sourceId: string, layer: Layer): Promise<void> {\n // Handle source reference (string ID)\n if (typeof layer.source === \"string\") {\n if (!this.map.getSource(layer.source)) {\n throw new Error(`Source reference '${layer.source}' not found`);\n }\n return;\n }\n\n // layer.source is now guaranteed to be an object\n const source = layer.source as { type: string };\n\n if (source.type === \"geojson\") {\n const geojsonSource = source as unknown as GeoJSONSourceConfig;\n\n if (geojsonSource.url) {\n await this.addGeoJSONSourceFromURL(sourceId, layer.id, geojsonSource);\n } else if (geojsonSource.data) {\n const sourceSpec: any = {\n type: \"geojson\",\n data: geojsonSource.data,\n };\n\n // Only add clustering properties if they are defined\n if (geojsonSource.cluster !== undefined) sourceSpec.cluster = geojsonSource.cluster;\n if (geojsonSource.clusterRadius !== undefined) sourceSpec.clusterRadius = geojsonSource.clusterRadius;\n if (geojsonSource.clusterMaxZoom !== undefined) sourceSpec.clusterMaxZoom = geojsonSource.clusterMaxZoom;\n if (geojsonSource.clusterMinPoints !== undefined) sourceSpec.clusterMinPoints = geojsonSource.clusterMinPoints;\n if (geojsonSource.clusterProperties !== undefined) sourceSpec.clusterProperties = geojsonSource.clusterProperties;\n\n this.map.addSource(sourceId, sourceSpec);\n } else if (geojsonSource.stream) {\n this.map.addSource(sourceId, {\n type: \"geojson\",\n data: { type: \"FeatureCollection\", features: [] },\n });\n }\n } else if (source.type === \"vector\") {\n const vectorSource = source as unknown as VectorSourceConfig;\n const vectorSpec: any = { type: \"vector\" };\n if (vectorSource.url) vectorSpec.url = vectorSource.url;\n if (vectorSource.tiles) vectorSpec.tiles = vectorSource.tiles;\n if (vectorSource.minzoom !== undefined)\n vectorSpec.minzoom = vectorSource.minzoom;\n if (vectorSource.maxzoom !== undefined)\n vectorSpec.maxzoom = vectorSource.maxzoom;\n if (vectorSource.bounds) vectorSpec.bounds = vectorSource.bounds;\n if (vectorSource.attribution)\n vectorSpec.attribution = vectorSource.attribution;\n this.map.addSource(sourceId, vectorSpec);\n } else if (source.type === \"raster\") {\n const rasterSource = source as unknown as RasterSourceConfig;\n const rasterSpec: any = { type: \"raster\" };\n if (rasterSource.url) rasterSpec.url = rasterSource.url;\n if (rasterSource.tiles) rasterSpec.tiles = rasterSource.tiles;\n if (rasterSource.tileSize !== undefined)\n rasterSpec.tileSize = rasterSource.tileSize;\n if (rasterSource.minzoom !== undefined)\n rasterSpec.minzoom = rasterSource.minzoom;\n if (rasterSource.maxzoom !== undefined)\n rasterSpec.maxzoom = rasterSource.maxzoom;\n if (rasterSource.bounds) rasterSpec.bounds = rasterSource.bounds;\n if (rasterSource.attribution)\n rasterSpec.attribution = rasterSource.attribution;\n this.map.addSource(sourceId, rasterSpec);\n } else if (source.type === \"image\") {\n const imageSource = source as unknown as ImageSourceConfig;\n this.map.addSource(sourceId, {\n type: \"image\",\n url: imageSource.url,\n coordinates: imageSource.coordinates,\n });\n } else if (source.type === \"video\") {\n const videoSource = source as unknown as VideoSourceConfig;\n this.map.addSource(sourceId, {\n type: \"video\",\n urls: videoSource.urls,\n coordinates: videoSource.coordinates,\n });\n }\n }\n\n private async addGeoJSONSourceFromURL(\n sourceId: string,\n layerId: string,\n config: GeoJSONSourceConfig\n ): Promise<void> {\n // Determine initial data source\n let initialData: FeatureCollection = {\n type: \"FeatureCollection\",\n features: [],\n };\n\n if (config.prefetchedData) {\n initialData = config.prefetchedData as FeatureCollection;\n } else if (config.data) {\n initialData = config.data as FeatureCollection;\n }\n\n // Add source with initial data - only include clustering properties if defined\n const sourceSpec: any = {\n type: \"geojson\",\n data: initialData,\n };\n\n // Only add clustering properties if they are defined\n if (config.cluster !== undefined) sourceSpec.cluster = config.cluster;\n if (config.clusterRadius !== undefined) sourceSpec.clusterRadius = config.clusterRadius;\n if (config.clusterMaxZoom !== undefined) sourceSpec.clusterMaxZoom = config.clusterMaxZoom;\n if (config.clusterMinPoints !== undefined) sourceSpec.clusterMinPoints = config.clusterMinPoints;\n if (config.clusterProperties !== undefined) sourceSpec.clusterProperties = config.clusterProperties;\n\n this.map.addSource(sourceId, sourceSpec);\n\n this.sourceData.set(sourceId, initialData);\n\n // Fetch from URL if needed\n if (config.url && !config.prefetchedData) {\n this.callbacks.onDataLoading?.(layerId);\n\n try {\n const cacheEnabled = config.cache?.enabled ?? true;\n const cacheTTL = config.cache?.ttl;\n\n const result = await this.dataFetcher.fetch(config.url, {\n skipCache: !cacheEnabled,\n ttl: cacheTTL,\n });\n\n const data = result.data as FeatureCollection;\n this.sourceData.set(sourceId, data);\n\n const source = this.map.getSource(sourceId) as GeoJSONSource;\n if (source?.setData) {\n source.setData(data);\n }\n\n this.callbacks.onDataLoaded?.(layerId, data.features.length);\n } catch (error: any) {\n this.callbacks.onDataError?.(layerId, error);\n }\n } else if (config.prefetchedData) {\n // Emit loaded event for prefetched data\n this.callbacks.onDataLoaded?.(layerId, initialData.features.length);\n }\n }\n\n /**\n * Setup polling and/or streaming for a GeoJSON source\n */\n private async setupDataUpdates(\n layerId: string,\n sourceId: string,\n config: GeoJSONSourceConfig\n ): Promise<void> {\n // Setup streaming if configured\n if (config.stream) {\n const streamConfig = config.stream;\n await this.streamManager.connect(layerId, {\n type: streamConfig.type,\n url: streamConfig.url || config.url!,\n onData: (data) => {\n this.handleDataUpdate(sourceId, layerId, data, {\n strategy:\n config.refresh?.updateStrategy ||\n config.updateStrategy ||\n \"replace\",\n updateKey: config.refresh?.updateKey || config.updateKey,\n windowSize: config.refresh?.windowSize,\n windowDuration: config.refresh?.windowDuration,\n timestampField: config.refresh?.timestampField,\n });\n },\n onError: (error) => {\n this.callbacks.onDataError?.(layerId, error);\n },\n reconnect: {\n enabled: streamConfig.reconnect !== false,\n maxRetries: streamConfig.reconnectMaxAttempts,\n initialDelay: streamConfig.reconnectDelay,\n maxDelay: streamConfig.reconnectMaxDelay,\n },\n eventTypes: streamConfig.eventTypes,\n protocols: streamConfig.protocols,\n });\n }\n\n // Setup polling if configured (new refresh config or legacy refreshInterval)\n const refreshInterval =\n config.refresh?.refreshInterval || config.refreshInterval;\n if (refreshInterval && config.url) {\n const url = config.url;\n const cacheEnabled = config.cache?.enabled ?? true;\n const cacheTTL = config.cache?.ttl;\n\n await this.pollingManager.start(layerId, {\n interval: refreshInterval,\n onTick: async () => {\n const result = await this.dataFetcher.fetch(url, {\n skipCache: !cacheEnabled,\n ttl: cacheTTL,\n });\n this.handleDataUpdate(sourceId, layerId, result.data as FeatureCollection, {\n strategy:\n config.refresh?.updateStrategy ||\n config.updateStrategy ||\n \"replace\",\n updateKey: config.refresh?.updateKey || config.updateKey,\n windowSize: config.refresh?.windowSize,\n windowDuration: config.refresh?.windowDuration,\n timestampField: config.refresh?.timestampField,\n });\n },\n onError: (error) => {\n this.callbacks.onDataError?.(layerId, error);\n },\n });\n }\n }\n\n /**\n * Handle incoming data updates with merge strategy\n */\n private handleDataUpdate(\n sourceId: string,\n layerId: string,\n incoming: FeatureCollection,\n options: {\n strategy: MergeStrategy;\n updateKey?: string;\n windowSize?: number;\n windowDuration?: number;\n timestampField?: string;\n }\n ): void {\n const existing =\n this.sourceData.get(sourceId) || {\n type: \"FeatureCollection\" as const,\n features: [],\n };\n\n const mergeResult = this.dataMerger.merge(existing, incoming, options);\n this.sourceData.set(sourceId, mergeResult.data);\n\n const source = this.map.getSource(sourceId) as GeoJSONSource;\n if (source?.setData) {\n source.setData(mergeResult.data);\n }\n\n this.callbacks.onDataLoaded?.(layerId, mergeResult.total);\n }\n\n /**\n * Pause data refresh for a layer (polling)\n */\n pauseRefresh(layerId: string): void {\n this.pollingManager.pause(layerId);\n }\n\n /**\n * Resume data refresh for a layer (polling)\n */\n resumeRefresh(layerId: string): void {\n this.pollingManager.resume(layerId);\n }\n\n /**\n * Force immediate refresh for a layer (polling)\n */\n async refreshNow(layerId: string): Promise<void> {\n await this.pollingManager.triggerNow(layerId);\n }\n\n /**\n * Disconnect streaming connection for a layer\n */\n disconnectStream(layerId: string): void {\n this.streamManager.disconnect(layerId);\n }\n\n removeLayer(layerId: string): void {\n // Stop all data updates\n this.pollingManager.stop(layerId);\n this.streamManager.disconnect(layerId);\n this.loadingManager.hideLoading(layerId);\n\n // Legacy support\n this.stopRefreshInterval(layerId);\n\n const controller = this.abortControllers.get(layerId);\n if (controller) {\n controller.abort();\n this.abortControllers.delete(layerId);\n }\n\n if (this.map.getLayer(layerId)) this.map.removeLayer(layerId);\n\n const sourceId = this.layerToSource.get(layerId) || `${layerId}-source`;\n if (this.map.getSource(sourceId)) this.map.removeSource(sourceId);\n\n // Clean up data references\n this.sourceData.delete(sourceId);\n this.layerToSource.delete(layerId);\n }\n\n setVisibility(layerId: string, visible: boolean): void {\n if (!this.map.getLayer(layerId)) return;\n this.map.setLayoutProperty(\n layerId,\n \"visibility\",\n visible ? \"visible\" : \"none\"\n );\n }\n\n updateData(layerId: string, data: GeoJSON.GeoJSON): void {\n const sourceId = `${layerId}-source`;\n const source = this.map.getSource(sourceId) as GeoJSONSource;\n if (source && source.setData) source.setData(data as any);\n }\n\n /**\n * @deprecated Legacy refresh method - use PollingManager instead\n */\n startRefreshInterval(layer: Layer): void {\n // Legacy method kept for backward compatibility\n // New code should use setupDataUpdates() which is called automatically from addLayer\n if (typeof layer.source !== \"object\" || layer.source === null) {\n return;\n }\n\n const sourceObj = layer.source as {\n type: string;\n url?: string;\n refreshInterval?: number;\n };\n if (\n sourceObj.type !== \"geojson\" ||\n !sourceObj.url ||\n !sourceObj.refreshInterval\n ) {\n return;\n }\n\n const geojsonSource = layer.source as unknown as GeoJSONSourceConfig;\n const interval = setInterval(async () => {\n const sourceId = `${layer.id}-source`;\n try {\n const cacheEnabled = geojsonSource.cache?.enabled ?? true;\n const cacheTTL = geojsonSource.cache?.ttl;\n\n const result = await this.dataFetcher.fetch(geojsonSource.url!, {\n skipCache: !cacheEnabled,\n ttl: cacheTTL,\n });\n const data = result.data as FeatureCollection;\n this.sourceData.set(sourceId, data);\n\n const source = this.map.getSource(sourceId) as GeoJSONSource;\n if (source?.setData) {\n source.setData(data);\n }\n this.callbacks.onDataLoaded?.(layer.id, data.features.length);\n } catch (error: any) {\n this.callbacks.onDataError?.(layer.id, error);\n }\n }, geojsonSource.refreshInterval!);\n\n this.refreshIntervals.set(layer.id, interval);\n }\n\n stopRefreshInterval(layerId: string): void {\n const interval = this.refreshIntervals.get(layerId);\n if (interval) {\n clearInterval(interval);\n this.refreshIntervals.delete(layerId);\n }\n }\n\n clearAllIntervals(): void {\n for (const interval of this.refreshIntervals.values())\n clearInterval(interval);\n this.refreshIntervals.clear();\n }\n\n destroy(): void {\n // Clean up all data management components\n this.pollingManager.destroy();\n this.streamManager.destroy();\n this.loadingManager.destroy();\n\n // Clear data references\n this.sourceData.clear();\n this.layerToSource.clear();\n\n // Legacy cleanup\n this.clearAllIntervals();\n for (const controller of this.abortControllers.values()) controller.abort();\n this.abortControllers.clear();\n }\n}\n","/**\n * @file Popup HTML builder for map features\n * @module @maplibre-yaml/core/renderer\n */\n\nimport type { z } from \"zod\";\nimport { PopupContentSchema, PopupContentItemSchema } from \"../schemas\";\n\ntype PopupContent = z.infer<typeof PopupContentSchema>;\ntype PopupContentItem = z.infer<typeof PopupContentItemSchema>;\n\n/**\n * Builds popup HTML from configuration and feature properties\n */\nexport class PopupBuilder {\n /**\n * Build HTML string from popup content config and feature properties\n */\n build(content: PopupContent, properties: Record<string, any>): string {\n return content\n .map((item) => {\n const entries = Object.entries(item);\n if (entries.length === 0) return \"\";\n const entry = entries[0];\n if (!entry) return \"\";\n const [tag, items] = entry;\n if (!Array.isArray(items)) return \"\";\n const innerHTML = items\n .map((i: PopupContentItem) => this.buildItem(i, properties))\n .join(\"\");\n return `<${tag}>${innerHTML}</${tag}>`;\n })\n .join(\"\");\n }\n\n /**\n * Build a single content item\n */\n private buildItem(\n item: PopupContentItem,\n properties: Record<string, any>\n ): string {\n // Static string\n if (item.str) {\n return this.escapeHtml(item.str);\n }\n\n // Dynamic property\n if (item.property) {\n const value = properties[item.property];\n if (value !== undefined && value !== null) {\n // Apply format if specified\n if (item.format && typeof value === \"number\") {\n return this.formatNumber(value, item.format);\n }\n return this.escapeHtml(String(value));\n }\n // Use fallback\n return item.else ? this.escapeHtml(item.else) : \"\";\n }\n\n // Link\n if (item.href) {\n const text = (item as any).text || item.href;\n const target = (item as any).target || \"_blank\";\n return `<a href=\"${this.escapeHtml(\n item.href\n )}\" target=\"${target}\">${this.escapeHtml(text)}</a>`;\n }\n\n // Image\n if (item.src) {\n const alt = (item as any).alt || \"\";\n return `<img src=\"${this.escapeHtml(item.src)}\" alt=\"${this.escapeHtml(\n alt\n )}\" />`;\n }\n\n return \"\";\n }\n\n /**\n * Format a number according to format string\n */\n private formatNumber(value: number, format: string): string {\n // Simple number formatting\n // Format strings like \",.0f\" or \".2f\"\n\n // Check for thousands separator\n const useThousands = format.includes(\",\");\n\n // Extract decimal places\n const decimalMatch = format.match(/\\.(\\d+)/);\n const decimals =\n decimalMatch && decimalMatch[1] ? parseInt(decimalMatch[1]) : 0;\n\n // Format the number\n let result = value.toFixed(decimals);\n\n // Add thousands separators if requested\n if (useThousands) {\n const parts = result.split(\".\");\n if (parts[0]) {\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n }\n result = parts.join(\".\");\n }\n\n return result;\n }\n\n /**\n * Escape HTML to prevent XSS\n */\n private escapeHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n }\n}\n","/**\n * @file Event handler for map layer interactions\n * @module @maplibre-yaml/core/renderer\n */\n\nimport maplibregl, {\n type Map as MapLibreMap,\n type MapMouseEvent,\n type Popup,\n type LngLat,\n} from \"maplibre-gl\";\nimport type { z } from \"zod\";\nimport { LayerSchema, PopupContentSchema } from \"../schemas\";\nimport { PopupBuilder } from \"./popup-builder\";\n\ntype Layer = z.infer<typeof LayerSchema>;\ntype PopupContent = z.infer<typeof PopupContentSchema>;\n\n/**\n * Callbacks for interactive events\n */\nexport interface EventHandlerCallbacks {\n onClick?: (layerId: string, feature: any, lngLat: LngLat) => void;\n onHover?: (layerId: string, feature: any, lngLat: LngLat) => void;\n}\n\n/**\n * Handles click, hover, and other interactive events on layers\n */\nexport class EventHandler {\n private map: MapLibreMap;\n private callbacks: EventHandlerCallbacks;\n private popupBuilder: PopupBuilder;\n private activePopup: Popup | null;\n private attachedLayers: Set<string>;\n private boundHandlers: Map<\n string,\n { click?: Function; mouseenter?: Function; mouseleave?: Function }\n >;\n\n constructor(map: MapLibreMap, callbacks?: EventHandlerCallbacks) {\n this.map = map;\n this.callbacks = callbacks || {};\n this.popupBuilder = new PopupBuilder();\n this.activePopup = null;\n this.attachedLayers = new Set();\n this.boundHandlers = new Map();\n }\n\n /**\n * Attach events for a layer based on its interactive config\n */\n attachEvents(layer: Layer): void {\n if (!layer.interactive) return;\n\n // Type guard: interactive is defined, cast to proper type\n const interactive = layer.interactive as { hover?: any; click?: any };\n const { hover, click } = interactive;\n const handlers: any = {};\n\n // Hover handling\n if (hover) {\n handlers.mouseenter = (e: MapMouseEvent & { features?: any[] }) => {\n if (hover.cursor) {\n this.map.getCanvas().style.cursor = hover.cursor;\n }\n if (e.features?.[0]) {\n this.callbacks.onHover?.(layer.id, e.features[0], e.lngLat);\n }\n };\n\n handlers.mouseleave = () => {\n this.map.getCanvas().style.cursor = \"\";\n };\n\n this.map.on(\"mouseenter\", layer.id, handlers.mouseenter);\n this.map.on(\"mouseleave\", layer.id, handlers.mouseleave);\n }\n\n // Click handling\n if (click) {\n handlers.click = (e: MapMouseEvent & { features?: any[] }) => {\n const feature = e.features?.[0];\n if (!feature) return;\n\n if (click.popup) {\n this.showPopup(click.popup, feature, e.lngLat);\n }\n\n this.callbacks.onClick?.(layer.id, feature, e.lngLat);\n };\n\n this.map.on(\"click\", layer.id, handlers.click);\n }\n\n this.boundHandlers.set(layer.id, handlers);\n this.attachedLayers.add(layer.id);\n }\n\n /**\n * Show a popup with content\n */\n private showPopup(content: PopupContent, feature: any, lngLat: LngLat): void {\n this.activePopup?.remove();\n\n const html = this.popupBuilder.build(content, feature.properties);\n\n this.activePopup = new maplibregl.Popup()\n .setLngLat(lngLat)\n .setHTML(html)\n .addTo(this.map);\n }\n\n /**\n * Detach events for a layer\n */\n detachEvents(layerId: string): void {\n const handlers = this.boundHandlers.get(layerId);\n if (!handlers) return;\n\n if (handlers.click) {\n this.map.off(\"click\", layerId, handlers.click as any);\n }\n if (handlers.mouseenter) {\n this.map.off(\"mouseenter\", layerId, handlers.mouseenter as any);\n }\n if (handlers.mouseleave) {\n this.map.off(\"mouseleave\", layerId, handlers.mouseleave as any);\n }\n\n this.boundHandlers.delete(layerId);\n this.attachedLayers.delete(layerId);\n }\n\n /**\n * Clean up all event handlers\n */\n destroy(): void {\n for (const layerId of this.attachedLayers) {\n this.detachEvents(layerId);\n }\n this.activePopup?.remove();\n this.activePopup = null;\n }\n}\n","/**\n * @file Legend builder for map layers\n * @module @maplibre-yaml/core/renderer\n */\n\nimport type { z } from 'zod';\nimport { LayerSchema, LegendConfigSchema, LegendItemSchema } from '../schemas';\n\ntype Layer = z.infer<typeof LayerSchema>;\ntype LegendConfig = z.infer<typeof LegendConfigSchema>;\ntype LegendItem = z.infer<typeof LegendItemSchema>;\n\n/**\n * Builds legend HTML from layer configurations\n */\nexport class LegendBuilder {\n /**\n * Build legend in container from layers\n */\n build(container: string | HTMLElement, layers: Layer[], config?: Partial<LegendConfig>): void {\n const el = typeof container === 'string' ? document.getElementById(container) : container;\n if (!el) return;\n\n const items = config?.items || this.extractItems(layers);\n\n let html = '<div class=\"maplibre-legend\">';\n if (config?.title) {\n html += `<div class=\"legend-title\">${this.escapeHtml(config.title)}</div>`;\n }\n html += '<div class=\"legend-items\">';\n for (const item of items) {\n html += this.renderItem(item);\n }\n html += '</div></div>';\n\n el.innerHTML = html;\n }\n\n /**\n * Render a single legend item\n */\n private renderItem(item: LegendItem): string {\n const shape = item.shape || 'square';\n let symbol = '';\n\n switch (shape) {\n case 'circle':\n symbol = `<span class=\"legend-symbol circle\" style=\"background:${this.escapeHtml(item.color)}\"></span>`;\n break;\n case 'line':\n symbol = `<span class=\"legend-symbol line\" style=\"background:${this.escapeHtml(item.color)}\"></span>`;\n break;\n case 'icon':\n if (item.icon) {\n symbol = `<span class=\"legend-symbol icon\">${this.escapeHtml(item.icon)}</span>`;\n } else {\n symbol = `<span class=\"legend-symbol square\" style=\"background:${this.escapeHtml(item.color)}\"></span>`;\n }\n break;\n default:\n symbol = `<span class=\"legend-symbol square\" style=\"background:${this.escapeHtml(item.color)}\"></span>`;\n }\n\n return `<div class=\"legend-item\">${symbol}<span class=\"legend-label\">${this.escapeHtml(item.label)}</span></div>`;\n }\n\n /**\n * Extract legend items from layers\n */\n private extractItems(layers: Layer[]): LegendItem[] {\n return layers\n .filter((l) => l.legend && typeof l.legend === 'object')\n .map((l) => l.legend as LegendItem);\n }\n\n /**\n * Escape HTML to prevent XSS\n */\n private escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n}\n","/**\n * @file Controls manager for map controls\n * @module @maplibre-yaml/core/renderer\n */\n\nimport maplibregl, {\n type Map as MapLibreMap,\n type IControl,\n} from \"maplibre-gl\";\nimport type { z } from \"zod\";\nimport { ControlsConfigSchema } from \"../schemas\";\n\ntype ControlsConfig = z.infer<typeof ControlsConfigSchema>;\n\n/**\n * Manages MapLibre map controls (navigation, geolocate, scale, etc.)\n */\nexport class ControlsManager {\n private map: MapLibreMap;\n private addedControls: IControl[];\n\n constructor(map: MapLibreMap) {\n this.map = map;\n this.addedControls = [];\n }\n\n /**\n * Add controls to the map based on configuration\n */\n addControls(config: ControlsConfig): void {\n if (!config) return;\n\n if (config.navigation) {\n const options =\n typeof config.navigation === \"object\" ? config.navigation : {};\n const position = (options as any).position || \"top-right\";\n const control = new maplibregl.NavigationControl();\n this.map.addControl(control, position as any);\n this.addedControls.push(control);\n }\n\n if (config.geolocate) {\n const options =\n typeof config.geolocate === \"object\" ? config.geolocate : {};\n const position = (options as any).position || \"top-right\";\n const control = new maplibregl.GeolocateControl({\n positionOptions: { enableHighAccuracy: true },\n trackUserLocation: true,\n });\n this.map.addControl(control, position as any);\n this.addedControls.push(control);\n }\n\n if (config.scale) {\n const options = typeof config.scale === \"object\" ? config.scale : {};\n const position = (options as any).position || \"bottom-left\";\n const control = new maplibregl.ScaleControl();\n this.map.addControl(control, position as any);\n this.addedControls.push(control);\n }\n\n if (config.fullscreen) {\n const options =\n typeof config.fullscreen === \"object\" ? config.fullscreen : {};\n const position = (options as any).position || \"top-right\";\n const control = new maplibregl.FullscreenControl();\n this.map.addControl(control, position as any);\n this.addedControls.push(control);\n }\n }\n\n /**\n * Remove all controls from the map\n */\n removeAllControls(): void {\n for (const control of this.addedControls) {\n this.map.removeControl(control);\n }\n this.addedControls = [];\n }\n}\n","/**\n * @file Main map renderer for MapLibre YAML\n * @module @maplibre-yaml/core/renderer\n */\n\nimport maplibregl, { type Map as MapLibreMap } from 'maplibre-gl';\nimport type { z } from 'zod';\nimport { MapConfigSchema, LayerSchema, ControlsConfigSchema, LegendConfigSchema } from '../schemas';\nimport { LayerManager, type LayerManagerCallbacks } from './layer-manager';\nimport { EventHandler, type EventHandlerCallbacks } from './event-handler';\nimport { LegendBuilder } from './legend-builder';\nimport { ControlsManager } from './controls-manager';\n\ntype MapConfig = z.infer<typeof MapConfigSchema>;\ntype Layer = z.infer<typeof LayerSchema>;\ntype ControlsConfig = z.infer<typeof ControlsConfigSchema>;\ntype LegendConfig = z.infer<typeof LegendConfigSchema>;\n\n/**\n * Options for MapRenderer\n */\nexport interface MapRendererOptions {\n onLoad?: () => void;\n onError?: (error: Error) => void;\n}\n\n/**\n * Events emitted by MapRenderer\n */\nexport interface MapRendererEvents {\n load: void;\n 'layer:added': { layerId: string };\n 'layer:removed': { layerId: string };\n 'layer:data-loading': { layerId: string };\n 'layer:data-loaded': { layerId: string; featureCount: number };\n 'layer:data-error': { layerId: string; error: Error };\n 'layer:click': { layerId: string; feature: any; lngLat: maplibregl.LngLat };\n 'layer:hover': { layerId: string; feature: any; lngLat: maplibregl.LngLat };\n}\n\n/**\n * Main class for rendering maps from configuration\n */\nexport class MapRenderer {\n private map: MapLibreMap;\n private layerManager: LayerManager;\n private eventHandler: EventHandler;\n private legendBuilder: LegendBuilder;\n private controlsManager: ControlsManager;\n private eventListeners: Map<string, Set<Function>>;\n private isLoaded: boolean;\n\n constructor(container: string | HTMLElement, config: MapConfig, layers: Layer[] = [], options: MapRendererOptions = {}) {\n this.eventListeners = new Map();\n this.isLoaded = false;\n\n // Initialize MapLibre map\n this.map = new maplibregl.Map({\n ...config,\n container: typeof container === 'string' ? container : container,\n style: config.mapStyle as any,\n center: config.center as [number, number],\n zoom: config.zoom,\n pitch: config.pitch ?? 0,\n bearing: config.bearing ?? 0,\n interactive: config.interactive ?? true,\n } as any);\n\n // Initialize managers\n const layerCallbacks: LayerManagerCallbacks = {\n onDataLoading: (layerId) => this.emit('layer:data-loading', { layerId }),\n onDataLoaded: (layerId, featureCount) => this.emit('layer:data-loaded', { layerId, featureCount }),\n onDataError: (layerId, error) => this.emit('layer:data-error', { layerId, error }),\n };\n\n const eventCallbacks: EventHandlerCallbacks = {\n onClick: (layerId, feature, lngLat) => this.emit('layer:click', { layerId, feature, lngLat }),\n onHover: (layerId, feature, lngLat) => this.emit('layer:hover', { layerId, feature, lngLat }),\n };\n\n this.layerManager = new LayerManager(this.map, layerCallbacks);\n this.eventHandler = new EventHandler(this.map, eventCallbacks);\n this.legendBuilder = new LegendBuilder();\n this.controlsManager = new ControlsManager(this.map);\n\n // Set up load handler\n this.map.on('load', () => {\n this.isLoaded = true;\n\n // Add layers\n Promise.all(layers.map((layer) => this.addLayer(layer)))\n .then(() => {\n this.emit('load', undefined);\n options.onLoad?.();\n })\n .catch((error) => {\n options.onError?.(error);\n });\n });\n\n // Handle errors\n this.map.on('error', (e) => {\n options.onError?.(e.error);\n });\n }\n\n /**\n * Get the underlying MapLibre map instance\n */\n getMap(): MapLibreMap {\n return this.map;\n }\n\n /**\n * Check if map is loaded\n */\n isMapLoaded(): boolean {\n return this.isLoaded;\n }\n\n /**\n * Add a layer to the map\n */\n async addLayer(layer: Layer): Promise<void> {\n await this.layerManager.addLayer(layer);\n this.eventHandler.attachEvents(layer);\n this.emit('layer:added', { layerId: layer.id });\n }\n\n /**\n * Remove a layer from the map\n */\n removeLayer(layerId: string): void {\n this.eventHandler.detachEvents(layerId);\n this.layerManager.removeLayer(layerId);\n this.emit('layer:removed', { layerId });\n }\n\n /**\n * Set layer visibility\n */\n setLayerVisibility(layerId: string, visible: boolean): void {\n this.layerManager.setVisibility(layerId, visible);\n }\n\n /**\n * Update layer data\n */\n updateLayerData(layerId: string, data: GeoJSON.GeoJSON): void {\n this.layerManager.updateData(layerId, data);\n }\n\n /**\n * Add controls to the map\n */\n addControls(config: ControlsConfig): void {\n this.controlsManager.addControls(config);\n }\n\n /**\n * Build legend in container\n */\n buildLegend(container: string | HTMLElement, layers: Layer[], config?: LegendConfig): void {\n this.legendBuilder.build(container, layers, config);\n }\n\n /**\n * Get the legend builder instance\n */\n getLegendBuilder(): LegendBuilder {\n return this.legendBuilder;\n }\n\n /**\n * Register an event listener\n */\n on<K extends keyof MapRendererEvents>(event: K, callback: (data: MapRendererEvents[K]) => void): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set());\n }\n this.eventListeners.get(event)!.add(callback);\n }\n\n /**\n * Unregister an event listener\n */\n off<K extends keyof MapRendererEvents>(event: K, callback: Function): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.delete(callback);\n }\n }\n\n /**\n * Emit an event\n */\n private emit<K extends keyof MapRendererEvents>(event: K, data: MapRendererEvents[K]): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n for (const callback of listeners) {\n callback(data);\n }\n }\n }\n\n /**\n * Destroy the map and clean up resources\n */\n destroy(): void {\n this.eventHandler.destroy();\n this.layerManager.destroy();\n this.controlsManager.removeAllControls();\n this.eventListeners.clear();\n this.map.remove();\n }\n}\n","/**\n * @file Unified MLMap web component for maplibre-yaml\n * @module @maplibre-yaml/core/components/ml-map\n *\n * @description\n * The `<ml-map>` component is the primary way to embed MapLibre maps configured\n * with YAML. It supports multiple configuration methods to fit any use case.\n *\n * ## Configuration Methods (in priority order)\n *\n * ### 1. External YAML File (Recommended)\n * ```html\n * <ml-map src=\"/configs/my-map.yaml\"></ml-map>\n * ```\n *\n * ### 2. Inline YAML via Script Tag\n * ```html\n * <ml-map>\n * <script type=\"text/yaml\">\n * type: map\n * id: my-map\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers: []\n * </script>\n * </ml-map>\n * ```\n *\n * ### 3. JSON Config Attribute (Programmatic)\n * ```html\n * <ml-map config='{\"type\":\"map\",...}'></ml-map>\n * ```\n */\n\nimport type { Map as MapLibreMap } from \"maplibre-gl\";\nimport {\n YAMLParser,\n type MapBlock,\n type ParseError,\n} from \"../parser/yaml-parser.js\";\nimport { MapRenderer } from \"../renderer/map-renderer.js\";\n\n/**\n * MLMap custom element for rendering MapLibre maps from YAML/JSON configuration.\n *\n * @fires ml-map:load - Map loaded and ready for interaction\n * @fires ml-map:error - Error during initialization or runtime\n * @fires ml-map:loading - Loading configuration from URL\n * @fires ml-map:layer-added - Layer was added to the map\n * @fires ml-map:layer-removed - Layer was removed from the map\n * @fires ml-map:layer-data-loading - Layer data is being fetched\n * @fires ml-map:layer-data-loaded - Layer data loaded successfully\n * @fires ml-map:layer-data-error - Layer data failed to load\n * @fires ml-map:layer-click - User clicked on a layer feature\n * @fires ml-map:layer-hover - User hovered over a layer feature\n */\nexport class MLMap extends HTMLElement {\n /** Internal MapRenderer instance */\n private renderer: MapRenderer | null = null;\n\n /** Whether the component has been initialized */\n private initialized = false;\n\n /** Container element for the map */\n private mapContainer: HTMLDivElement | null = null;\n\n /** Parsed and validated configuration */\n private _config: MapBlock | null = null;\n\n /**\n * Observed attributes that trigger attributeChangedCallback\n */\n static get observedAttributes(): string[] {\n return [\"src\", \"config\"];\n }\n\n /**\n * Get the current map configuration\n */\n get config(): MapBlock | null {\n return this._config;\n }\n\n /**\n * Set the map configuration programmatically\n */\n set config(value: MapBlock | string | null) {\n if (value === null) {\n this._config = null;\n return;\n }\n\n let parsed: MapBlock;\n\n if (typeof value === \"string\") {\n try {\n parsed = JSON.parse(value);\n } catch (e) {\n this.handleError([\n { path: \"\", message: \"Invalid JSON in config property\" },\n ]);\n return;\n }\n } else {\n parsed = value;\n }\n\n this._config = parsed;\n\n // If already initialized, render with new config\n if (this.initialized) {\n this.renderMap(parsed);\n }\n }\n\n /**\n * Called when the element is added to the DOM\n */\n connectedCallback(): void {\n // Create internal map container\n this.mapContainer = document.createElement(\"div\");\n this.mapContainer.style.cssText = \"width: 100%; height: 100%;\";\n\n // Ensure the component has display: block (custom elements default to inline)\n if (!this.style.display || this.style.display === \"inline\") {\n this.style.display = \"block\";\n }\n\n // Initialize configuration loading\n this.initialize();\n }\n\n /**\n * Called when the element is removed from the DOM\n */\n disconnectedCallback(): void {\n this.destroy();\n }\n\n /**\n * Called when an observed attribute changes\n */\n attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null\n ): void {\n // Skip if value hasn't actually changed\n if (oldValue === newValue) return;\n\n // Only process changes after initialization\n if (!this.initialized) return;\n\n if (name === \"src\" && newValue) {\n this.loadFromURL(newValue);\n } else if (name === \"config\" && newValue) {\n this.loadFromJSONAttribute(newValue);\n }\n }\n\n /**\n * Initialize the component by detecting and loading configuration\n */\n private async initialize(): Promise<void> {\n this.initialized = true;\n\n // Priority 1: Programmatically set config property\n if (this._config) {\n this.renderMap(this._config);\n return;\n }\n\n // Priority 2: Script tag with YAML\n const yamlScript = this.querySelector('script[type=\"text/yaml\"]');\n if (yamlScript?.textContent) {\n this.loadFromScriptTag(yamlScript.textContent);\n return;\n }\n\n // Priority 3: External YAML file\n const srcAttr = this.getAttribute(\"src\");\n if (srcAttr) {\n await this.loadFromURL(srcAttr);\n return;\n }\n\n // Priority 4: JSON config attribute\n const configAttr = this.getAttribute(\"config\");\n if (configAttr) {\n this.loadFromJSONAttribute(configAttr);\n return;\n }\n\n // No configuration provided - show helpful error\n this.handleError(\n [\n {\n path: \"\",\n message: \"No configuration provided.\",\n },\n ],\n true\n );\n }\n\n /**\n * Load and parse YAML from a script tag's text content\n */\n private loadFromScriptTag(yamlContent: string): void {\n const result = YAMLParser.safeParseMapBlock(yamlContent);\n\n if (result.success && result.data) {\n this._config = result.data;\n this.renderMap(result.data);\n } else {\n this.handleError(result.errors);\n }\n }\n\n /**\n * Load and parse YAML from an external URL\n */\n private async loadFromURL(url: string): Promise<void> {\n // Emit loading event\n this.dispatchEvent(\n new CustomEvent(\"ml-map:loading\", {\n bubbles: true,\n detail: { url },\n })\n );\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch ${url}: ${response.status} ${response.statusText}`\n );\n }\n\n const yamlContent = await response.text();\n const result = YAMLParser.safeParseMapBlock(yamlContent);\n\n if (result.success && result.data) {\n this._config = result.data;\n this.renderMap(result.data);\n } else {\n this.handleError(result.errors);\n }\n } catch (error) {\n this.handleError([\n {\n path: \"\",\n message: error instanceof Error ? error.message : String(error),\n },\n ]);\n }\n }\n\n /**\n * Parse and validate JSON from the config attribute\n */\n private loadFromJSONAttribute(jsonString: string): void {\n try {\n const parsed = JSON.parse(jsonString);\n this._config = parsed;\n this.renderMap(parsed);\n } catch (error) {\n this.handleError([\n {\n path: \"\",\n message: `Invalid JSON in config attribute: ${\n error instanceof Error ? error.message : String(error)\n }`,\n },\n ]);\n }\n }\n\n /**\n * Render the map with the given configuration\n */\n private renderMap(mapBlock: MapBlock): void {\n // Destroy existing renderer\n if (this.renderer) {\n this.renderer.destroy();\n this.renderer = null;\n }\n\n // Clear content and set up container\n this.innerHTML = \"\";\n\n if (!this.mapContainer) {\n this.mapContainer = document.createElement(\"div\");\n this.mapContainer.style.cssText = \"width: 100%; height: 100%;\";\n }\n\n this.appendChild(this.mapContainer);\n\n try {\n // Extract config and layers from MapBlock\n const { config, layers = [] } = mapBlock;\n\n // Create renderer with config and layers\n this.renderer = new MapRenderer(this.mapContainer, config, layers, {\n onLoad: () => {\n // Load event is also emitted via the event system\n },\n onError: (error) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:error\", {\n bubbles: true,\n detail: { error },\n })\n );\n },\n });\n\n // Set up event forwarding\n this.setupEventForwarding();\n } catch (error) {\n this.handleError([\n {\n path: \"\",\n message: `Failed to create map: ${\n error instanceof Error ? error.message : String(error)\n }`,\n },\n ]);\n }\n }\n\n /**\n * Forward MapRenderer events to custom element events\n */\n private setupEventForwarding(): void {\n if (!this.renderer) return;\n\n // Map load event\n this.renderer.on(\"load\", () => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:load\", {\n bubbles: true,\n detail: {},\n })\n );\n });\n\n // Layer added\n this.renderer.on(\"layer:added\", ({ layerId }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-added\", {\n bubbles: true,\n detail: { layerId },\n })\n );\n });\n\n // Layer removed\n this.renderer.on(\"layer:removed\", ({ layerId }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-removed\", {\n bubbles: true,\n detail: { layerId },\n })\n );\n });\n\n // Layer data loading\n this.renderer.on(\"layer:data-loading\", ({ layerId }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-data-loading\", {\n bubbles: true,\n detail: { layerId },\n })\n );\n });\n\n // Layer data loaded\n this.renderer.on(\"layer:data-loaded\", ({ layerId, featureCount }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-data-loaded\", {\n bubbles: true,\n detail: { layerId, featureCount },\n })\n );\n });\n\n // Layer data error\n this.renderer.on(\"layer:data-error\", ({ layerId, error }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-data-error\", {\n bubbles: true,\n detail: { layerId, error },\n })\n );\n });\n\n // Layer click\n this.renderer.on(\"layer:click\", ({ layerId, feature, lngLat }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-click\", {\n bubbles: true,\n detail: { layerId, feature, lngLat },\n })\n );\n });\n\n // Layer hover\n this.renderer.on(\"layer:hover\", ({ layerId, feature, lngLat }) => {\n this.dispatchEvent(\n new CustomEvent(\"ml-map:layer-hover\", {\n bubbles: true,\n detail: { layerId, feature, lngLat },\n })\n );\n });\n }\n\n /**\n * Handle and display errors\n */\n private handleError(errors: ParseError[], showHelp = false): void {\n // Dispatch error event\n this.dispatchEvent(\n new CustomEvent(\"ml-map:error\", {\n bubbles: true,\n detail: { errors },\n })\n );\n\n // Build error UI\n const helpSection = showHelp\n ? `\n <div style=\"margin-top: 16px; padding: 16px; background: #fef3c7; border-radius: 6px; color: #92400e;\">\n <strong style=\"display: block; margin-bottom: 8px;\">How to configure:</strong>\n <div style=\"font-family: monospace; font-size: 12px; line-height: 1.6;\">\n <div style=\"margin-bottom: 8px;\">\n <strong>1. External file (recommended):</strong><br>\n <ml-map src=\"/path/to/config.yaml\"></ml-map>\n </div>\n <div style=\"margin-bottom: 8px;\">\n <strong>2. Inline YAML:</strong><br>\n <ml-map><br>\n <script type=\"text/yaml\"><br>\n type: map<br>\n id: my-map<br>\n ...<br>\n </script><br>\n </ml-map>\n </div>\n <div>\n <strong>3. JSON attribute:</strong><br>\n <ml-map config='{\"type\":\"map\",...}'></ml-map>\n </div>\n </div>\n </div>\n `\n : \"\";\n\n const errorItems = errors\n .map(\n (err) => `\n <div style=\"margin-bottom: 8px; padding: 8px; background: #fee2e2; border-radius: 4px;\">\n ${\n err.path\n ? `<strong style=\"color: #991b1b;\">${this.escapeHtml(\n err.path\n )}</strong>: `\n : \"\"\n }\n ${this.escapeHtml(err.message)}\n </div>\n `\n )\n .join(\"\");\n\n this.innerHTML = `\n <div class=\"ml-map-error\" style=\"\n padding: 20px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-family: system-ui, -apple-system, sans-serif;\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n \">\n <div style=\"font-weight: 600; margin-bottom: 12px; display: flex; align-items: center; gap: 8px;\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/>\n </svg>\n Configuration Error\n </div>\n <div style=\"font-size: 14px;\">\n ${errorItems}\n </div>\n ${helpSection}\n </div>\n `;\n }\n\n /**\n * Escape HTML special characters for safe innerHTML usage\n */\n private escapeHtml(text: string): string {\n const div = document.createElement(\"div\");\n div.textContent = text;\n return div.innerHTML;\n }\n\n /**\n * Clean up resources when component is removed\n */\n private destroy(): void {\n if (this.renderer) {\n this.renderer.destroy();\n this.renderer = null;\n }\n this._config = null;\n this.initialized = false;\n }\n\n // ============================================================\n // Public API\n // ============================================================\n\n /**\n * Get the underlying MapLibre GL map instance\n *\n * @returns The MapLibre GL map instance, or null if not initialized\n *\n * @example\n * ```javascript\n * const mapEl = document.querySelector('ml-map');\n *\n * mapEl.addEventListener('ml-map:load', () => {\n * const map = mapEl.getMap();\n * map.flyTo({ center: [-122.4, 37.8], zoom: 14 });\n * });\n * ```\n */\n getMap(): MapLibreMap | null {\n return this.renderer?.getMap() ?? null;\n }\n\n /**\n * Get the MapRenderer instance\n *\n * @returns The MapRenderer instance, or null if not initialized\n */\n getRenderer(): MapRenderer | null {\n return this.renderer;\n }\n\n /**\n * Check if the map is loaded\n *\n * @returns True if the map has finished loading\n */\n isLoaded(): boolean {\n return this.renderer?.isMapLoaded() ?? false;\n }\n\n /**\n * Add a layer to the map\n *\n * @param layer - Layer configuration object\n * @returns Promise that resolves when the layer is added\n *\n * @example\n * ```javascript\n * await mapEl.addLayer({\n * id: 'new-layer',\n * type: 'circle',\n * source: {\n * type: 'geojson',\n * data: { type: 'FeatureCollection', features: [] }\n * },\n * paint: { 'circle-radius': 6, 'circle-color': '#ff0000' }\n * });\n * ```\n */\n async addLayer(layer: any): Promise<void> {\n await this.renderer?.addLayer(layer);\n }\n\n /**\n * Remove a layer from the map\n *\n * @param layerId - ID of the layer to remove\n */\n removeLayer(layerId: string): void {\n this.renderer?.removeLayer(layerId);\n }\n\n /**\n * Set layer visibility\n *\n * @param layerId - ID of the layer\n * @param visible - Whether the layer should be visible\n */\n setLayerVisibility(layerId: string, visible: boolean): void {\n this.renderer?.setLayerVisibility(layerId, visible);\n }\n\n /**\n * Update layer data\n *\n * @param layerId - ID of the layer\n * @param data - New GeoJSON data\n */\n updateLayerData(layerId: string, data: GeoJSON.GeoJSON): void {\n this.renderer?.updateLayerData(layerId, data);\n }\n\n /**\n * Reload configuration from the current source\n *\n * @returns Promise that resolves when reload is complete\n */\n async reload(): Promise<void> {\n const src = this.getAttribute(\"src\");\n\n if (src) {\n await this.loadFromURL(src);\n } else {\n const yamlScript = this.querySelector('script[type=\"text/yaml\"]');\n if (yamlScript?.textContent) {\n this.loadFromScriptTag(yamlScript.textContent);\n }\n }\n }\n}\n\n/**\n * Register the ml-map custom element\n */\nexport function registerMLMap(): void {\n if (typeof window !== \"undefined\" && !customElements.get(\"ml-map\")) {\n customElements.define(\"ml-map\", MLMap);\n }\n}\n","/**\n * @file Auto-registration for maplibre-yaml web components\n * @module @maplibre-yaml/core/register\n *\n * @description\n * Import this module to automatically register the `<ml-map>` web component.\n *\n * ## Usage\n *\n * ```javascript\n * import '@maplibre-yaml/core/register';\n * import 'maplibre-gl/dist/maplibre-gl.css';\n * ```\n *\n * After importing, the `<ml-map>` element is available in your HTML.\n *\n * @example\n * External YAML file (recommended)\n * ```html\n * <ml-map src=\"/configs/my-map.yaml\" style=\"height: 400px;\"></ml-map>\n * ```\n *\n * @example\n * Inline YAML via script tag\n * ```html\n * <ml-map style=\"height: 400px;\">\n * <script type=\"text/yaml\">\n * type: map\n * id: my-map\n * config:\n * center: [-74.006, 40.7128]\n * zoom: 12\n * mapStyle: \"https://demotiles.maplibre.org/style.json\"\n * layers: []\n * </script>\n * </ml-map>\n * ```\n *\n * @example\n * JSON config attribute (programmatic)\n * ```html\n * <ml-map config='{\"type\":\"map\",\"id\":\"demo\",...}'></ml-map>\n * ```\n */\n\nimport { MLMap, registerMLMap } from \"./components/ml-map.js\";\n\n// Export for manual use if needed\nexport { MLMap, registerMLMap };\n\n// Auto-register when imported in browser context\nif (typeof window !== \"undefined\") {\n registerMLMap();\n}\n"]}
|