{"version":3,"sources":["../../node_modules/typanion/lib/index.js","../../node_modules/yaml/dist/nodes/identity.js","../../node_modules/yaml/dist/visit.js","../../node_modules/yaml/dist/doc/directives.js","../../node_modules/yaml/dist/doc/anchors.js","../../node_modules/yaml/dist/doc/applyReviver.js","../../node_modules/yaml/dist/nodes/toJS.js","../../node_modules/yaml/dist/nodes/Node.js","../../node_modules/yaml/dist/nodes/Alias.js","../../node_modules/yaml/dist/nodes/Scalar.js","../../node_modules/yaml/dist/doc/createNode.js","../../node_modules/yaml/dist/nodes/Collection.js","../../node_modules/yaml/dist/stringify/stringifyComment.js","../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../node_modules/yaml/dist/stringify/stringifyString.js","../../node_modules/yaml/dist/stringify/stringify.js","../../node_modules/yaml/dist/stringify/stringifyPair.js","../../node_modules/yaml/dist/log.js","../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../node_modules/yaml/dist/nodes/Pair.js","../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../node_modules/yaml/dist/nodes/YAMLMap.js","../../node_modules/yaml/dist/schema/common/map.js","../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../node_modules/yaml/dist/schema/common/seq.js","../../node_modules/yaml/dist/schema/common/string.js","../../node_modules/yaml/dist/schema/common/null.js","../../node_modules/yaml/dist/schema/core/bool.js","../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../node_modules/yaml/dist/schema/core/float.js","../../node_modules/yaml/dist/schema/core/int.js","../../node_modules/yaml/dist/schema/core/schema.js","../../node_modules/yaml/dist/schema/json/schema.js","../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../node_modules/yaml/dist/schema/tags.js","../../node_modules/yaml/dist/schema/Schema.js","../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../node_modules/yaml/dist/doc/Document.js","../../node_modules/yaml/dist/errors.js","../../node_modules/yaml/dist/compose/resolve-props.js","../../node_modules/yaml/dist/compose/util-contains-newline.js","../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../node_modules/yaml/dist/compose/util-map-includes.js","../../node_modules/yaml/dist/compose/resolve-block-map.js","../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../node_modules/yaml/dist/compose/resolve-end.js","../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../node_modules/yaml/dist/compose/compose-collection.js","../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../node_modules/yaml/dist/compose/compose-scalar.js","../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../node_modules/yaml/dist/compose/compose-node.js","../../node_modules/yaml/dist/compose/compose-doc.js","../../node_modules/yaml/dist/compose/composer.js","../../node_modules/yaml/dist/parse/cst-scalar.js","../../node_modules/yaml/dist/parse/cst-stringify.js","../../node_modules/yaml/dist/parse/cst-visit.js","../../node_modules/yaml/dist/parse/cst.js","../../node_modules/yaml/dist/parse/lexer.js","../../node_modules/yaml/dist/parse/line-counter.js","../../node_modules/yaml/dist/parse/parser.js","../../node_modules/yaml/dist/public-api.js","../../node_modules/yaml/dist/index.js","../../src/routes/create-route-map-from-directory.ts","../../src/bundle/construct-manifest.ts","../../src/bundle/bundle.ts","../../src/cli/base-command.ts","../../src/config/utils.ts","../../src/cli/commands/bundle.ts","../../src/edge/transform-to-node.ts","../../src/helpers.ts","../../src/dev/headless/request-handler-controller.ts","../../src/dev/headless/start-server.ts","../../src/bundle/get-temp-path-in-app.ts","../../src/bundle/watch.ts","../../src/lib/async-work-tracker.ts","../../src/dev/headless/start-bundler.ts","../../src/dev/dev-server.ts","../../src/cli/commands/dev.ts","../../src/lib/codegen/extract-route-specs-from-ast.ts","../../src/cli/commands/codegen/route-types.ts","../../node_modules/openapi3-ts/src/dsl/openapi-builder31.ts","../../node_modules/openapi3-ts/dist/oas31.mjs","../../src/cli/commands/codegen/openapi.ts","../../src/cli/cli.ts"],"names":["value","n","plural","fn","isEnum","t","a","context","spec","path","res","anchors","node","i","end","stringify","o","comment","str","Type","map","seq","d","require_schema","pairs","omap","require_bool","require_float","require_int","set","ts","m","tag","ch","start","fs","lineCounter","getMatchingFilePaths","esbuild","bundleRequire","Command","Option","ora","durationFormatter","sizeFormatter","primitives","buildToNodeHandler","bundle","EdgeRuntime","birpc","createBirpc","createServer","kleur","once","isGitIgnored","Watcher","esbuild2","EventEmitter","createBirpcGroup","build","formatMessages","MessageChannel","Project","TypeFormatFlags","OpenApiBuilder","doc","replacer","space","v","match","openApiVersion","info","contact","license","title","description","termsOfService","version","pathItem","name","schema","response","parameter","example","reqBody","header","secScheme","link","callback","server","extDoc","webhook","webhookItem","_a","os","randomUUID","r","e","generateSchema","camelcase","runExit"],"mappings":"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","file":"cli.cjs","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\nfunction getPrintable(value) {\n    if (value === null)\n        return `null`;\n    if (value === undefined)\n        return `undefined`;\n    if (value === ``)\n        return `an empty string`;\n    if (typeof value === 'symbol')\n        return `<${value.toString()}>`;\n    if (Array.isArray(value))\n        return `an array`;\n    return JSON.stringify(value);\n}\nfunction getPrintableArray(value, conjunction) {\n    if (value.length === 0)\n        return `nothing`;\n    if (value.length === 1)\n        return getPrintable(value[0]);\n    const rest = value.slice(0, -1);\n    const trailing = value[value.length - 1];\n    const separator = value.length > 2\n        ? `, ${conjunction} `\n        : ` ${conjunction} `;\n    return `${rest.map(value => getPrintable(value)).join(`, `)}${separator}${getPrintable(trailing)}`;\n}\nfunction computeKey(state, key) {\n    var _a, _b, _c;\n    if (typeof key === `number`) {\n        return `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}[${key}]`;\n    }\n    else if (simpleKeyRegExp.test(key)) {\n        return `${(_b = state === null || state === void 0 ? void 0 : state.p) !== null && _b !== void 0 ? _b : ``}.${key}`;\n    }\n    else {\n        return `${(_c = state === null || state === void 0 ? void 0 : state.p) !== null && _c !== void 0 ? _c : `.`}[${JSON.stringify(key)}]`;\n    }\n}\nfunction plural(n, singular, plural) {\n    return n === 1 ? singular : plural;\n}\n\nconst colorStringRegExp = /^#[0-9a-f]{6}$/i;\nconst colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i;\n// https://stackoverflow.com/a/475217/880703\nconst base64RegExp = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n// https://stackoverflow.com/a/14166194/880703\nconst uuid4RegExp = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i;\n// https://stackoverflow.com/a/28022901/880703 + https://www.debuggex.com/r/bl8J35wMKk48a7u_\nconst iso8601RegExp = /^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;\n\nfunction pushError({ errors, p } = {}, message) {\n    errors === null || errors === void 0 ? void 0 : errors.push(`${p !== null && p !== void 0 ? p : `.`}: ${message}`);\n    return false;\n}\nfunction makeSetter(target, key) {\n    return (v) => {\n        target[key] = v;\n    };\n}\nfunction makeCoercionFn(target, key) {\n    return (v) => {\n        const previous = target[key];\n        target[key] = v;\n        return makeCoercionFn(target, key).bind(null, previous);\n    };\n}\nfunction makeLazyCoercionFn(fn, orig, generator) {\n    const commit = () => {\n        fn(generator());\n        return revert;\n    };\n    const revert = () => {\n        fn(orig);\n        return commit;\n    };\n    return commit;\n}\n\n/**\n * Create a validator that always returns true and never refines the type.\n */\nfunction isUnknown() {\n    return makeValidator({\n        test: (value, state) => {\n            return true;\n        },\n    });\n}\nfunction isLiteral(expected) {\n    return makeValidator({\n        test: (value, state) => {\n            if (value !== expected)\n                return pushError(state, `Expected ${getPrintable(expected)} (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is a string.\n * Refines the type to `string`.\n */\nfunction isString() {\n    return makeValidator({\n        test: (value, state) => {\n            if (typeof value !== `string`)\n                return pushError(state, `Expected a string (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\nfunction isEnum(enumSpec) {\n    const valuesArray = Array.isArray(enumSpec) ? enumSpec : Object.values(enumSpec);\n    const isAlphaNum = valuesArray.every(item => typeof item === 'string' || typeof item === 'number');\n    const values = new Set(valuesArray);\n    if (values.size === 1)\n        return isLiteral([...values][0]);\n    return makeValidator({\n        test: (value, state) => {\n            if (!values.has(value)) {\n                if (isAlphaNum) {\n                    return pushError(state, `Expected one of ${getPrintableArray(valuesArray, `or`)} (got ${getPrintable(value)})`);\n                }\n                else {\n                    return pushError(state, `Expected a valid enumeration value (got ${getPrintable(value)})`);\n                }\n            }\n            return true;\n        },\n    });\n}\nconst BOOLEAN_COERCIONS = new Map([\n    [`true`, true],\n    [`True`, true],\n    [`1`, true],\n    [1, true],\n    [`false`, false],\n    [`False`, false],\n    [`0`, false],\n    [0, false],\n]);\n/**\n * Create a validator that only returns true when the tested value is a\n * boolean. Refines the type to `boolean`.\n *\n * Supports coercion:\n * - 'true' / 'True' / '1' / 1 will turn to `true`\n * - 'false' / 'False' / '0' / 0 will turn to `false`\n */\nfunction isBoolean() {\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (typeof value !== `boolean`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    const coercion = BOOLEAN_COERCIONS.get(value);\n                    if (typeof coercion !== `undefined`) {\n                        state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]);\n                        return true;\n                    }\n                }\n                return pushError(state, `Expected a boolean (got ${getPrintable(value)})`);\n            }\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is a\n * number (including floating numbers; use `cascade` and `isInteger` to\n * restrict the range further). Refines the type to `number`.\n *\n * Supports coercion.\n */\nfunction isNumber() {\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (typeof value !== `number`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    let coercion;\n                    if (typeof value === `string`) {\n                        let val;\n                        try {\n                            val = JSON.parse(value);\n                        }\n                        catch (_b) { }\n                        // We check against JSON.stringify that the output is the same to ensure that the number can be safely represented in JS\n                        if (typeof val === `number`) {\n                            if (JSON.stringify(val) === value) {\n                                coercion = val;\n                            }\n                            else {\n                                return pushError(state, `Received a number that can't be safely represented by the runtime (${value})`);\n                            }\n                        }\n                    }\n                    if (typeof coercion !== `undefined`) {\n                        state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]);\n                        return true;\n                    }\n                }\n                return pushError(state, `Expected a number (got ${getPrintable(value)})`);\n            }\n            return true;\n        },\n    });\n}\n/**\n * Important: This validator only makes sense when used in conjunction with\n * coercion! It will always error when used without.\n *\n * Create a validator that only returns true when the tested value is a\n * JSON representation of the expected type. Refines the type to the\n * expected type, and casts the value into its inner value.\n */\nfunction isPayload(spec) {\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (typeof (state === null || state === void 0 ? void 0 : state.coercions) === `undefined`)\n                return pushError(state, `The isPayload predicate can only be used with coercion enabled`);\n            if (typeof state.coercion === `undefined`)\n                return pushError(state, `Unbound coercion result`);\n            if (typeof value !== `string`)\n                return pushError(state, `Expected a string (got ${getPrintable(value)})`);\n            let inner;\n            try {\n                inner = JSON.parse(value);\n            }\n            catch (_b) {\n                return pushError(state, `Expected a JSON string (got ${getPrintable(value)})`);\n            }\n            const wrapper = { value: inner };\n            if (!spec(inner, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(wrapper, `value`) })))\n                return false;\n            state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, wrapper.value)]);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is a\n * valid date. Refines the type to `Date`.\n *\n * Supports coercion via one of the following formats:\n * - ISO86001 strings\n * - Unix timestamps\n */\nfunction isDate() {\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (!(value instanceof Date)) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    let coercion;\n                    if (typeof value === `string` && iso8601RegExp.test(value)) {\n                        coercion = new Date(value);\n                    }\n                    else {\n                        let timestamp;\n                        if (typeof value === `string`) {\n                            let val;\n                            try {\n                                val = JSON.parse(value);\n                            }\n                            catch (_b) { }\n                            if (typeof val === `number`) {\n                                timestamp = val;\n                            }\n                        }\n                        else if (typeof value === `number`) {\n                            timestamp = value;\n                        }\n                        if (typeof timestamp !== `undefined`) {\n                            if (Number.isSafeInteger(timestamp) || !Number.isSafeInteger(timestamp * 1000)) {\n                                coercion = new Date(timestamp * 1000);\n                            }\n                            else {\n                                return pushError(state, `Received a timestamp that can't be safely represented by the runtime (${value})`);\n                            }\n                        }\n                    }\n                    if (typeof coercion !== `undefined`) {\n                        state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]);\n                        return true;\n                    }\n                }\n                return pushError(state, `Expected a date (got ${getPrintable(value)})`);\n            }\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * array whose all values match the provided subspec. Refines the type to\n * `Array<T>`, with `T` being the subspec inferred type.\n *\n * Supports coercion if the `delimiter` option is set, in which case strings\n * will be split accordingly.\n */\nfunction isArray(spec, { delimiter } = {}) {\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            const originalValue = value;\n            if (typeof value === `string` && typeof delimiter !== `undefined`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    value = value.split(delimiter);\n                }\n            }\n            if (!Array.isArray(value))\n                return pushError(state, `Expected an array (got ${getPrintable(value)})`);\n            let valid = true;\n            for (let t = 0, T = value.length; t < T; ++t) {\n                valid = spec(value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid;\n                if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                    break;\n                }\n            }\n            if (value !== originalValue)\n                state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]);\n            return valid;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * set whose all values match the provided subspec. Refines the type to\n * `Set<T>`, with `T` being the subspec inferred type.\n *\n * Supports coercion from arrays (or anything that can be coerced into an\n * array).\n */\nfunction isSet(spec, { delimiter } = {}) {\n    const isArrayValidator = isArray(spec, { delimiter });\n    return makeValidator({\n        test: (value, state) => {\n            var _a, _b;\n            if (Object.getPrototypeOf(value).toString() === `[object Set]`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    const originalValues = [...value];\n                    const coercedValues = [...value];\n                    if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined })))\n                        return false;\n                    const updateValue = () => coercedValues.some((val, t) => val !== originalValues[t])\n                        ? new Set(coercedValues)\n                        : value;\n                    state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]);\n                    return true;\n                }\n                else {\n                    let valid = true;\n                    for (const subValue of value) {\n                        valid = spec(subValue, Object.assign({}, state)) && valid;\n                        if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                            break;\n                        }\n                    }\n                    return valid;\n                }\n            }\n            if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                    return pushError(state, `Unbound coercion result`);\n                const store = { value };\n                if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) })))\n                    return false;\n                state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Set(store.value))]);\n                return true;\n            }\n            return pushError(state, `Expected a set (got ${getPrintable(value)})`);\n        }\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * map whose all values match the provided subspecs. Refines the type to\n * `Map<U, V>`, with `U` being the key subspec inferred type and `V` being\n * the value subspec inferred type.\n *\n * Supports coercion from array of tuples (or anything that can be coerced into\n * an array of tuples).\n */\nfunction isMap(keySpec, valueSpec) {\n    const isArrayValidator = isArray(isTuple([keySpec, valueSpec]));\n    const isRecordValidator = isRecord(valueSpec, { keys: keySpec });\n    return makeValidator({\n        test: (value, state) => {\n            var _a, _b, _c;\n            if (Object.getPrototypeOf(value).toString() === `[object Map]`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    const originalValues = [...value];\n                    const coercedValues = [...value];\n                    if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined })))\n                        return false;\n                    const updateValue = () => coercedValues.some((val, t) => val[0] !== originalValues[t][0] || val[1] !== originalValues[t][1])\n                        ? new Map(coercedValues)\n                        : value;\n                    state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]);\n                    return true;\n                }\n                else {\n                    let valid = true;\n                    for (const [key, subValue] of value) {\n                        valid = keySpec(key, Object.assign({}, state)) && valid;\n                        if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                            break;\n                        }\n                        valid = valueSpec(subValue, Object.assign(Object.assign({}, state), { p: computeKey(state, key) })) && valid;\n                        if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                            break;\n                        }\n                    }\n                    return valid;\n                }\n            }\n            if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                    return pushError(state, `Unbound coercion result`);\n                const store = { value };\n                if (Array.isArray(value)) {\n                    if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined })))\n                        return false;\n                    state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(store.value))]);\n                    return true;\n                }\n                else {\n                    if (!isRecordValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) })))\n                        return false;\n                    state.coercions.push([(_c = state.p) !== null && _c !== void 0 ? _c : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(Object.entries(store.value)))]);\n                    return true;\n                }\n            }\n            return pushError(state, `Expected a map (got ${getPrintable(value)})`);\n        }\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is a\n * tuple whose each value matches the corresponding subspec. Refines the type\n * into a tuple whose each item has the type inferred by the corresponding\n * tuple.\n *\n * Supports coercion if the `delimiter` option is set, in which case strings\n * will be split accordingly.\n */\nfunction isTuple(spec, { delimiter } = {}) {\n    const lengthValidator = hasExactLength(spec.length);\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (typeof value === `string` && typeof delimiter !== `undefined`) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    value = value.split(delimiter);\n                    state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]);\n                }\n            }\n            if (!Array.isArray(value))\n                return pushError(state, `Expected a tuple (got ${getPrintable(value)})`);\n            let valid = lengthValidator(value, Object.assign({}, state));\n            for (let t = 0, T = value.length; t < T && t < spec.length; ++t) {\n                valid = spec[t](value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid;\n                if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                    break;\n                }\n            }\n            return valid;\n        },\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * object with any amount of properties that must all match the provided\n * subspec. Refines the type to `Record<string, T>`, with `T` being the\n * subspec inferred type.\n *\n * Keys can be optionally validated as well by using the `keys` optional\n * subspec parameter.\n */\nfunction isRecord(spec, { keys: keySpec = null, } = {}) {\n    const isArrayValidator = isArray(isTuple([keySpec !== null && keySpec !== void 0 ? keySpec : isString(), spec]));\n    return makeValidator({\n        test: (value, state) => {\n            var _a;\n            if (Array.isArray(value)) {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                        return pushError(state, `Unbound coercion result`);\n                    if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined })))\n                        return false;\n                    value = Object.fromEntries(value);\n                    state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]);\n                    return true;\n                }\n            }\n            if (typeof value !== `object` || value === null)\n                return pushError(state, `Expected an object (got ${getPrintable(value)})`);\n            const keys = Object.keys(value);\n            let valid = true;\n            for (let t = 0, T = keys.length; t < T && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null); ++t) {\n                const key = keys[t];\n                const sub = value[key];\n                if (key === `__proto__` || key === `constructor`) {\n                    valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`);\n                    continue;\n                }\n                if (keySpec !== null && !keySpec(key, state)) {\n                    valid = false;\n                    continue;\n                }\n                if (!spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) }))) {\n                    valid = false;\n                    continue;\n                }\n            }\n            return valid;\n        },\n    });\n}\n/**\n * @deprecated Replace `isDict` by `isRecord`\n */\nfunction isDict(spec, opts = {}) {\n    return isRecord(spec, opts);\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * object whose all properties match their corresponding subspec. Refines\n * the type into an object whose each property has the type inferred by the\n * corresponding subspec.\n *\n * Unlike `t.isPartial`, `t.isObject` doesn't allow extraneous properties by\n * default. This behaviour can be altered by using the `extra` optional\n * subspec parameter, which will be called to validate an object only\n * containing the extraneous properties.\n *\n * Calling `t.isObject(..., {extra: t.isRecord(t.isUnknown())})` is\n * essentially the same as calling `t.isPartial(...)`.\n */\nfunction isObject(props, { extra: extraSpec = null, } = {}) {\n    const specKeys = Object.keys(props);\n    const validator = makeValidator({\n        test: (value, state) => {\n            if (typeof value !== `object` || value === null)\n                return pushError(state, `Expected an object (got ${getPrintable(value)})`);\n            const keys = new Set([...specKeys, ...Object.keys(value)]);\n            const extra = {};\n            let valid = true;\n            for (const key of keys) {\n                if (key === `constructor` || key === `__proto__`) {\n                    valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`);\n                }\n                else {\n                    const spec = Object.prototype.hasOwnProperty.call(props, key)\n                        ? props[key]\n                        : undefined;\n                    const sub = Object.prototype.hasOwnProperty.call(value, key)\n                        ? value[key]\n                        : undefined;\n                    if (typeof spec !== `undefined`) {\n                        valid = spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) })) && valid;\n                    }\n                    else if (extraSpec === null) {\n                        valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Extraneous property (got ${getPrintable(sub)})`);\n                    }\n                    else {\n                        Object.defineProperty(extra, key, {\n                            enumerable: true,\n                            get: () => sub,\n                            set: makeSetter(value, key)\n                        });\n                    }\n                }\n                if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) {\n                    break;\n                }\n            }\n            if (extraSpec !== null && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null))\n                valid = extraSpec(extra, state) && valid;\n            return valid;\n        },\n    });\n    return Object.assign(validator, {\n        properties: props,\n    });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * object whose all properties match their corresponding subspec. Refines\n * the type into an object whose each property has the type inferred by the\n * corresponding subspec.\n *\n * Unlike `t.isObject`, `t.isPartial` allows extraneous properties. The\n * resulting type will reflect this behaviour by including an index\n * signature (each extraneous property being typed `unknown`).\n *\n * Calling `t.isPartial(...)` is essentially the same as calling\n * `t.isObject(..., {extra: t.isRecord(t.isUnknown())})`.\n */\nfunction isPartial(props) {\n    return isObject(props, { extra: isRecord(isUnknown()) });\n}\n/**\n * Create a validator that only returns true when the tested value is an\n * object whose prototype is derived from the given class. Refines the type\n * into a class instance.\n */\nconst isInstanceOf = (constructor) => makeValidator({\n    test: (value, state) => {\n        if (!(value instanceof constructor))\n            return pushError(state, `Expected an instance of ${constructor.name} (got ${getPrintable(value)})`);\n        return true;\n    },\n});\n/**\n * Create a validator that only returns true when the tested value is an\n * object matching any of the provided subspecs. If the optional `exclusive`\n * parameter is set to `true`, the behaviour changes so that the validator\n * only returns true when exactly one subspec matches.\n */\nconst isOneOf = (specs, { exclusive = false, } = {}) => makeValidator({\n    test: (value, state) => {\n        var _a, _b, _c;\n        const matches = [];\n        const errorBuffer = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined`\n            ? [] : undefined;\n        for (let t = 0, T = specs.length; t < T; ++t) {\n            const subErrors = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined`\n                ? [] : undefined;\n            const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`\n                ? [] : undefined;\n            if (specs[t](value, Object.assign(Object.assign({}, state), { errors: subErrors, coercions: subCoercions, p: `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}#${t + 1}` }))) {\n                matches.push([`#${t + 1}`, subCoercions]);\n                if (!exclusive) {\n                    break;\n                }\n            }\n            else {\n                errorBuffer === null || errorBuffer === void 0 ? void 0 : errorBuffer.push(subErrors[0]);\n            }\n        }\n        if (matches.length === 1) {\n            const [, subCoercions] = matches[0];\n            if (typeof subCoercions !== `undefined`)\n                (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions);\n            return true;\n        }\n        if (matches.length > 1)\n            pushError(state, `Expected to match exactly a single predicate (matched ${matches.join(`, `)})`);\n        else\n            (_c = state === null || state === void 0 ? void 0 : state.errors) === null || _c === void 0 ? void 0 : _c.push(...errorBuffer);\n        return false;\n    },\n});\n\nfunction makeTrait(value) {\n    return () => {\n        return value;\n    };\n}\nfunction makeValidator({ test }) {\n    return makeTrait(test)();\n}\nclass TypeAssertionError extends Error {\n    constructor({ errors } = {}) {\n        let errorMessage = `Type mismatch`;\n        if (errors && errors.length > 0) {\n            errorMessage += `\\n`;\n            for (const error of errors) {\n                errorMessage += `\\n- ${error}`;\n            }\n        }\n        super(errorMessage);\n    }\n}\n/**\n * Check that the specified value matches the given validator, and throws an\n * exception if it doesn't. Refine the type if it passes.\n */\nfunction assert(val, validator) {\n    if (!validator(val)) {\n        throw new TypeAssertionError();\n    }\n}\n/**\n * Check that the specified value matches the given validator, and throws an\n * exception if it doesn't. Refine the type if it passes.\n *\n * Thrown exceptions include details about what exactly looks invalid in the\n * tested value.\n */\nfunction assertWithErrors(val, validator) {\n    const errors = [];\n    if (!validator(val, { errors })) {\n        throw new TypeAssertionError({ errors });\n    }\n}\n/**\n * Compile-time only. Refine the type as if the validator was matching the\n * tested value, but doesn't actually run it. Similar to the classic `as`\n * operator in TypeScript.\n */\nfunction softAssert(val, validator) {\n    // It's a soft assert; we tell TypeScript about the type, but we don't need to check it\n}\nfunction as(value, validator, { coerce = false, errors: storeErrors, throw: throws } = {}) {\n    const errors = storeErrors ? [] : undefined;\n    if (!coerce) {\n        if (validator(value, { errors })) {\n            return throws ? value : { value, errors: undefined };\n        }\n        else if (!throws) {\n            return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true };\n        }\n        else {\n            throw new TypeAssertionError({ errors });\n        }\n    }\n    const state = { value };\n    const coercion = makeCoercionFn(state, `value`);\n    const coercions = [];\n    if (!validator(value, { errors, coercion, coercions })) {\n        if (!throws) {\n            return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true };\n        }\n        else {\n            throw new TypeAssertionError({ errors });\n        }\n    }\n    for (const [, apply] of coercions)\n        apply();\n    if (throws) {\n        return state.value;\n    }\n    else {\n        return { value: state.value, errors: undefined };\n    }\n}\n/**\n * Create and return a new function that apply the given validators to each\n * corresponding argument passed to the function and throws an exception in\n * case of a mismatch.\n */\nfunction fn(validators, fn) {\n    const isValidArgList = isTuple(validators);\n    return ((...args) => {\n        const check = isValidArgList(args);\n        if (!check)\n            throw new TypeAssertionError();\n        return fn(...args);\n    });\n}\n\n/**\n * Create a validator that checks that the tested array or string has at least\n * the specified length.\n */\nfunction hasMinLength(length) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value.length >= length))\n                return pushError(state, `Expected to have a length of at least ${length} elements (got ${value.length})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested array or string has at most\n * the specified length.\n */\nfunction hasMaxLength(length) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value.length <= length))\n                return pushError(state, `Expected to have a length of at most ${length} elements (got ${value.length})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested array or string has exactly\n * the specified length.\n */\nfunction hasExactLength(length) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value.length === length))\n                return pushError(state, `Expected to have a length of exactly ${length} elements (got ${value.length})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested array only contains unique\n * elements. The optional `map` parameter lets you define a transform to\n * apply before making the check (the result of this transform will be\n * discarded afterwards).\n */\nfunction hasUniqueItems({ map, } = {}) {\n    return makeValidator({\n        test: (value, state) => {\n            const set = new Set();\n            const dup = new Set();\n            for (let t = 0, T = value.length; t < T; ++t) {\n                const sub = value[t];\n                const key = typeof map !== `undefined`\n                    ? map(sub)\n                    : sub;\n                if (set.has(key)) {\n                    if (dup.has(key))\n                        continue;\n                    pushError(state, `Expected to contain unique elements; got a duplicate with ${getPrintable(value)}`);\n                    dup.add(key);\n                }\n                else {\n                    set.add(key);\n                }\n            }\n            return dup.size === 0;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is strictly less than 0.\n */\nfunction isNegative() {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value <= 0))\n                return pushError(state, `Expected to be negative (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is equal or greater\n * than 0.\n */\nfunction isPositive() {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value >= 0))\n                return pushError(state, `Expected to be positive (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is equal or greater\n * than the specified reference.\n */\nfunction isAtLeast(n) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value >= n))\n                return pushError(state, `Expected to be at least ${n} (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is equal or smaller\n * than the specified reference.\n */\nfunction isAtMost(n) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value <= n))\n                return pushError(state, `Expected to be at most ${n} (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is between the\n * specified references (including the upper boundary).\n */\nfunction isInInclusiveRange(a, b) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value >= a && value <= b))\n                return pushError(state, `Expected to be in the [${a}; ${b}] range (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is between the\n * specified references (excluding the upper boundary).\n */\nfunction isInExclusiveRange(a, b) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!(value >= a && value < b))\n                return pushError(state, `Expected to be in the [${a}; ${b}[ range (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested number is an integer.\n *\n * By default Typanion will also check that it's a *safe* integer. For example,\n * 2^53 wouldn't be a safe integer because 2^53+1 would be rounded to 2^53,\n * which could put your applications at risk when used in loops.\n */\nfunction isInteger({ unsafe = false, } = {}) {\n    return makeValidator({\n        test: (value, state) => {\n            if (value !== Math.round(value))\n                return pushError(state, `Expected to be an integer (got ${value})`);\n            if (!unsafe && !Number.isSafeInteger(value))\n                return pushError(state, `Expected to be a safe integer (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string matches the given\n * regular expression.\n */\nfunction matchesRegExp(regExp) {\n    return makeValidator({\n        test: (value, state) => {\n            if (!regExp.test(value))\n                return pushError(state, `Expected to match the pattern ${regExp.toString()} (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string only contain lowercase\n * characters.\n */\nfunction isLowerCase() {\n    return makeValidator({\n        test: (value, state) => {\n            if (value !== value.toLowerCase())\n                return pushError(state, `Expected to be all-lowercase (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string only contain uppercase\n * characters.\n */\nfunction isUpperCase() {\n    return makeValidator({\n        test: (value, state) => {\n            if (value !== value.toUpperCase())\n                return pushError(state, `Expected to be all-uppercase (got ${value})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string is a valid UUID v4.\n */\nfunction isUUID4() {\n    return makeValidator({\n        test: (value, state) => {\n            if (!uuid4RegExp.test(value))\n                return pushError(state, `Expected to be a valid UUID v4 (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string is a valid ISO8601\n * date.\n */\nfunction isISO8601() {\n    return makeValidator({\n        test: (value, state) => {\n            if (!iso8601RegExp.test(value))\n                return pushError(state, `Expected to be a valid ISO 8601 date string (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string is a valid hexadecimal\n * color. Setting the optional `alpha` parameter to `true` allows an additional\n * transparency channel to be included.\n */\nfunction isHexColor({ alpha = false, }) {\n    return makeValidator({\n        test: (value, state) => {\n            const res = alpha\n                ? colorStringRegExp.test(value)\n                : colorStringAlphaRegExp.test(value);\n            if (!res)\n                return pushError(state, `Expected to be a valid hexadecimal color string (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string is valid base64.\n */\nfunction isBase64() {\n    return makeValidator({\n        test: (value, state) => {\n            if (!base64RegExp.test(value))\n                return pushError(state, `Expected to be a valid base 64 string (got ${getPrintable(value)})`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested string is valid JSON. A\n * optional spec can be passed as parameter, in which case the data will be\n * deserialized and validated against the spec (coercion will be disabled\n * for this check, and even if successful the returned value will still be\n * the original string).\n */\nfunction isJSON(spec = isUnknown()) {\n    return makeValidator({\n        test: (value, state) => {\n            let data;\n            try {\n                data = JSON.parse(value);\n            }\n            catch (_a) {\n                return pushError(state, `Expected to be a valid JSON string (got ${getPrintable(value)})`);\n            }\n            return spec(data, state);\n        },\n    });\n}\n\nfunction cascade(spec, ...followups) {\n    const resolvedFollowups = Array.isArray(followups[0])\n        ? followups[0]\n        : followups;\n    return makeValidator({\n        test: (value, state) => {\n            var _a, _b;\n            const context = { value: value };\n            const subCoercion = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`\n                ? makeCoercionFn(context, `value`) : undefined;\n            const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`\n                ? [] : undefined;\n            if (!spec(value, Object.assign(Object.assign({}, state), { coercion: subCoercion, coercions: subCoercions })))\n                return false;\n            const reverts = [];\n            if (typeof subCoercions !== `undefined`)\n                for (const [, coercion] of subCoercions)\n                    reverts.push(coercion());\n            try {\n                if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) {\n                    if (context.value !== value) {\n                        if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`)\n                            return pushError(state, `Unbound coercion result`);\n                        state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, context.value)]);\n                    }\n                    (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions);\n                }\n                return resolvedFollowups.every(spec => {\n                    return spec(context.value, state);\n                });\n            }\n            finally {\n                for (const revert of reverts) {\n                    revert();\n                }\n            }\n        },\n    });\n}\nfunction applyCascade(spec, ...followups) {\n    const resolvedFollowups = Array.isArray(followups[0])\n        ? followups[0]\n        : followups;\n    return cascade(spec, resolvedFollowups);\n}\n/**\n * Wraps the given spec to also allow `undefined`.\n */\nfunction isOptional(spec) {\n    return makeValidator({\n        test: (value, state) => {\n            if (typeof value === `undefined`)\n                return true;\n            return spec(value, state);\n        },\n    });\n}\n/**\n * Wraps the given spec to also allow `null`.\n */\nfunction isNullable(spec) {\n    return makeValidator({\n        test: (value, state) => {\n            if (value === null)\n                return true;\n            return spec(value, state);\n        },\n    });\n}\nconst checks = {\n    missing: (keys, key) => keys.has(key),\n    undefined: (keys, key, value) => keys.has(key) && typeof value[key] !== `undefined`,\n    nil: (keys, key, value) => keys.has(key) && value[key] != null,\n    falsy: (keys, key, value) => keys.has(key) && !!value[key],\n};\n/**\n * Create a validator that checks that the tested object contains the specified\n * keys.\n*/\nfunction hasRequiredKeys(requiredKeys, options) {\n    var _a;\n    const requiredSet = new Set(requiredKeys);\n    const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing'];\n    return makeValidator({\n        test: (value, state) => {\n            const keys = new Set(Object.keys(value));\n            const problems = [];\n            for (const key of requiredSet)\n                if (!check(keys, key, value))\n                    problems.push(key);\n            if (problems.length > 0)\n                return pushError(state, `Missing required ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`);\n            return true;\n        },\n    });\n}\n/**\n* Create a validator that checks that the tested object contains at least one\n* of the specified keys.\n*/\nfunction hasAtLeastOneKey(requiredKeys, options) {\n    var _a;\n    const requiredSet = new Set(requiredKeys);\n    const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing'];\n    return makeValidator({\n        test: (value, state) => {\n            const keys = Object.keys(value);\n            const valid = keys.some(key => check(requiredSet, key, value));\n            if (!valid)\n                return pushError(state, `Missing at least one property from ${getPrintableArray(Array.from(requiredSet), `or`)}`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested object contains none of the\n * specified keys.\n*/\nfunction hasForbiddenKeys(forbiddenKeys, options) {\n    var _a;\n    const forbiddenSet = new Set(forbiddenKeys);\n    const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing'];\n    return makeValidator({\n        test: (value, state) => {\n            const keys = new Set(Object.keys(value));\n            const problems = [];\n            for (const key of forbiddenSet)\n                if (check(keys, key, value))\n                    problems.push(key);\n            if (problems.length > 0)\n                return pushError(state, `Forbidden ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`);\n            return true;\n        },\n    });\n}\n/**\n * Create a validator that checks that the tested object contains at most one\n * of the specified keys.\n */\nfunction hasMutuallyExclusiveKeys(exclusiveKeys, options) {\n    var _a;\n    const exclusiveSet = new Set(exclusiveKeys);\n    const check = checks[(_a = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _a !== void 0 ? _a : 'missing'];\n    return makeValidator({\n        test: (value, state) => {\n            const keys = new Set(Object.keys(value));\n            const used = [];\n            for (const key of exclusiveSet)\n                if (check(keys, key, value))\n                    used.push(key);\n            if (used.length > 1)\n                return pushError(state, `Mutually exclusive properties ${getPrintableArray(used, `and`)}`);\n            return true;\n        },\n    });\n}\n(function (KeyRelationship) {\n    KeyRelationship[\"Forbids\"] = \"Forbids\";\n    KeyRelationship[\"Requires\"] = \"Requires\";\n})(exports.KeyRelationship || (exports.KeyRelationship = {}));\nconst keyRelationships = {\n    [exports.KeyRelationship.Forbids]: {\n        expect: false,\n        message: `forbids using`,\n    },\n    [exports.KeyRelationship.Requires]: {\n        expect: true,\n        message: `requires using`,\n    },\n};\n/**\n * Create a validator that checks that, when the specified subject property is\n * set, the relationship is satisfied.\n */\nfunction hasKeyRelationship(subject, relationship, others, options) {\n    var _a, _b;\n    const skipped = new Set((_a = options === null || options === void 0 ? void 0 : options.ignore) !== null && _a !== void 0 ? _a : []);\n    const check = checks[(_b = options === null || options === void 0 ? void 0 : options.missingIf) !== null && _b !== void 0 ? _b : 'missing'];\n    const otherSet = new Set(others);\n    const spec = keyRelationships[relationship];\n    const conjunction = relationship === exports.KeyRelationship.Forbids\n        ? `or`\n        : `and`;\n    return makeValidator({\n        test: (value, state) => {\n            const keys = new Set(Object.keys(value));\n            if (!check(keys, subject, value) || skipped.has(value[subject]))\n                return true;\n            const problems = [];\n            for (const key of otherSet)\n                if ((check(keys, key, value) && !skipped.has(value[key])) !== spec.expect)\n                    problems.push(key);\n            if (problems.length >= 1)\n                return pushError(state, `Property \"${subject}\" ${spec.message} ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, conjunction)}`);\n            return true;\n        },\n    });\n}\n\nexports.TypeAssertionError = TypeAssertionError;\nexports.applyCascade = applyCascade;\nexports.as = as;\nexports.assert = assert;\nexports.assertWithErrors = assertWithErrors;\nexports.cascade = cascade;\nexports.fn = fn;\nexports.hasAtLeastOneKey = hasAtLeastOneKey;\nexports.hasExactLength = hasExactLength;\nexports.hasForbiddenKeys = hasForbiddenKeys;\nexports.hasKeyRelationship = hasKeyRelationship;\nexports.hasMaxLength = hasMaxLength;\nexports.hasMinLength = hasMinLength;\nexports.hasMutuallyExclusiveKeys = hasMutuallyExclusiveKeys;\nexports.hasRequiredKeys = hasRequiredKeys;\nexports.hasUniqueItems = hasUniqueItems;\nexports.isArray = isArray;\nexports.isAtLeast = isAtLeast;\nexports.isAtMost = isAtMost;\nexports.isBase64 = isBase64;\nexports.isBoolean = isBoolean;\nexports.isDate = isDate;\nexports.isDict = isDict;\nexports.isEnum = isEnum;\nexports.isHexColor = isHexColor;\nexports.isISO8601 = isISO8601;\nexports.isInExclusiveRange = isInExclusiveRange;\nexports.isInInclusiveRange = isInInclusiveRange;\nexports.isInstanceOf = isInstanceOf;\nexports.isInteger = isInteger;\nexports.isJSON = isJSON;\nexports.isLiteral = isLiteral;\nexports.isLowerCase = isLowerCase;\nexports.isMap = isMap;\nexports.isNegative = isNegative;\nexports.isNullable = isNullable;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isOneOf = isOneOf;\nexports.isOptional = isOptional;\nexports.isPartial = isPartial;\nexports.isPayload = isPayload;\nexports.isPositive = isPositive;\nexports.isRecord = isRecord;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isTuple = isTuple;\nexports.isUUID4 = isUUID4;\nexports.isUnknown = isUnknown;\nexports.isUpperCase = isUpperCase;\nexports.makeTrait = makeTrait;\nexports.makeValidator = makeValidator;\nexports.matchesRegExp = matchesRegExp;\nexports.softAssert = softAssert;\n","'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            if (!prevAnchors)\n                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                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) {\n        let found = undefined;\n        visit.visit(doc, {\n            Node: (_key, node) => {\n                if (node === this)\n                    return visit.visit.BREAK;\n                if (node.anchor === this.source)\n                    found = node;\n            }\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);\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 || 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            if (!ref.anchor)\n                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) || /^\\s*$/.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    let header = (literal ? '|' : '>') + (startWithSpace ? indentSize : '') + chomp;\n    if (comment) {\n        header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n        if (onComment)\n            onComment();\n    }\n    if (literal) {\n        value = value.replace(/\\n+/g, `$&${indent}`);\n        return `${header}\\n${indent}${start}${value}${end}`;\n    }\n    value = 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    const body = foldFlowLines.foldFlowLines(`${start}${value}${end}`, indent, foldFlowLines.FOLD_BLOCK, getFoldOptions(ctx, true));\n    return `${header}\\n${indent}${body}`;\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 (!value ||\n        /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n        // not allowed:\n        // - empty string, '-' 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        const match = tags.filter(t => t.identify?.(obj));\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 ?? 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 ? 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    if (!tagObj)\n        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')\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\nfunction debug(logLevel, ...messages) {\n    if (logLevel === 'debug')\n        console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n    if (logLevel === 'debug' || logLevel === 'warn') {\n        // https://github.com/typescript-eslint/typescript-eslint/issues/7478\n        // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n        if (typeof process !== 'undefined' && process.emitWarning)\n            process.emitWarning(warning);\n        else\n            console.warn(warning);\n    }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar log = require('../log.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nconst MERGE_KEY = '<<';\nfunction addPairToJSMap(ctx, map, { key, value }) {\n    if (ctx?.doc.schema.merge && isMergeKey(key)) {\n        value = identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n        if (identity.isSeq(value))\n            for (const it of value.items)\n                mergeToJSMap(ctx, map, it);\n        else if (Array.isArray(value))\n            for (const it of value)\n                mergeToJSMap(ctx, map, it);\n        else\n            mergeToJSMap(ctx, map, value);\n    }\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}\nconst isMergeKey = (key) => key === MERGE_KEY ||\n    (identity.isScalar(key) &&\n        key.value === MERGE_KEY &&\n        (!key.type || key.type === Scalar.Scalar.PLAIN));\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\nfunction mergeToJSMap(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}\nfunction stringifyKey(key, jsKey, ctx) {\n    if (jsKey === null)\n        return '';\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 = 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 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 Buffer === 'function') {\n            return 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        const buf = value; // checked earlier by binary.identify()\n        let str;\n        if (typeof Buffer === 'function') {\n            str =\n                buf instanceof Buffer\n                    ? buf.toString('base64')\n                    : 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        if (!type)\n            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 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    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 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    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: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) {\n    let tags = schemas.get(schemaName);\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    return tags.map(tag => {\n        if (typeof tag !== 'string')\n            return tag;\n        const tagObj = tagsByName[tag];\n        if (tagObj)\n            return tagObj;\n        const keys = Object.keys(tagsByName)\n            .map(key => JSON.stringify(key))\n            .join(', ');\n        throw new Error(`Unknown custom tag \"${tag}\"; use one of ${keys}`);\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.merge = !!merge;\n        this.name = (typeof schema === 'string' && schema) || 'core';\n        this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n        this.tags = tags.getTags(customTags, this.name);\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            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 = { merge: true, 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 = { merge: false, 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 && 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\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                if (start === null)\n                    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                if (start === null)\n                    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 ||\n            (identity.isScalar(a) &&\n                identity.isScalar(b) &&\n                a.value === b.value &&\n                !(a.value === '<<' && ctx.schema.merge));\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        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        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    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 && 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    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            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            // 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 && 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                coll.items.push(map);\n            }\n            offset = valueNode ? valueNode.range[2] : valueProps.end;\n        }\n    }\n    const expectedEnd = isMap ? '}' : ']';\n    const [ce, ...ee] = fc.end;\n    let cePos = offset;\n    if (ce && ce.source === expectedEnd)\n        cePos = ce.offset + ce.source.length;\n    else {\n        const name = fcName[0].toUpperCase() + fcName.substring(1);\n        const msg = atRoot\n            ? `${name} must end with a ${expectedEnd}`\n            : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n        onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n        if (ce && ce.source.length !== 1)\n            ee.unshift(ce);\n    }\n    if (ee.length > 0) {\n        const end = resolveEnd.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 && kt.collection === expType) {\n            ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n            tag = kt;\n        }\n        else {\n            if (kt?.collection) {\n                onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, 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    const tag = tagToken && tagName\n        ? findScalarTagByName(ctx.schema, value, tagName, tagToken, onError)\n        : token.type === 'scalar'\n            ? findScalarTagByTest(ctx, value, token, onError)\n            : 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({ directives, schema }, value, token, onError) {\n    const tag = schema.tags.find(tag => tag.default && 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        if (pos === null)\n            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 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 { 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 (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        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 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 (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 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 (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 || 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, 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 (atMapIndent && bv.type !== 'block-seq') {\n                            map.items.push({ start });\n                        }\n                        this.stack.push(bv);\n                        return;\n                    }\n                }\n            }\n        }\n        yield* this.pop();\n        yield* this.step();\n    }\n    *blockSequence(seq) {\n        const it = seq.items[seq.items.length - 1];\n        switch (this.type) {\n            case 'newline':\n                if (it.value) {\n                    const end = 'end' in it.value ? it.value.end : undefined;\n                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n                    if (last?.type === 'comment')\n                        end?.push(this.sourceToken);\n                    else\n                        seq.items.push({ start: [this.sourceToken] });\n                }\n                else\n                    it.start.push(this.sourceToken);\n                return;\n            case 'space':\n            case 'comment':\n                if (it.value)\n                    seq.items.push({ start: [this.sourceToken] });\n                else {\n                    if (this.atIndentedComment(it.start, seq.indent)) {\n                        const prev = seq.items[seq.items.length - 2];\n                        const end = prev?.value?.end;\n                        if (Array.isArray(end)) {\n                            Array.prototype.push.apply(end, it.start);\n                            end.push(this.sourceToken);\n                            seq.items.pop();\n                            return;\n                        }\n                    }\n                    it.start.push(this.sourceToken);\n                }\n                return;\n            case 'anchor':\n            case 'tag':\n                if (it.value || this.indent <= seq.indent)\n                    break;\n                it.start.push(this.sourceToken);\n                return;\n            case 'seq-item-ind':\n                if (this.indent !== seq.indent)\n                    break;\n                if (it.value || includesToken(it.start, 'seq-item-ind'))\n                    seq.items.push({ start: [this.sourceToken] });\n                else\n                    it.start.push(this.sourceToken);\n                return;\n        }\n        if (this.indent > seq.indent) {\n            const bv = this.startBlockValue(seq);\n            if (bv) {\n                this.stack.push(bv);\n                return;\n            }\n        }\n        yield* this.pop();\n        yield* this.step();\n    }\n    *flowCollection(fc) {\n        const it = fc.items[fc.items.length - 1];\n        if (this.type === 'flow-error-end') {\n            let top;\n            do {\n                yield* this.pop();\n                top = this.peek(1);\n            } while (top && top.type === 'flow-collection');\n        }\n        else if (fc.end.length === 0) {\n            switch (this.type) {\n                case 'comma':\n                case 'explicit-key-ind':\n                    if (!it || it.sep)\n                        fc.items.push({ start: [this.sourceToken] });\n                    else\n                        it.start.push(this.sourceToken);\n                    return;\n                case 'map-value-ind':\n                    if (!it || it.value)\n                        fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n                    else if (it.sep)\n                        it.sep.push(this.sourceToken);\n                    else\n                        Object.assign(it, { key: null, sep: [this.sourceToken] });\n                    return;\n                case 'space':\n                case 'comment':\n                case 'newline':\n                case 'anchor':\n                case 'tag':\n                    if (!it || it.value)\n                        fc.items.push({ start: [this.sourceToken] });\n                    else if (it.sep)\n                        it.sep.push(this.sourceToken);\n                    else\n                        it.start.push(this.sourceToken);\n                    return;\n                case 'alias':\n                case 'scalar':\n                case 'single-quoted-scalar':\n                case 'double-quoted-scalar': {\n                    const fs = this.flowScalar(this.type);\n                    if (!it || it.value)\n                        fc.items.push({ start: [], key: fs, sep: [] });\n                    else if (it.sep)\n                        this.stack.push(fs);\n                    else\n                        Object.assign(it, { key: fs, sep: [] });\n                    return;\n                }\n                case 'flow-map-end':\n                case 'flow-seq-end':\n                    fc.end.push(this.sourceToken);\n                    return;\n            }\n            const bv = this.startBlockValue(fc);\n            /* istanbul ignore else should not happen */\n            if (bv)\n                this.stack.push(bv);\n            else {\n                yield* this.pop();\n                yield* this.step();\n            }\n        }\n        else {\n            const parent = this.peek(2);\n            if (parent.type === 'block-map' &&\n                ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n                    (this.type === 'newline' &&\n                        !parent.items[parent.items.length - 1].sep))) {\n                yield* this.pop();\n                yield* this.step();\n            }\n            else if (this.type === 'map-value-ind' &&\n                parent.type !== 'flow-collection') {\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                fixFlowSeqItems(fc);\n                const sep = fc.end.splice(1, fc.end.length);\n                sep.push(this.sourceToken);\n                const map = {\n                    type: 'block-map',\n                    offset: fc.offset,\n                    indent: fc.indent,\n                    items: [{ start, key: fc, sep }]\n                };\n                this.onKeyLine = true;\n                this.stack[this.stack.length - 1] = map;\n            }\n            else {\n                yield* this.lineEnd(fc);\n            }\n        }\n    }\n    flowScalar(type) {\n        if (this.onNewLine) {\n            let nl = this.source.indexOf('\\n') + 1;\n            while (nl !== 0) {\n                this.onNewLine(this.offset + nl);\n                nl = this.source.indexOf('\\n', nl) + 1;\n            }\n        }\n        return {\n            type,\n            offset: this.offset,\n            indent: this.indent,\n            source: this.source\n        };\n    }\n    startBlockValue(parent) {\n        switch (this.type) {\n            case 'alias':\n            case 'scalar':\n            case 'single-quoted-scalar':\n            case 'double-quoted-scalar':\n                return this.flowScalar(this.type);\n            case 'block-scalar-header':\n                return {\n                    type: 'block-scalar',\n                    offset: this.offset,\n                    indent: this.indent,\n                    props: [this.sourceToken],\n                    source: ''\n                };\n            case 'flow-map-start':\n            case 'flow-seq-start':\n                return {\n                    type: 'flow-collection',\n                    offset: this.offset,\n                    indent: this.indent,\n                    start: this.sourceToken,\n                    items: [],\n                    end: []\n                };\n            case 'seq-item-ind':\n                return {\n                    type: 'block-seq',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start: [this.sourceToken] }]\n                };\n            case 'explicit-key-ind': {\n                this.onKeyLine = true;\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                start.push(this.sourceToken);\n                return {\n                    type: 'block-map',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start, explicitKey: true }]\n                };\n            }\n            case 'map-value-ind': {\n                this.onKeyLine = true;\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                return {\n                    type: 'block-map',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start, key: null, sep: [this.sourceToken] }]\n                };\n            }\n        }\n        return null;\n    }\n    atIndentedComment(start, indent) {\n        if (this.type !== 'comment')\n            return false;\n        if (this.indent <= indent)\n            return false;\n        return start.every(st => st.type === 'newline' || st.type === 'space');\n    }\n    *documentEnd(docEnd) {\n        if (this.type !== 'doc-mode') {\n            if (docEnd.end)\n                docEnd.end.push(this.sourceToken);\n            else\n                docEnd.end = [this.sourceToken];\n            if (this.type === 'newline')\n                yield* this.pop();\n        }\n    }\n    *lineEnd(token) {\n        switch (this.type) {\n            case 'comma':\n            case 'doc-start':\n            case 'doc-end':\n            case 'flow-seq-end':\n            case 'flow-map-end':\n            case 'map-value-ind':\n                yield* this.pop();\n                yield* this.step();\n                break;\n            case 'newline':\n                this.onKeyLine = false;\n            // fallthrough\n            case 'space':\n            case 'comment':\n            default:\n                // all other values are errors\n                if (token.end)\n                    token.end.push(this.sourceToken);\n                else\n                    token.end = [this.sourceToken];\n                if (this.type === 'newline')\n                    yield* this.pop();\n        }\n    }\n}\n\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 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    return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","import { getMatchingFilePaths } from \"make-vfs\"\n\nexport const createRouteMapFromDirectory = async (\n  directoryPath: string\n): Promise<Record<string, { relativePath: string }>> => {\n  const filePaths = await getMatchingFilePaths({\n    dirPath: directoryPath,\n    extensions: [\"ts\", \"tsx\"],\n  })\n\n  const routes: Record<string, { relativePath: string }> = {}\n  for (let path of filePaths) {\n    let routeWithSlash = path\n    if (!path.startsWith(\"/\")) {\n      routeWithSlash = `/${path}`\n    }\n\n    if (path.endsWith(\"index.ts\") || path.endsWith(\"index.tsx\")) {\n      routes[`${routeWithSlash.replace(/\\/index\\.tsx*$/g, \"\")}`] = {\n        relativePath: path,\n      }\n    } else {\n      routes[`${routeWithSlash.replace(/\\.tsx*$/g, \"\")}`] = {\n        relativePath: path,\n      }\n    }\n  }\n\n  // Fix root route\n  if (routes[\"\"]) {\n    routes[\"/\"] = routes[\"\"]\n    delete routes[\"\"]\n  }\n\n  return routes\n}\n","import path from \"node:path\"\nimport { createRouteMapFromDirectory } from \"src/routes/create-route-map-from-directory.js\"\n\nconst alphabet = \"zyxwvutsrqponmlkjihgfedcba\"\n\nconst getRandomId = (length: number): string => {\n  let str = \"\"\n  let num = length\n  while (num--) str += alphabet[(Math.random() * alphabet.length) | 0]\n  return str\n}\n\ninterface ConstructManifestOptions {\n  routesDirectory: string\n  bundledAdapter?: \"wintercg-minimal\"\n}\n\nexport const constructManifest = async (options: ConstructManifestOptions) => {\n  const routeMap = await createRouteMapFromDirectory(options.routesDirectory)\n\n  const routes = Object.entries(routeMap).map(([route, { relativePath }]) => {\n    return {\n      route,\n      relativePath,\n      id: getRandomId(16),\n    }\n  })\n\n  return `\nimport {getRouteMatcher} from \"next-route-matcher\"\nimport { makeRequestAgainstEdgeSpec } from \"edgespec\"\n\n${routes\n  .map(\n    ({ id, relativePath }) =>\n      `import * as ${id} from \"${path.resolve(\n        path.join(options.routesDirectory, relativePath)\n      )}\"`\n  )\n  .join(\"\\n\")}\n\nconst routeMapWithHandlers = {\n  ${routes.map(({ id, route }) => `\"${route}\": ${id}.default`).join(\",\")}\n}\n\nconst edgeSpec = {\n  routeMatcher: getRouteMatcher(Object.keys(routeMapWithHandlers)),\n  routeMapWithHandlers,\n  makeRequest: async (req, options) => makeRequestAgainstEdgeSpec(edgeSpec, options)(req)\n}\n\n${\n  options.bundledAdapter === \"wintercg-minimal\"\n    ? `\nimport {addFetchListener} from \"edgespec/adapters/wintercg-minimal\"\naddFetchListener(edgeSpec)\n`\n    : \"export default edgeSpec\"\n}\n  `.trim()\n}\n","import esbuild from \"esbuild\"\nimport { constructManifest } from \"./construct-manifest.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\n\nexport const bundle = async (config: ResolvedEdgeSpecConfig) => {\n  let platformBundleOptions: Partial<esbuild.BuildOptions> = {}\n\n  if (config.platform === \"node\") {\n    platformBundleOptions = {\n      platform: \"node\",\n      packages: \"external\",\n    }\n  }\n\n  const result = await esbuild.build({\n    stdin: {\n      contents: await constructManifest(config),\n      resolveDir: config.routesDirectory,\n      loader: \"ts\",\n    },\n    bundle: true,\n    format: \"esm\",\n    write: false,\n    sourcemap: \"inline\",\n    ...platformBundleOptions,\n  })\n\n  return result.outputFiles![0].text\n}\n","import { Command, Option } from \"clipanion\"\nimport * as t from \"typanion\"\nimport { ResolvedEdgeSpecConfig, loadConfig } from \"src/config/utils.js\"\n\nexport abstract class BaseCommand extends Command {\n  rootDirectory = Option.String(\"--root\", {\n    description: \"Path to your project root\",\n  })\n\n  tsconfigPath = Option.String(\"--tsconfig\", {\n    description: \"Path to your tsconfig.json\",\n  })\n\n  routesDirectory = Option.String(\"--routes-directory\", {\n    description: \"Path to your routes directory\",\n  })\n\n  platform = Option.String(\"--platform\", {\n    description: \"The platform to bundle for\",\n    validator: t.isEnum([\"node\", \"wintercg-minimal\"]),\n  })\n\n  async execute() {\n    const overrides = {\n      tsconfigPath: this.tsconfigPath,\n      routesDirectory: this.routesDirectory,\n      rootDirectory: this.rootDirectory,\n      platform: this.platform as \"node\" | \"wintercg-minimal\",\n    }\n\n    return this.run(\n      await loadConfig(this.rootDirectory ?? process.cwd(), overrides)\n    )\n  }\n\n  abstract run(config: ResolvedEdgeSpecConfig): Promise<number | void>\n}\n","import path from \"node:path\"\nimport fs from \"node:fs/promises\"\nimport { bundleRequire } from \"bundle-require\"\nimport { EdgeSpecConfig } from \"src/config/config.js\"\nimport { SetRequired } from \"type-fest\"\n\nconst cloneObjectAndDeleteUndefinedKeys = <T extends Record<string, any>>(\n  obj: T\n) => {\n  const clone = { ...obj }\n  Object.keys(clone).forEach((key) => {\n    if (clone[key] === undefined) {\n      delete clone[key]\n    }\n  })\n  return clone\n}\n\nconst resolvePossibleRelativePath = (\n  possibleRelativePath: string,\n  configDirectory: string\n) => {\n  if (path.isAbsolute(possibleRelativePath)) {\n    return possibleRelativePath\n  }\n\n  return path.resolve(configDirectory, possibleRelativePath)\n}\n\nexport interface ResolvedEdgeSpecConfig extends EdgeSpecConfig {\n  rootDirectory: string\n  tsconfigPath: string\n  routesDirectory: string\n}\n\n/**\n * Resolves relative paths and sets defaults for any missing values.\n */\nexport const resolveConfig = (\n  config: SetRequired<EdgeSpecConfig, \"rootDirectory\">\n): ResolvedEdgeSpecConfig => {\n  const { rootDirectory, tsconfigPath, routesDirectory, ...rest } =\n    cloneObjectAndDeleteUndefinedKeys(config)\n\n  const resolvedRootDirectory = path.resolve(config.rootDirectory)\n\n  return {\n    rootDirectory: resolvedRootDirectory,\n    tsconfigPath: resolvePossibleRelativePath(\n      tsconfigPath ?? \"tsconfig.json\",\n      resolvedRootDirectory\n    ),\n    routesDirectory: resolvePossibleRelativePath(\n      routesDirectory ?? \"api\",\n      resolvedRootDirectory\n    ),\n    platform: \"wintercg-minimal\",\n    ...rest,\n  }\n}\n\nconst validateConfig = async (config: ResolvedEdgeSpecConfig) => {\n  try {\n    await fs.stat(config.routesDirectory)\n  } catch (error) {\n    throw new Error(`Could not find routes directory ${config.routesDirectory}`)\n  }\n\n  try {\n    await fs.stat(config.tsconfigPath)\n  } catch (error) {\n    throw new Error(`Could not find tsconfig.json at ${config.tsconfigPath}`)\n  }\n\n  return config\n}\n\nexport const loadConfig = async (\n  rootDirectory: string,\n  overrides?: Partial<EdgeSpecConfig>\n) => {\n  let loadedConfig: EdgeSpecConfig = {}\n\n  let configInRootExists = false\n  const potentialConfigPath = path.join(rootDirectory, \"edgespec.config.ts\")\n  try {\n    await fs.stat(potentialConfigPath)\n    configInRootExists = true\n  } catch {}\n\n  if (configInRootExists) {\n    const {\n      mod: { default: config },\n    } = await bundleRequire({\n      filepath: potentialConfigPath,\n    })\n\n    if (!config) {\n      throw new Error(\n        `Could not find a default export in ${potentialConfigPath}`\n      )\n    }\n\n    loadedConfig = config\n  }\n\n  return await validateConfig(\n    resolveConfig({\n      rootDirectory,\n      ...loadedConfig,\n      ...cloneObjectAndDeleteUndefinedKeys(overrides ?? {}),\n    })\n  )\n}\n","import { Command, Option } from \"clipanion\"\nimport { bundle } from \"src/bundle/bundle.js\"\nimport fs, { readFile } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { durationFormatter, sizeFormatter } from \"human-readable\"\nimport ora from \"ora\"\nimport { BaseCommand } from \"../base-command.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\n\nimport { BundleOptions } from \"src/bundle/types.js\"\nimport { join as joinPath } from \"node:path\"\n\nexport class BundleCommand extends BaseCommand {\n  static paths = [[`bundle`]]\n\n  static usage = Command.Usage({\n    description: \"Bundle your app for distribution\",\n    details: `\n      This command bundles your app for distribution. It outputs a zero-dependency file that can be run in a variety of environments.\n    `,\n    examples: [[`Bundle your app`, `$0 bundle --output bundled.js`]],\n  })\n\n  outputPath = Option.String(\"--output,-o\", {\n    description: \"The path to output the bundle\",\n    required: true,\n  })\n\n  async run(config: ResolvedEdgeSpecConfig) {\n    const spinner = ora(\"Bundling...\").start()\n    const buildStartedAt = performance.now()\n\n    const output = await bundle(config)\n\n    await fs.mkdir(path.dirname(this.outputPath), { recursive: true })\n    await fs.writeFile(this.outputPath, output)\n\n    spinner.stopAndPersist({\n      symbol: \"☃️\",\n      text: ` brr... bundled in ${durationFormatter({\n        allowMultiples: [\"m\", \"s\", \"ms\"],\n      })(performance.now() - buildStartedAt)} (${sizeFormatter()(\n        output.length\n      )})`,\n    })\n  }\n}\n","import {\n  buildToNodeHandler,\n  type RequestOptions,\n} from \"@edge-runtime/node-utils\"\nimport primitives from \"@edge-runtime/primitives\"\n\nexport interface TransformToNodeOptions extends RequestOptions {}\n\nconst dependencies = {\n  ...primitives,\n  Uint8Array,\n}\n\nexport const transformToNodeBuilder = (options: TransformToNodeOptions) =>\n  buildToNodeHandler(dependencies, options)\n","import { EdgeSpecRouteBundle } from \"./types/index.js\"\n\n/**\n * Loads a file created by `edgespec bundle` and returns the default export.\n * This is a very thin wrapper over `import()` that adds some types.\n */\nexport const loadBundle = async (\n  bundlePath: string\n): Promise<EdgeSpecRouteBundle> => {\n  const bundle = await import(bundlePath)\n  // If the file is imported as CJS, the default export is nested.\n  // Naming this with .mjs seems to break some on-the-fly transpiling tools downstream.\n  return bundle.default.default ?? bundle.default\n}\n","import fs from \"node:fs/promises\"\nimport { EdgeRuntime } from \"edge-runtime\"\nimport type { BirpcReturn } from \"birpc\"\nimport { makeRequestAgainstEdgeSpec } from \"src/types/edge-spec.js\"\nimport { Middleware } from \"src/middleware/index.js\"\nimport { loadBundle } from \"src/helpers.js\"\nimport type { BundlerRpcFunctions } from \"./types.js\"\n\nconst BUILD_ERROR_MESSAGE =\n  \"Could not build your app. Check your terminal for more information.\"\n\nexport class RequestHandlerController {\n  private cachedWinterCGRuntime?: EdgeRuntime\n  private cachedNodeHandler?: ReturnType<typeof makeRequestAgainstEdgeSpec>\n  private buildLastUpdatedAt = 0\n\n  constructor(\n    private bundlerRpc: BirpcReturn<BundlerRpcFunctions, any>,\n    private middleware: Middleware[]\n  ) {}\n\n  /**\n   * You **should not** cache the result of this function. Call it every time you want to use the runtime.\n   */\n  async getWinterCGRuntime() {\n    const { buildUpdatedAtMs, ...build } =\n      await this.bundlerRpc.waitForAvailableBuild()\n\n    if (\n      this.buildLastUpdatedAt === buildUpdatedAtMs &&\n      this.cachedWinterCGRuntime\n    ) {\n      return this.cachedWinterCGRuntime\n    }\n\n    if (build.type === \"failure\") {\n      this.cachedWinterCGRuntime = new EdgeRuntime({\n        initialCode: `\n          addEventListener(\"fetch\", (event) => {\n            event.respondWith(new Response(\"${BUILD_ERROR_MESSAGE}\", { status: 500 }))\n          })\n        `,\n      })\n    } else {\n      const contents = await fs.readFile(build.bundlePath, \"utf-8\")\n      const { middleware } = this\n      this.cachedWinterCGRuntime = new EdgeRuntime({\n        initialCode: contents,\n        extend(context) {\n          context._injectedEdgeSpecMiddleware = middleware\n          return context\n        },\n      })\n    }\n\n    this.buildLastUpdatedAt = buildUpdatedAtMs\n    return this.cachedWinterCGRuntime\n  }\n\n  /**\n   * You **should not** cache the result of this function. Call it every time you want to use the handler.\n   */\n  async getNodeHandler(): Promise<\n    ReturnType<typeof makeRequestAgainstEdgeSpec>\n  > {\n    const { buildUpdatedAtMs, ...build } =\n      await this.bundlerRpc.waitForAvailableBuild()\n\n    if (\n      this.buildLastUpdatedAt === buildUpdatedAtMs &&\n      this.cachedNodeHandler\n    ) {\n      return this.cachedNodeHandler\n    }\n\n    if (build.type === \"failure\") {\n      this.cachedNodeHandler = async () =>\n        new Response(BUILD_ERROR_MESSAGE, { status: 500 })\n    } else {\n      // We append the timestamp to the path to bust the cache\n      const edgeSpecModule = await loadBundle(\n        `file:${build.bundlePath}#${Date.now()}`\n      )\n\n      this.cachedNodeHandler = async (req) =>\n        edgeSpecModule.makeRequest(req, {\n          middleware: this.middleware,\n        })\n    }\n\n    this.buildLastUpdatedAt = buildUpdatedAtMs\n    return this.cachedNodeHandler\n  }\n}\n","import { once } from \"node:events\"\nimport { createServer } from \"node:http\"\nimport kleur from \"kleur\"\nimport { transformToNodeBuilder } from \"src/edge/transform-to-node.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\nimport { RequestHandlerController } from \"./request-handler-controller.js\"\nimport { Middleware } from \"src/middleware/index.js\"\nimport { createBirpc, type ChannelOptions } from \"birpc\"\nimport { BundlerRpcFunctions, HttpServerRpcFunctions } from \"./types.js\"\n\nexport interface StartHeadlessDevServerOptions {\n  port: number\n  config: ResolvedEdgeSpecConfig\n  rpcChannel: ChannelOptions\n  middleware?: Middleware[]\n  onListening?: (port: number) => void\n  onBuildStart?: HttpServerRpcFunctions[\"onBuildStart\"]\n  onBuildEnd?: HttpServerRpcFunctions[\"onBuildEnd\"]\n}\n\n/**\n * Start a headless EdgeSpec dev server. It receives a bundle from the headless dev bundler and serves it.\n *\n * This must be run within a native context (Node.js, Bun, or Deno).\n */\nexport const startHeadlessDevServer = async ({\n  port,\n  config,\n  rpcChannel,\n  middleware = [],\n  onListening,\n  onBuildStart,\n  onBuildEnd,\n}: StartHeadlessDevServerOptions) => {\n  const birpc = createBirpc<BundlerRpcFunctions, HttpServerRpcFunctions>(\n    {\n      onBuildStart: () => {\n        onBuildStart?.()\n      },\n      onBuildEnd: (result) => {\n        onBuildEnd?.(result)\n      },\n    },\n    rpcChannel\n  )\n  const controller = new RequestHandlerController(birpc, middleware)\n\n  const server = createServer(\n    transformToNodeBuilder({\n      defaultOrigin: `http://localhost:${port}`,\n    })(async (req) => {\n      try {\n        if (config.platform === \"wintercg-minimal\") {\n          const runtime = await controller.getWinterCGRuntime()\n          const response = await runtime.dispatchFetch(req.url, req)\n          await response.waitUntil()\n          return response\n        }\n\n        const nodeHandler = await controller.getNodeHandler()\n        return await nodeHandler(req)\n      } catch (error) {\n        if (error instanceof Error) {\n          process.stderr.write(\n            kleur.bgRed(\"\\nUnhandled exception:\\n\") +\n              (error.stack ?? error.message) +\n              \"\\n\"\n          )\n        } else {\n          process.stderr.write(\n            \"Unhandled exception:\\n\" +\n              ((error as any).stack\n                ? (error as any).stack\n                : JSON.stringify(error)) +\n              \"\\n\"\n          )\n        }\n\n        return new Response(\"Internal server error\", {\n          status: 500,\n        })\n      }\n    })\n  )\n\n  const listeningPromise = once(server, \"listening\")\n  server.listen(port)\n  await listeningPromise\n  onListening?.(port)\n\n  return {\n    server,\n    stop: async () => {\n      const closePromise = once(server, \"close\")\n      server.close()\n      await closePromise\n    },\n    getBuildResult: async () => {\n      return birpc.waitForAvailableBuild()\n    },\n  }\n}\n","import path from \"node:path\"\nimport fs from \"node:fs/promises\"\n\nexport const getTempPathInApp = async (rootDirectory: string) => {\n  const tempDir = path.resolve(path.join(rootDirectory, \".edgespec\"))\n  await fs.mkdir(tempDir, { recursive: true })\n  return tempDir\n}\n","import Watcher from \"watcher\"\nimport * as esbuild from \"esbuild\"\nimport fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { constructManifest } from \"./construct-manifest.js\"\nimport { BundleOptions } from \"./types.js\"\nimport { getTempPathInApp } from \"./get-temp-path-in-app.js\"\nimport { isGitIgnored } from \"globby\"\n\n/**\n * This does not directly provide a way to retrieve the contents or path of the bundle. You should provide a plugin in the `esbuild` option to do so.\n */\nexport const bundleAndWatch = async (options: BundleOptions) => {\n  const ignore = await isGitIgnored({\n    cwd: options.rootDirectory,\n  })\n\n  const watcher = new Watcher(options.rootDirectory, {\n    recursive: true,\n    ignoreInitial: true,\n    debounce: 0,\n    ignore: (filePath: string) => {\n      if (filePath.includes(\".edgespec\")) {\n        return true\n      }\n\n      // globby breaks when the path being tested is not within the current working directory (cwd/rootDirectory)\n      if (!path.relative(options.rootDirectory, filePath).startsWith(\"..\")) {\n        return ignore(filePath)\n      }\n\n      return true\n    },\n  })\n\n  const tempDir = await getTempPathInApp(options.rootDirectory)\n  const manifestPath = path.join(tempDir, \"dev-manifest.ts\")\n\n  const rebuildWithErrorHandling = async () => {\n    try {\n      await ctx?.rebuild()\n    } catch {\n      // Error is ignored here because it's assumed the caller handles it in the build.onEnd() callback\n    }\n  }\n\n  const invalidateManifest = async () => {\n    await fs.writeFile(manifestPath, await constructManifest(options), \"utf-8\")\n    await rebuildWithErrorHandling()\n  }\n\n  const ctx = await esbuild.context({\n    entryPoints: [manifestPath],\n    bundle: true,\n    format: \"esm\",\n    write: false,\n    sourcemap: \"inline\",\n    logLevel: \"silent\",\n    ...options.esbuild,\n  })\n\n  await invalidateManifest()\n\n  watcher.on(\"change\", async () => {\n    await rebuildWithErrorHandling()\n  })\n\n  watcher.on(\"add\", async () => {\n    await invalidateManifest()\n  })\n\n  watcher.on(\"unlink\", async () => {\n    await invalidateManifest()\n  })\n\n  watcher.on(\"unlinkDir\", async () => {\n    await invalidateManifest()\n  })\n\n  return {\n    stop: async () => {\n      watcher.close()\n      await ctx.dispose()\n    },\n  }\n}\n","import EventEmitter from \"node:events\"\n\n/**\n * This is effectively a Promise that can be resolved multiple times in different scopes without messily holding references to the resolve function.\n */\nexport class AsyncWorkTracker<Result> extends EventEmitter {\n  private state: \"idle\" | \"pending\" | \"resolved\" = \"idle\"\n  private lastResult: Result | undefined\n\n  /**\n   * If work is still pending, this waits for the next work result. If work is already resolved, it returns the last result.\n   */\n  async waitForResult(): Promise<Result> {\n    if (this.state === \"pending\" || !this.lastResult) {\n      return new Promise<Result>((resolve) => {\n        this.once(\"result\", resolve)\n      })\n    }\n\n    if (!this.lastResult) {\n      throw new Error(\"No last result (this should never happen)\")\n    }\n\n    return this.lastResult\n  }\n\n  /**\n   * Call this when you start async work.\n   */\n  beginAsyncWork() {\n    this.state = \"pending\"\n  }\n\n  /**\n   * Call this when the async work is done with the result.\n   */\n  finishAsyncWork(result: Result) {\n    this.state = \"resolved\"\n    this.emit(\"result\", result)\n    this.lastResult = result\n  }\n}\n","import path from \"path\"\nimport { getTempPathInApp } from \"src/bundle/get-temp-path-in-app.js\"\nimport { bundleAndWatch } from \"src/bundle/watch.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\nimport { ChannelOptions, createBirpcGroup } from \"birpc\"\nimport {\n  HttpServerRpcFunctions,\n  type BundlerRpcFunctions,\n  BundlerBuildResult,\n} from \"./types.js\"\nimport { formatMessages } from \"esbuild\"\nimport { AsyncWorkTracker } from \"src/lib/async-work-tracker.js\"\n\nexport interface StartHeadlessDevBundlerOptions {\n  config: ResolvedEdgeSpecConfig\n  initialRpcChannels?: ChannelOptions[]\n}\n\n/**\n * Start a headless EdgeSpec dev bundler. It will continuously watch your code and rebuild on changes.\n * For this to be useful, you'll probably want to also start a headless dev server.\n * This must be run within a native context (Node.js, Bun, or Deno).\n */\nexport const startHeadlessDevBundler = async ({\n  config,\n  initialRpcChannels,\n}: StartHeadlessDevBundlerOptions) => {\n  const tempDir = await getTempPathInApp(config.rootDirectory)\n  const devBundlePath = path.join(tempDir, \"dev-bundle.js\")\n\n  const buildTracker = new AsyncWorkTracker<BundlerBuildResult>()\n\n  const rpcFunctions: BundlerRpcFunctions = {\n    async waitForAvailableBuild() {\n      return buildTracker.waitForResult()\n    },\n  }\n\n  const birpc = createBirpcGroup<HttpServerRpcFunctions, BundlerRpcFunctions>(\n    rpcFunctions,\n    initialRpcChannels ?? [],\n    { eventNames: [\"onBuildStart\", \"onBuildEnd\"] }\n  )\n\n  const { stop } = await bundleAndWatch({\n    rootDirectory: config.rootDirectory,\n    routesDirectory: config.routesDirectory,\n    bundledAdapter:\n      config.platform === \"wintercg-minimal\" ? \"wintercg-minimal\" : undefined,\n    esbuild: {\n      platform: config.platform === \"wintercg-minimal\" ? \"browser\" : \"node\",\n      packages: config.platform === \"node\" ? \"external\" : undefined,\n      format: config.platform === \"wintercg-minimal\" ? \"cjs\" : \"esm\",\n      outfile: devBundlePath,\n      write: true,\n      plugins: [\n        {\n          name: \"watch\",\n          setup(build) {\n            build.onStart(async () => {\n              buildTracker.beginAsyncWork()\n              await birpc.broadcast.onBuildStart()\n            })\n\n            build.onEnd(async (result) => {\n              let build: BundlerBuildResult\n              if (result.errors.length === 0) {\n                build = {\n                  type: \"success\",\n                  bundlePath: devBundlePath,\n                  buildUpdatedAtMs: Date.now(),\n                }\n              } else {\n                build = {\n                  type: \"failure\",\n                  errorMessage: (\n                    await formatMessages(result.errors, {\n                      kind: \"error\",\n                    })\n                  ).join(\"\\n\"),\n                  buildUpdatedAtMs: Date.now(),\n                }\n              }\n\n              buildTracker.finishAsyncWork(build)\n              await birpc.broadcast.onBuildEnd(build)\n            })\n          },\n        },\n      ],\n    },\n  })\n\n  return {\n    stop,\n    birpc,\n  }\n}\n","import { MessageChannel } from \"node:worker_threads\"\nimport { AddressInfo } from \"node:net\"\nimport type { ChannelOptions } from \"birpc\"\nimport type { EdgeSpecConfig } from \"src/config/config.js\"\nimport { loadConfig } from \"src/config/utils.js\"\nimport {\n  StartHeadlessDevServerOptions,\n  startHeadlessDevServer,\n} from \"./headless/start-server.js\"\nimport { startHeadlessDevBundler } from \"./headless/start-bundler.js\"\n\nexport type StartDevServerOptions = {\n  rootDirectory?: string\n  config?: EdgeSpecConfig\n  port?: number\n} & Pick<\n  StartHeadlessDevServerOptions,\n  \"middleware\" | \"onListening\" | \"onBuildStart\" | \"onBuildEnd\"\n>\n\n/**\n * Start an EdgeSpec dev server. It will continuously watch your code and rebuild on changes. (This is the same function called by `edgespec dev`.)\n *\n * This must be run within a native context (Node.js, Bun, or Deno).\n */\nexport const startDevServer = async (options: StartDevServerOptions) => {\n  const config = await loadConfig(\n    options.rootDirectory ?? process.cwd(),\n    options.config\n  )\n\n  const messageChannel = new MessageChannel()\n\n  const httpServerRpcChannel: ChannelOptions = {\n    post: (data) => messageChannel.port2.postMessage(data),\n    on: (data) => messageChannel.port2.on(\"message\", data),\n  }\n\n  const port = options.port ?? 3000\n  const headlessServer = await startHeadlessDevServer({\n    port,\n    config,\n    rpcChannel: httpServerRpcChannel,\n    middleware: options.middleware,\n    onListening: options.onListening,\n    onBuildStart: options.onBuildStart,\n    onBuildEnd: options.onBuildEnd,\n  })\n\n  const bundlerRpcChannel: ChannelOptions = {\n    post: (data) => messageChannel.port1.postMessage(data),\n    on: (data) => messageChannel.port1.on(\"message\", data),\n  }\n\n  const headlessBundler = await startHeadlessDevBundler({\n    config,\n    initialRpcChannels: [bundlerRpcChannel],\n  })\n\n  return {\n    port: (headlessServer.server.address() as AddressInfo).port.toString(),\n    stop: async () => {\n      await Promise.all([headlessServer.stop(), headlessBundler.stop()])\n      messageChannel.port1.close()\n      messageChannel.port2.close()\n    },\n  }\n}\n","import { Command, Option } from \"clipanion\"\nimport { durationFormatter } from \"human-readable\"\nimport ora from \"ora\"\nimport { startDevServer } from \"src/dev/dev-server.js\"\nimport { BaseCommand } from \"../base-command.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\n\nexport class DevCommand extends BaseCommand {\n  static paths = [[`dev`]]\n\n  static usage = Command.Usage({\n    description: `Start a development server. It watches your source code and will automatically rebuild upon changes.`,\n  })\n\n  port = Option.String(\"--port,-p\", \"3000\", {\n    description: \"The port to serve your app on\",\n  })\n\n  // todo: better syntax for this flag, seems to need --no-emulate-wintercg\n  emulateWinterCG = Option.Boolean(\"--emulate-wintercg\", true, {\n    description:\n      \"Emulate the WinterCG runtime. When true, native APIs are unavailable.\",\n  })\n\n  async run(config: ResolvedEdgeSpecConfig) {\n    const configWithOverrides = {\n      emulateWinterCG: this.emulateWinterCG,\n      ...config,\n    }\n\n    const listenSpinner = ora({\n      text: \"Starting server...\",\n      hideCursor: false,\n      discardStdin: false,\n    }).start()\n\n    let buildStartedAt: number\n    const spinner = ora({\n      hideCursor: false,\n      discardStdin: false,\n      text: \"Building...\",\n    }).start()\n\n    const timeFormatter = durationFormatter({\n      allowMultiples: [\"m\", \"s\", \"ms\"],\n    })\n\n    // Prevents the build spinner from displaying before the listening message\n    // No spinner collision plz! 🙈\n    let resolveOnListeningPromise: () => void\n    const listeningPromise = new Promise<void>((resolve) => {\n      resolveOnListeningPromise = resolve\n    })\n\n    await startDevServer({\n      port: parseInt(this.port, 10),\n      config: configWithOverrides,\n      onListening(port) {\n        listenSpinner.stopAndPersist({\n          symbol: \"☃️\",\n          text: ` listening on port ${port}: http://localhost:${port}\\n`,\n        })\n\n        resolveOnListeningPromise()\n      },\n      async onBuildStart() {\n        buildStartedAt = performance.now()\n        await listeningPromise\n        spinner.start(\"Building...\")\n      },\n      async onBuildEnd(build) {\n        const durationMs = performance.now() - buildStartedAt\n        await listeningPromise\n\n        if (build.type === \"success\") {\n          spinner.succeed(`Built in ${timeFormatter(durationMs)}`)\n        } else {\n          spinner.fail(`Build failed.\\n${build.errorMessage}`)\n        }\n      },\n    })\n  }\n}\n","import path from \"node:path\"\nimport { createRouteMapFromDirectory } from \"src/routes/create-route-map-from-directory.js\"\nimport {\n  ExportedDeclarations,\n  Project,\n  Symbol,\n  Type,\n  TypeFormatFlags,\n  ts,\n} from \"ts-morph\"\n\nconst getZodTypeOfSymbol = (project: Project, symbol: Symbol | undefined) => {\n  if (!symbol) return undefined\n\n  const outerType = project\n    .getTypeChecker()\n    .getTypeOfSymbolAtLocation(symbol, symbol.getValueDeclarationOrThrow())\n\n  const innerType = outerType.getProperty(\"_input\")\n  if (!innerType) {\n    throw new Error(`${symbol.getName()} must be a zod schema`)\n  }\n\n  return project\n    .getTypeChecker()\n    .getTypeOfSymbolAtLocation(\n      innerType,\n      innerType.getValueDeclarationOrThrow()\n    )\n}\n\ntype ExtractRouteSpecsFromASTOptions = {\n  tsConfigFilePath: string\n  routesDirectory: string\n}\n\nexport const extractRouteSpecsFromAST = async ({\n  tsConfigFilePath,\n  routesDirectory,\n}: ExtractRouteSpecsFromASTOptions) => {\n  const project = new Project({\n    compilerOptions: {\n      declaration: true,\n      noEmit: false,\n      emitDeclarationOnly: true,\n    },\n    tsConfigFilePath,\n  })\n\n  const diagnostics = project.getPreEmitDiagnostics()\n  if (diagnostics.length > 0) {\n    console.error(project.formatDiagnosticsWithColorAndContext(diagnostics))\n    throw new Error(\"Code generation failed (existing type errors)\")\n  }\n\n  let firstValidRouteDefaultExport: ExportedDeclarations\n\n  const routeMap = await createRouteMapFromDirectory(routesDirectory)\n  const routes = Object.entries(routeMap).map(([route, { relativePath }]) => {\n    const source = project.getSourceFileOrThrow(\n      path.join(routesDirectory, relativePath)\n    )\n\n    const defaultExportDeclaration = source\n      .getExportedDeclarations()\n      .get(\"default\")?.[0]\n    if (!defaultExportDeclaration) {\n      console.warn(`No default export found for ${route}`)\n      return\n    }\n\n    const callExpression = defaultExportDeclaration?.getChildrenOfKind(\n      ts.SyntaxKind.CallExpression\n    )[0]\n    if (!callExpression) {\n      return\n    }\n\n    const callSignature = project\n      .getTypeChecker()\n      .getResolvedSignature(callExpression)\n    if (!callSignature) {\n      return\n    }\n\n    const firstParameter = callSignature?.getParameters()?.[0]\n    if (!firstParameter) {\n      return\n    }\n    const parameterType = project\n      .getTypeChecker()\n      .getTypeOfSymbolAtLocation(\n        firstParameter,\n        firstParameter.getValueDeclarationOrThrow()\n      )\n\n    const httpMethodsSymbol = parameterType.getProperty(\"methods\")\n    if (!httpMethodsSymbol) {\n      return\n    }\n\n    const httpMethodLiterals = httpMethodsSymbol\n      .getValueDeclarationOrThrow()\n      .getDescendantsOfKind(ts.SyntaxKind.StringLiteral)\n      .map((d) => d.getLiteralText())\n\n    if (!firstValidRouteDefaultExport) {\n      firstValidRouteDefaultExport = defaultExportDeclaration\n    }\n\n    return {\n      route,\n      httpMethods: httpMethodLiterals,\n      jsonResponseZodOutputType: getZodTypeOfSymbol(\n        project,\n        parameterType.getProperty(\"jsonResponse\")\n      ),\n      jsonBodyZodInputType: getZodTypeOfSymbol(\n        project,\n        parameterType.getProperty(\"jsonBody\")\n      ),\n      commonParamsZodInputType: getZodTypeOfSymbol(\n        project,\n        parameterType.getProperty(\"commonParams\")\n      ),\n      queryParamsZodInputType: getZodTypeOfSymbol(\n        project,\n        parameterType.getProperty(\"queryParams\")\n      ),\n      urlEncodedFormDataZodInputType: getZodTypeOfSymbol(\n        project,\n        parameterType.getProperty(\"urlEncodedFormData\")\n      ),\n    }\n  })\n\n  if (!firstValidRouteDefaultExport!) {\n    throw new Error(\n      \"Code generation failed (could not find a valid route, you must have at least one route in your project to run code generation).\"\n    )\n  }\n\n  const withRouteSpecIdentifier = firstValidRouteDefaultExport\n    .getChildrenOfKind(ts.SyntaxKind.CallExpression)[0]\n    .getChildrenOfKind(ts.SyntaxKind.Identifier)[0]\n\n  const createWithEdgeSpecCall = withRouteSpecIdentifier\n    .getDefinitionNodes()[0]\n    .getChildrenOfKind(ts.SyntaxKind.CallExpression)[0]\n\n  const createWithEdgeSpecCallSignature = project\n    .getTypeChecker()\n    .getResolvedSignature(createWithEdgeSpecCall)\n  if (!createWithEdgeSpecCallSignature) {\n    throw new Error(\"foo\")\n  }\n\n  const globalRouteSpec = createWithEdgeSpecCallSignature?.getParameters()?.[0]\n  if (!globalRouteSpec) {\n    throw new Error(\"foo\")\n  }\n  const globalRouteSpecType = project\n    .getTypeChecker()\n    .getTypeOfSymbolAtLocation(\n      globalRouteSpec,\n      globalRouteSpec.getValueDeclarationOrThrow()\n    )\n\n  const filteredRoutes = routes.filter(Boolean) as Exclude<\n    (typeof routes)[number],\n    undefined\n  >[]\n\n  const renderType = <TType extends ts.Type>(type: Type<TType>) => {\n    return project\n      .getTypeChecker()\n      .compilerObject.typeToString(\n        type.compilerType,\n        undefined,\n        TypeFormatFlags.NoTruncation\n      )\n  }\n\n  return {\n    routes: filteredRoutes,\n    globalRouteSpecType,\n    renderType,\n    project,\n  }\n}\n","import { Option } from \"clipanion\"\nimport fs from \"node:fs/promises\"\nimport { BaseCommand } from \"src/cli/base-command.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\nimport { extractRouteSpecsFromAST } from \"src/lib/codegen/extract-route-specs-from-ast.js\"\n\nexport class CodeGenRouteTypes extends BaseCommand {\n  static paths = [[`codegen`, `route-types`]]\n\n  outputPath = Option.String(\"--output,-o\", {\n    description: \"Path to the output file\",\n    required: true,\n  })\n\n  async run(config: ResolvedEdgeSpecConfig) {\n    const { project, routes, renderType } = await extractRouteSpecsFromAST({\n      tsConfigFilePath: config.tsconfigPath,\n      routesDirectory: config.routesDirectory,\n    })\n\n    project.createSourceFile(\n      \"manifest.ts\",\n      `\n      import {z} from \"zod\"\n\n      export type Routes = {\n${routes\n  .map(\n    ({\n      route,\n      httpMethods,\n      jsonResponseZodOutputType,\n      jsonBodyZodInputType,\n      commonParamsZodInputType,\n      queryParamsZodInputType,\n      urlEncodedFormDataZodInputType,\n    }) => {\n      return `  \"${route}\": {\n    route: \"${route}\"\n    method: ${httpMethods.map((m) => `\"${m}\"`).join(\" | \")}\n    ${\n      jsonResponseZodOutputType\n        ? `jsonResponse: ${renderType(jsonResponseZodOutputType)}`\n        : \"\"\n    }\n    ${\n      jsonBodyZodInputType\n        ? `jsonBody: ${renderType(jsonBodyZodInputType)}`\n        : \"\"\n    }\n    ${\n      commonParamsZodInputType\n        ? `commonParams: ${renderType(commonParamsZodInputType)}`\n        : \"\"\n    }\n    ${\n      queryParamsZodInputType\n        ? `queryParams: ${renderType(queryParamsZodInputType)}`\n        : \"\"\n    }\n    ${\n      urlEncodedFormDataZodInputType\n        ? `urlEncodedFormData: ${renderType(urlEncodedFormDataZodInputType)}`\n        : \"\"\n    }\n  }`\n    }\n  )\n  .join(\"\\n\")}\n  }\n\n  type ExtractOrUnknown<T, Key extends string> = Key extends keyof T ? T[Key] : unknown;\n\n  export type RouteResponse<Path extends keyof Routes> = ExtractOrUnknown<Routes[Path], \"jsonResponse\">\n  export type RouteRequestBody<Path extends keyof Routes> = ExtractOrUnknown<Routes[Path], \"jsonBody\"> & ExtractOrUnknown<Routes[Path], \"commonParams\">\n  export type RouteRequestParams<Path extends keyof Routes> = ExtractOrUnknown<Routes[Path], \"queryParams\"> & ExtractOrUnknown<Routes[Path], \"commonParams\">\n  `\n    )\n\n    const result = project.emitToMemory({ emitOnlyDtsFiles: true })\n    await fs.writeFile(\n      this.outputPath,\n      result.getFiles().find((f) => f.filePath.includes(\"/manifest.d.ts\"))!.text\n    )\n  }\n}\n","import * as yaml from 'yaml';\nimport * as oa from '../model/openapi31';\n\n// Internal DSL for building an OpenAPI 3.1.x contract\n// using a fluent interface\n\nexport class OpenApiBuilder {\n    rootDoc: oa.OpenAPIObject;\n\n    static create(doc?: oa.OpenAPIObject): OpenApiBuilder {\n        return new OpenApiBuilder(doc);\n    }\n\n    constructor(doc?: oa.OpenAPIObject) {\n        this.rootDoc = doc || {\n            openapi: '3.1.0',\n            info: {\n                title: 'app',\n                version: 'version'\n            },\n            paths: {},\n            components: {\n                schemas: {},\n                responses: {},\n                parameters: {},\n                examples: {},\n                requestBodies: {},\n                headers: {},\n                securitySchemes: {},\n                links: {},\n                callbacks: {}\n            },\n            tags: [],\n            servers: []\n        };\n    }\n\n    getSpec(): oa.OpenAPIObject {\n        return this.rootDoc;\n    }\n\n    getSpecAsJson(\n        replacer?: (key: string, value: unknown) => unknown,\n        space?: string | number\n    ): string {\n        return JSON.stringify(this.rootDoc, replacer, space);\n    }\n    getSpecAsYaml(): string {\n        return yaml.stringify(this.rootDoc);\n    }\n\n    private static isValidOpenApiVersion(v: string): boolean {\n        v = v || '';\n        const match = /(\\d+)\\.(\\d+).(\\d+)/.exec(v);\n        if (match) {\n            const major = parseInt(match[1], 10);\n            if (major >= 3) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    addOpenApiVersion(openApiVersion: string): OpenApiBuilder {\n        if (!OpenApiBuilder.isValidOpenApiVersion(openApiVersion)) {\n            throw new Error(\n                'Invalid OpenApi version: ' + openApiVersion + '. Follow convention: 3.x.y'\n            );\n        }\n        this.rootDoc.openapi = openApiVersion;\n        return this;\n    }\n    addInfo(info: oa.InfoObject): OpenApiBuilder {\n        this.rootDoc.info = info;\n        return this;\n    }\n    addContact(contact: oa.ContactObject): OpenApiBuilder {\n        this.rootDoc.info.contact = contact;\n        return this;\n    }\n    addLicense(license: oa.LicenseObject): OpenApiBuilder {\n        this.rootDoc.info.license = license;\n        return this;\n    }\n    addTitle(title: string): OpenApiBuilder {\n        this.rootDoc.info.title = title;\n        return this;\n    }\n    addDescription(description: string): OpenApiBuilder {\n        this.rootDoc.info.description = description;\n        return this;\n    }\n    addTermsOfService(termsOfService: string): OpenApiBuilder {\n        this.rootDoc.info.termsOfService = termsOfService;\n        return this;\n    }\n    addVersion(version: string): OpenApiBuilder {\n        this.rootDoc.info.version = version;\n        return this;\n    }\n    addPath(path: string, pathItem: oa.PathItemObject): OpenApiBuilder {\n        this.rootDoc.paths = this.rootDoc.paths || {};\n        this.rootDoc.paths[path] = { ...(this.rootDoc.paths[path] || {}), ...pathItem };\n        return this;\n    }\n    addSchema(name: string, schema: oa.SchemaObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.schemas = this.rootDoc.components.schemas || {};\n        this.rootDoc.components.schemas[name] = schema;\n        return this;\n    }\n    addResponse(name: string, response: oa.ResponseObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.responses = this.rootDoc.components.responses || {};\n        this.rootDoc.components.responses[name] = response;\n        return this;\n    }\n    addParameter(name: string, parameter: oa.ParameterObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.parameters = this.rootDoc.components.parameters || {};\n        this.rootDoc.components.parameters[name] = parameter;\n        return this;\n    }\n    addExample(name: string, example: oa.ExampleObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.examples = this.rootDoc.components.examples || {};\n        this.rootDoc.components.examples[name] = example;\n        return this;\n    }\n    addRequestBody(\n        name: string,\n        reqBody: oa.RequestBodyObject | oa.ReferenceObject\n    ): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.requestBodies = this.rootDoc.components.requestBodies || {};\n        this.rootDoc.components.requestBodies[name] = reqBody;\n        return this;\n    }\n    addHeader(name: string, header: oa.HeaderObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.headers = this.rootDoc.components.headers || {};\n        this.rootDoc.components.headers[name] = header;\n        return this;\n    }\n    addSecurityScheme(\n        name: string,\n        secScheme: oa.SecuritySchemeObject | oa.ReferenceObject\n    ): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.securitySchemes = this.rootDoc.components.securitySchemes || {};\n        this.rootDoc.components.securitySchemes[name] = secScheme;\n        return this;\n    }\n    addLink(name: string, link: oa.LinkObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.links = this.rootDoc.components.links || {};\n        this.rootDoc.components.links[name] = link;\n        return this;\n    }\n    addCallback(name: string, callback: oa.CallbackObject | oa.ReferenceObject): OpenApiBuilder {\n        this.rootDoc.components = this.rootDoc.components || {};\n        this.rootDoc.components.callbacks = this.rootDoc.components.callbacks || {};\n        this.rootDoc.components.callbacks[name] = callback;\n        return this;\n    }\n    addServer(server: oa.ServerObject): OpenApiBuilder {\n        this.rootDoc.servers = this.rootDoc.servers || [];\n        this.rootDoc.servers.push(server);\n        return this;\n    }\n    addTag(tag: oa.TagObject): OpenApiBuilder {\n        this.rootDoc.tags = this.rootDoc.tags || [];\n        this.rootDoc.tags.push(tag);\n        return this;\n    }\n    addExternalDocs(extDoc: oa.ExternalDocumentationObject): OpenApiBuilder {\n        this.rootDoc.externalDocs = extDoc;\n        return this;\n    }\n    addWebhook(webhook: string, webhookItem: oa.PathItemObject): OpenApiBuilder {\n        this.rootDoc.webhooks ??= {};\n        this.rootDoc.webhooks[webhook] = webhookItem;\n        return this;\n    }\n}\n","import { O as s, g as t, i, a as o } from \"./oas31-VKgPEg7O.mjs\";\nimport { S as c, a as p, c as g, g as m } from \"./server-PxzBtvrK.mjs\";\nimport \"yaml\";\nexport {\n  s as OpenApiBuilder,\n  c as Server,\n  p as ServerVariable,\n  g as addExtension,\n  m as getExtension,\n  t as getPath,\n  i as isReferenceObject,\n  o as isSchemaObject\n};\n//# sourceMappingURL=oas31.mjs.map\n","import { Option } from \"clipanion\"\nimport { randomUUID } from \"node:crypto\"\nimport fs from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport {\n  OpenApiBuilder,\n  OperationObject,\n  ParameterObject,\n  PathItemObject,\n} from \"openapi3-ts/oas31\"\nimport { bundle } from \"src/bundle/bundle.js\"\nimport { BaseCommand } from \"src/cli/base-command.js\"\nimport { ResolvedEdgeSpecConfig } from \"src/config/utils.js\"\nimport { loadBundle } from \"src/helpers.js\"\nimport { generateSchema } from \"@anatine/zod-openapi\"\nimport { ZodObject, ZodTypeAny } from \"zod\"\nimport camelcase from \"camelcase\"\n\nconst replaceFirstCharToLowercase = (str: string) => {\n  if (str.length === 0) {\n    return str\n  }\n\n  const firstChar = str.charAt(0).toLowerCase()\n  return firstChar + str.slice(1)\n}\n\nconst transformPathToOperationId = (path: string): string => {\n  const parts = path\n    .replace(/-/g, \"_\")\n    .split(\"/\")\n    .filter((part) => part !== \"\")\n  const transformedParts = parts.map((part) => {\n    if (part.startsWith(\"[\") && part.endsWith(\"]\")) {\n      // Convert [param] to ByParam\n      const serviceName = part.slice(1, -1)\n      const words = serviceName.split(\"_\")\n      const capitalizedWords = words.map(\n        (word) => word.charAt(0).toUpperCase() + word.slice(1)\n      )\n      return `By${capitalizedWords.join(\"\")}`\n    } else {\n      // Convert api_path to ApiPath\n      const words = part.split(\"_\")\n      const capitalizedWords = words.map(\n        (word) => word.charAt(0).toUpperCase() + word.slice(1)\n      )\n      return capitalizedWords.join(\"\")\n    }\n  })\n\n  return replaceFirstCharToLowercase(transformedParts.join(\"\"))\n}\n\nconst HTTP_METHODS_WITHOUT_BODY = [\"get\", \"head\"]\n\nexport class CodeGenOpenAPI extends BaseCommand {\n  static paths = [[`codegen`, `openapi`]]\n\n  outputPath = Option.String(\"--output,-o\", {\n    description: \"Path to the output file\",\n    required: true,\n  })\n\n  async run(config: ResolvedEdgeSpecConfig) {\n    const tempBundlePath = path.join(os.tmpdir(), `${randomUUID()}.mjs`)\n    await fs.writeFile(tempBundlePath, await bundle(config))\n    const runtimeBundle = await loadBundle(tempBundlePath)\n\n    const globalRouteSpec = Object.values(\n      runtimeBundle.routeMapWithHandlers\n    ).find((r) => Boolean(r._globalSpec))?._globalSpec\n    if (!globalRouteSpec) {\n      throw new Error(\n        \"You must have at least one route that uses the wrapper provided by createWithEdgeSpec().\"\n      )\n    }\n\n    const builder = new OpenApiBuilder({\n      openapi: \"3.0.0\",\n      info: {\n        title: globalRouteSpec.openapi?.apiName ?? \"EdgeSpec API\",\n        version: \"1.0.0\", // todo\n      },\n      ...(globalRouteSpec.openapi?.productionServerUrl\n        ? {\n            servers: [\n              {\n                url: globalRouteSpec.openapi.productionServerUrl,\n              },\n            ],\n          }\n        : {}),\n    })\n\n    for (const [path, { _routeSpec }] of Object.entries(\n      runtimeBundle.routeMapWithHandlers\n    )) {\n      if (!_routeSpec) {\n        continue\n      }\n\n      const pathItemObject: PathItemObject = {}\n\n      for (const method of _routeSpec.methods) {\n        let { commonParams } = _routeSpec\n        const areCommonParamsRequiredInQuery =\n          HTTP_METHODS_WITHOUT_BODY.includes(method.toLowerCase())\n        if (!areCommonParamsRequiredInQuery) {\n          if (commonParams?._def.typeName === \"ZodObject\") {\n            commonParams = (commonParams as ZodObject<any>).partial()\n          } else {\n            commonParams = commonParams?.optional()\n          }\n        }\n\n        let requestJsonBody: ZodTypeAny | null = null\n        if (\n          _routeSpec.jsonBody &&\n          !HTTP_METHODS_WITHOUT_BODY.includes(method.toLowerCase())\n        ) {\n          requestJsonBody = _routeSpec.jsonBody\n        }\n\n        if (commonParams) {\n          requestJsonBody = requestJsonBody\n            ? requestJsonBody.and(commonParams)\n            : commonParams\n        }\n\n        let requestQuery: ZodTypeAny | null = null\n        if (_routeSpec.queryParams) {\n          requestQuery = _routeSpec.queryParams\n        }\n\n        if (commonParams) {\n          requestQuery = requestQuery\n            ? requestQuery.and(commonParams)\n            : commonParams\n        }\n\n        const operation: OperationObject = {\n          summary: path,\n          responses: {\n            200: {\n              description: \"OK\",\n            },\n            400: {\n              description: \"Bad Request\",\n            },\n            // todo: omit when auth: \"none\"\n            401: {\n              description: \"Unauthorized\",\n            },\n          },\n        }\n\n        if (requestJsonBody) {\n          operation.requestBody = {\n            content: {\n              \"application/json\": {\n                schema: generateSchema(requestJsonBody),\n              },\n            },\n          }\n        }\n\n        if (requestQuery) {\n          const schema = generateSchema(requestQuery)\n          if (schema.properties) {\n            const parameters: ParameterObject[] = Object.keys(\n              schema.properties\n            ).map((name) => ({\n              name,\n              in: \"query\",\n              schema: schema.properties?.[name],\n              required: schema.required?.includes(name),\n            }))\n\n            operation.parameters = parameters\n          }\n        }\n\n        if (_routeSpec.jsonResponse) {\n          // todo: responses other than 200\n          operation.responses[200].content = {\n            \"application/json\": {\n              schema: generateSchema(_routeSpec.jsonResponse),\n            },\n          }\n        }\n\n        pathItemObject[method.toLowerCase() as keyof PathItemObject] = {\n          ...operation,\n          operationId: `${transformPathToOperationId(path)}${camelcase(method, {\n            pascalCase: true,\n          })}`,\n        }\n      }\n\n      // Handle routes with multiple methods\n      builder.addPath(path, pathItemObject)\n    }\n\n    await fs.writeFile(this.outputPath, builder.getSpecAsJson(undefined, 2))\n  }\n}\n","#!/usr/bin/env node\nimport { runExit } from \"clipanion\"\nimport { BundleCommand } from \"./commands/bundle.js\"\nimport { DevCommand } from \"./commands/dev.js\"\nimport { CodeGenRouteTypes } from \"./commands/codegen/route-types.js\"\nimport { CodeGenOpenAPI } from \"./commands/codegen/openapi.js\"\n\nrunExit(\n  {\n    binaryLabel: \"EdgeSpec\",\n    binaryName: \"edgespec\",\n  },\n  [BundleCommand, DevCommand, CodeGenRouteTypes, CodeGenOpenAPI]\n)\n"]}