dev-sesssion 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/kind-of@6.0.3/node_modules/kind-of/index.js","../../../node_modules/.pnpm/is-extendable@0.1.1/node_modules/is-extendable/index.js","../../../node_modules/.pnpm/extend-shallow@2.0.1/node_modules/extend-shallow/index.js","../../../node_modules/.pnpm/section-matter@1.0.0/node_modules/section-matter/index.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/common.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/exception.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/snippet.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/str.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/seq.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/map.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/failsafe.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/null.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/bool.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/int.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/float.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/json.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/core.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/timestamp.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/merge.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/binary.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/omap.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/pairs.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/set.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/default.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/loader.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/dumper.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/index.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/engines.js","../../../node_modules/.pnpm/strip-bom-string@1.0.0/node_modules/strip-bom-string/index.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/utils.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/defaults.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/engine.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/stringify.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/excerpt.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/to-file.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/lib/parse.js","../../../node_modules/.pnpm/@11ty+gray-matter@2.0.1/node_modules/@11ty/gray-matter/index.js","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/signals.ts","../../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/index.ts","../../../node_modules/.pnpm/write-file-atomic@7.0.1/node_modules/write-file-atomic/lib/index.js","../../security/src/errors/cli-error.ts","../../security/src/errors/parse-error.ts","../../security/src/errors/security-error.ts","../../security/src/errors/security-threat.ts","../../security/src/scanners/secret-scanner.ts","../../security/src/guards/write-guard.ts","../../security/src/parsers/frontmatter-parser.ts","../../security/src/sanitizers/content-sanitizer.ts","../../security/src/validators/path-validator.ts","../../security/src/writers/atomic-writer.ts","../../security/src/index.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ar.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/az.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/be.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/bg.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ca.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/cs.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/da.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/de.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/eo.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/es.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fa.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fi.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/he.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hu.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hy.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/id.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/is.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/it.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ja.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ka.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/km.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/kh.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ko.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/lt.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/mk.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ms.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/nl.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/no.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ota.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ps.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pl.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pt.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ru.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sl.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sv.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ta.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/th.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/tr.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uk.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ua.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ur.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uz.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/vi.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/yo.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/index.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/api.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/index.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/coerce.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/index.js","../../core/src/index.ts","../../core/src/schemas/context-budget.ts","../../core/src/calculators/context-budget-calculator.ts","../../core/src/checkers/health-checker.ts","../../core/src/managers/file-index-manager.ts","../../core/src/managers/plan-chunk-manager.ts","../../core/src/schemas/adapter-config.ts","../../core/src/schemas/file-index-entry.ts","../../core/src/schemas/next-prompt.ts","../../core/src/schemas/plan-chunk.ts","../../core/src/schemas/task.ts","../../core/src/schemas/project-info.ts","../../core/src/schemas/session-state.ts","../../core/src/managers/session-state-manager.ts","../../core/src/counters/token-counter.ts","../../core/src/detectors/monorepo-detector.ts","../../core/src/detectors/project-detector.ts","../../core/src/formatters/formatter-utils.ts","../../core/src/formatters/plain-text-formatter.ts","../../core/src/managers/next-prompt-writer.ts","../../core/src/managers/routines-writer.ts","../../core/src/parsers/plan-parser.ts","../../core/src/walkers/gitignore-aware-walker.ts","../src/utils/adapter-io.ts","../src/utils/error-handler.ts","../../adapters/src/claude-bootstrap-formatter.ts","../../adapters/src/claude-adapter.ts","../../adapters/src/cursor-bootstrap-formatter.ts","../../adapters/src/cursor-adapter.ts","../../adapters/src/opencode-bootstrap-formatter.ts","../../adapters/src/opencode-adapter.ts","../../adapters/src/registry.ts","../src/utils/resolve-adapter.ts","../src/commands/advance.ts","../src/commands/export.ts","../src/commands/health.ts","../src/commands/import.ts","../src/commands/index-cmd.ts","../src/utils/dry-run.ts","../src/commands/detect.ts","../src/commands/final-writes.ts","../src/commands/generate-index.ts","../src/commands/scaffold-plan.ts","../src/commands/split-plan.ts","../src/commands/init.ts","../src/commands/migrate.ts","../src/commands/prompt.ts","../src/commands/status.ts","../src/commands/update.ts","../src/utils/signal-handler.ts","../src/cli.ts","../src/index.ts","../src/utils/index.ts"],"sourcesContent":["var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar extend = require('extend-shallow');\n\n/**\n * Parse sections in `input` with the given `options`.\n *\n * ```js\n * var sections = require('{%= name %}');\n * var result = sections(input, options);\n * // { content: 'Content before sections', sections: [] }\n * ```\n * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer.\n * @param {Object} options\n * @return {Object} Returns an object with a `content` string and an array of `sections` objects.\n * @api public\n */\n\nmodule.exports = function(input, options) {\n if (typeof options === 'function') {\n options = { parse: options };\n }\n\n var file = toObject(input);\n var defaults = {section_delimiter: '---', parse: identity};\n var opts = extend({}, defaults, options);\n var delim = opts.section_delimiter;\n var lines = file.content.split(/\\r?\\n/);\n var sections = null;\n var section = createSection();\n var content = [];\n var stack = [];\n\n function initSections(val) {\n file.content = val;\n sections = [];\n content = [];\n }\n\n function closeSection(val) {\n if (stack.length) {\n section.key = getKey(stack[0], delim);\n section.content = val;\n opts.parse(section, sections);\n sections.push(section);\n section = createSection();\n content = [];\n stack = [];\n }\n }\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var len = stack.length;\n var ln = line.trim();\n\n if (isDelimiter(ln, delim)) {\n if (ln.length === 3 && i !== 0) {\n if (len === 0 || len === 2) {\n content.push(line);\n continue;\n }\n stack.push(ln);\n section.data = content.join('\\n');\n content = [];\n continue;\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n }\n\n if (len === 2) {\n closeSection(content.join('\\n'));\n }\n\n stack.push(ln);\n continue;\n }\n\n content.push(line);\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n } else {\n closeSection(content.join('\\n'));\n }\n\n file.sections = sections;\n return file;\n};\n\nfunction isDelimiter(line, delim) {\n if (line.slice(0, delim.length) !== delim) {\n return false;\n }\n if (line.charAt(delim.length + 1) === delim.slice(-1)) {\n return false;\n }\n return true;\n}\n\nfunction toObject(input) {\n if (typeOf(input) !== 'object') {\n input = { content: input };\n }\n\n if (typeof input.content !== 'string' && !isBuffer(input.content)) {\n throw new TypeError('expected a buffer or string');\n }\n\n input.content = input.content.toString();\n input.sections = [];\n return input;\n}\n\nfunction getKey(val, delim) {\n return val ? val.slice(delim.length).trim() : '';\n}\n\nfunction createSection() {\n return { key: '', data: '', content: '' };\n}\n\nfunction identity(val) {\n return val;\n}\n\nfunction isBuffer(val) {\n if (val && val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n","'use strict';\n\nconst yaml = require('js-yaml');\n\n/**\n * Default engines\n */\n\nconst engines = exports = module.exports;\n\n/**\n * YAML\n */\n\nengines.yaml = {\n parse: yaml.load.bind(yaml),\n stringify: yaml.dump.bind(yaml)\n};\n\n/**\n * JSON\n */\n\nengines.json = {\n parse: JSON.parse.bind(JSON),\n stringify: function(obj, options) {\n const opts = Object.assign({replacer: null, space: 2}, options);\n return JSON.stringify(obj, opts.replacer, opts.space);\n }\n};\n\n/**\n * JavaScript\n */\n\nengines.javascript = {\n parse: function parse(str, options, wrap) {\n throw new Error('Parsing JavaScript in front matter is no longer supported internally in `@11ty/gray-matter`. Support is added upstream in `@11ty/eleventy`.');\n },\n stringify: function() {\n throw new Error('stringifying JavaScript is not supported');\n }\n};\n","/*!\n * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(str) {\n if (typeof str === 'string' && str.charAt(0) === '\\ufeff') {\n return str.slice(1);\n }\n return str;\n};\n","'use strict';\n\nconst stripBom = require('strip-bom-string');\nconst typeOf = require('kind-of');\n\nexports.define = function(obj, key, val) {\n Reflect.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: val\n });\n};\n\n/**\n * Returns true if `val` is a buffer\n */\n\nexports.isBuffer = function(val) {\n return val instanceof Uint8Array;\n};\n\n/**\n * Returns true if `val` is an object\n */\n\nexports.isObject = function(val) {\n return typeOf(val) === 'object';\n};\n\n/**\n * Cast `input` to a buffer\n */\n\nexports.toBuffer = function(input) {\n if(typeof input === 'string') {\n if(typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(input);\n }\n\n throw new Error(\"Unsupported environment: TextEncoder global required.\");\n }\n return input;\n};\n\n/**\n * Cast `val` to a string.\n */\n\nexports.toString = function(input) {\n if (exports.isBuffer(input)) {\n if(typeof TextDecoder !== \"undefined\") {\n return stripBom(new TextDecoder().decode(input));\n }\n throw new Error(\"Unsupported environment: TextDecoder required.\");\n }\n if (typeof input !== 'string') {\n throw new TypeError('expected input to be a string or buffer');\n }\n return stripBom(input);\n};\n\n/**\n * Cast `val` to an array.\n */\n\nexports.arrayify = function(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Returns true if `str` starts with `substr`.\n */\n\nexports.startsWith = function(str, substr, len) {\n if (typeof len !== 'number') len = substr.length;\n return str.slice(0, len) === substr;\n};\n","'use strict';\n\nconst engines = require('./engines');\nconst utils = require('./utils');\n\nmodule.exports = function(options) {\n const opts = Object.assign({}, options);\n\n // ensure that delimiters are an array\n opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---');\n if (opts.delimiters.length === 1) {\n opts.delimiters.push(opts.delimiters[0]);\n }\n\n opts.language = (opts.language || opts.lang || 'yaml').toLowerCase();\n opts.engines = Object.assign({}, engines, opts.parsers, opts.engines);\n return opts;\n};\n","'use strict';\n\nmodule.exports = function(name, options) {\n let engine = options.engines[name] || options.engines[aliase(name)];\n if (typeof engine === 'undefined') {\n throw new Error('gray-matter engine \"' + name + '\" is not registered');\n }\n if (typeof engine === 'function') {\n engine = { parse: engine };\n }\n return engine;\n};\n\nfunction aliase(name) {\n switch (name.toLowerCase()) {\n case 'js':\n case 'javascript':\n return 'javascript';\n case 'yaml':\n case 'yml':\n return 'yaml';\n default: {\n return name;\n }\n }\n}\n","'use strict';\n\nconst typeOf = require('kind-of');\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, data, options) {\n if (data == null && options == null) {\n switch (typeOf(file)) {\n case 'object':\n data = file.data;\n options = {};\n break;\n case 'string':\n return file;\n default: {\n throw new TypeError('expected file to be a string or object');\n }\n }\n }\n\n const str = file.content;\n const opts = defaults(options);\n if (data == null) {\n if (!opts.data) return file;\n data = opts.data;\n }\n\n const language = file.language || opts.language;\n const engine = getEngine(language, opts);\n if (typeof engine.stringify !== 'function') {\n throw new TypeError('expected \"' + language + '.stringify\" to be a function');\n }\n\n data = Object.assign({}, file.data, data);\n const open = opts.delimiters[0];\n const close = opts.delimiters[1];\n const matter = engine.stringify(data, options).trim();\n let buf = '';\n\n if (matter !== '{}') {\n buf = newline(open) + newline(matter) + newline(close);\n }\n\n if (typeof file.excerpt === 'string' && file.excerpt !== '') {\n if (str.indexOf(file.excerpt.trim()) === -1) {\n buf += newline(file.excerpt) + newline(close);\n }\n }\n\n return buf + newline(str);\n};\n\nfunction newline(str) {\n return str.slice(-1) !== '\\n' ? str + '\\n' : str;\n}\n","'use strict';\n\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, options) {\n const opts = defaults(options);\n\n if (file.data == null) {\n file.data = {};\n }\n\n if (typeof opts.excerpt === 'function') {\n return opts.excerpt(file, opts);\n }\n\n const sep = file.data.excerpt_separator || opts.excerpt_separator;\n if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {\n return file;\n }\n\n const delimiter = typeof opts.excerpt === 'string'\n ? opts.excerpt\n : (sep || opts.delimiters[0]);\n\n // if enabled, get the excerpt defined after front-matter\n const idx = file.content.indexOf(delimiter);\n if (idx !== -1) {\n file.excerpt = file.content.slice(0, idx);\n }\n\n return file;\n};\n","'use strict';\n\nconst typeOf = require('kind-of');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\n/**\n * Normalize the given value to ensure an object is returned\n * with the expected properties.\n */\n\nmodule.exports = function(file) {\n if (typeOf(file) !== 'object') {\n file = { content: file };\n }\n\n if (typeOf(file.data) !== 'object') {\n file.data = {};\n }\n\n // if file was passed as an object, ensure that\n // \"file.content\" is set\n if (file.contents && file.content == null) {\n file.content = file.contents;\n }\n\n // set non-enumerable properties on the file object\n utils.define(file, 'orig', utils.toBuffer(file.content));\n utils.define(file, 'language', file.language || '');\n utils.define(file, 'matter', file.matter || '');\n utils.define(file, 'stringify', function(data, options) {\n if (options && options.language) {\n file.language = options.language;\n }\n return stringify(file, data, options);\n });\n\n // strip BOM and ensure that \"file.content\" is a string\n file.content = utils.toString(file.content);\n file.isEmpty = false;\n file.excerpt = '';\n return file;\n};\n","'use strict';\n\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(language, str, options) {\n const opts = defaults(options);\n const engine = getEngine(language, opts);\n if (typeof engine.parse !== 'function') {\n throw new TypeError('expected \"' + language + '.parse\" to be a function');\n }\n return engine.parse(str, opts);\n};\n","'use strict';\n\nconst fs = require('fs');\nconst sections = require('section-matter');\nconst defaults = require('./lib/defaults');\nconst stringify = require('./lib/stringify');\nconst excerpt = require('./lib/excerpt');\nconst engines = require('./lib/engines');\nconst toFile = require('./lib/to-file');\nconst parse = require('./lib/parse');\nconst utils = require('./lib/utils');\n\n/**\n * Takes a string or object with `content` property, extracts\n * and parses front-matter from the string, then returns an object\n * with `data`, `content` and other [useful properties](#returned-object).\n *\n * ```js\n * const matter = require('gray-matter');\n * console.log(matter('---\\ntitle: Home\\n---\\nOther stuff'));\n * //=> { data: { title: 'Home'}, content: 'Other stuff' }\n * ```\n * @param {Object|String} `input` String, or object with `content` string\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction matter(input, options) {\n if (input === '') {\n return { data: {}, content: input, excerpt: '', orig: input };\n }\n\n let file = toFile(input);\n const cached = matter.cache[file.content];\n\n if (!options) {\n if (cached) {\n file = Object.assign({}, cached);\n file.orig = cached.orig;\n return file;\n }\n\n // only cache if there are no options passed. if we cache when options\n // are passed, we would need to also cache options values, which would\n // negate any performance benefits of caching\n matter.cache[file.content] = file;\n }\n\n return parseMatter(file, options);\n}\n\n/**\n * Parse front matter\n */\n\nfunction parseMatter(file, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n const close = '\\n' + opts.delimiters[1];\n let str = file.content;\n\n if (opts.language) {\n file.language = opts.language;\n }\n\n // get the length of the opening delimiter\n const openLen = open.length;\n if (!utils.startsWith(str, open, openLen)) {\n excerpt(file, opts);\n return file;\n }\n\n // if the next character after the opening delimiter is\n // a character from the delimiter, then it's not a front-\n // matter delimiter\n if (str.charAt(openLen) === open.slice(-1)) {\n return file;\n }\n\n // strip the opening delimiter\n str = str.slice(openLen);\n const len = str.length;\n\n // use the language defined after first delimiter, if it exists\n const language = matter.language(str, opts);\n if (language.name) {\n file.language = language.name;\n str = str.slice(language.raw.length);\n }\n\n // get the index of the closing delimiter\n let closeIndex = str.indexOf(close);\n if (closeIndex === -1) {\n closeIndex = len;\n }\n\n // get the raw front-matter block\n file.matter = str.slice(0, closeIndex);\n\n const block = file.matter.replace(/^\\s*#[^\\n]+/gm, '').trim();\n if (block === '') {\n file.isEmpty = true;\n file.empty = file.content;\n file.data = {};\n } else {\n\n // create file.data by parsing the raw file.matter block\n file.data = parse(file.language, file.matter, opts);\n }\n\n // update file.content\n if (closeIndex === len) {\n file.content = '';\n } else {\n file.content = str.slice(closeIndex + close.length);\n if (file.content[0] === '\\r') {\n file.content = file.content.slice(1);\n }\n if (file.content[0] === '\\n') {\n file.content = file.content.slice(1);\n }\n }\n\n excerpt(file, opts);\n\n if (opts.sections === true || typeof opts.section === 'function') {\n sections(file, opts.section);\n }\n return file;\n}\n\n/**\n * Expose engines\n */\n\nmatter.engines = engines;\n\n/**\n * Stringify an object to YAML or the specified language, and\n * append it to the given string. By default, only YAML and JSON\n * can be stringified. See the [engines](#engines) section to learn\n * how to stringify other languages.\n *\n * ```js\n * console.log(matter.stringify('foo bar baz', {title: 'Home'}));\n * // results in:\n * // ---\n * // title: Home\n * // ---\n * // foo bar baz\n * ```\n * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string.\n * @param {Object} `data` Front matter to stringify.\n * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml].\n * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string.\n * @api public\n */\n\nmatter.stringify = function(file, data, options) {\n if (typeof file === 'string') file = matter(file, options);\n return stringify(file, data, options);\n};\n\n/**\n * Synchronously read a file from the file system and parse\n * front matter. Returns the same object as the [main function](#matter).\n *\n * ```js\n * const file = matter.read('./content/blog-post.md');\n * ```\n * @param {String} `filepath` file path of the file to read.\n * @param {Object} `options` [Options](#options) to pass to gray-matter.\n * @return {Object} Returns [an object](#returned-object) with `data` and `content`\n * @api public\n */\n\nmatter.read = function(filepath, options) {\n const str = fs.readFileSync(filepath, 'utf8');\n const file = matter(str, options);\n file.path = filepath;\n return file;\n};\n\n/**\n * Returns true if the given `string` has front matter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Boolean} True if front matter exists.\n * @api public\n */\n\nmatter.test = function(str, options) {\n return utils.startsWith(str, defaults(options).delimiters[0]);\n};\n\n/**\n * Detect the language to use, if one is defined after the\n * first front-matter delimiter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed\n */\n\nmatter.language = function(str, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n\n if (matter.test(str)) {\n str = str.slice(open.length);\n }\n\n const language = str.slice(0, str.search(/\\r?\\n/));\n return {\n raw: language,\n name: language ? language.trim() : ''\n };\n};\n\n/**\n * Expose `matter`\n */\n\nmatter.cache = {};\nmatter.clearCache = function() {\n matter.cache = {};\n};\nmodule.exports = matter;\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","'use strict'\nmodule.exports = writeFile\nmodule.exports.sync = writeFileSync\nmodule.exports._getTmpname = getTmpname // for testing\nmodule.exports._cleanupOnExit = cleanupOnExit\n\nconst fs = require('fs')\nconst crypto = require('node:crypto')\nconst { onExit } = require('signal-exit')\nconst path = require('path')\nconst { promisify } = require('util')\nconst activeFiles = {}\n\n// if we run inside of a worker_thread, `process.pid` is not unique\n/* istanbul ignore next */\nconst threadId = (function getId () {\n try {\n const workerThreads = require('worker_threads')\n\n /// if we are in main thread, this is set to `0`\n return workerThreads.threadId\n } catch (e) {\n // worker_threads are not available, fallback to 0\n return 0\n }\n})()\n\nlet invocations = 0\nfunction getTmpname (filename) {\n return filename + '.' +\n crypto.createHash('sha1')\n .update(__filename)\n .update(String(process.pid))\n .update(String(threadId))\n .update(String(++invocations))\n .digest()\n .readUInt32BE(0)\n}\n\nfunction cleanupOnExit (tmpfile) {\n return () => {\n try {\n fs.unlinkSync(typeof tmpfile === 'function' ? tmpfile() : tmpfile)\n } catch {\n // ignore errors\n }\n }\n}\n\nfunction serializeActiveFile (absoluteName) {\n return new Promise(resolve => {\n // make a queue if it doesn't already exist\n if (!activeFiles[absoluteName]) {\n activeFiles[absoluteName] = []\n }\n\n activeFiles[absoluteName].push(resolve) // add this job to the queue\n if (activeFiles[absoluteName].length === 1) {\n resolve()\n } // kick off the first one\n })\n}\n\n// https://github.com/isaacs/node-graceful-fs/blob/master/polyfills.js#L315-L342\nfunction isChownErrOk (err) {\n if (err.code === 'ENOSYS') {\n return true\n }\n\n const nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (err.code === 'EINVAL' || err.code === 'EPERM') {\n return true\n }\n }\n\n return false\n}\n\nasync function writeFileAsync (filename, data, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n let fd\n let tmpfile\n /* istanbul ignore next -- The closure only gets called when onExit triggers */\n const removeOnExitHandler = onExit(cleanupOnExit(() => tmpfile))\n const absoluteName = path.resolve(filename)\n\n try {\n await serializeActiveFile(absoluteName)\n const truename = await promisify(fs.realpath)(filename).catch(() => filename)\n tmpfile = getTmpname(truename)\n\n if (!options.mode || !options.chown) {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n const stats = await promisify(fs.stat)(truename).catch(() => {})\n if (stats) {\n if (options.mode == null) {\n options.mode = stats.mode\n }\n\n if (options.chown == null && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n }\n }\n\n fd = await promisify(fs.open)(tmpfile, 'w', options.mode)\n if (options.tmpfileCreated) {\n await options.tmpfileCreated(tmpfile)\n }\n if (ArrayBuffer.isView(data)) {\n await promisify(fs.write)(fd, data, 0, data.length, 0)\n } else if (data != null) {\n await promisify(fs.write)(fd, String(data), 0, String(options.encoding || 'utf8'))\n }\n\n if (options.fsync !== false) {\n await promisify(fs.fsync)(fd)\n }\n\n await promisify(fs.close)(fd)\n fd = null\n\n if (options.chown) {\n await promisify(fs.chown)(tmpfile, options.chown.uid, options.chown.gid).catch(err => {\n if (!isChownErrOk(err)) {\n throw err\n }\n })\n }\n\n if (options.mode) {\n await promisify(fs.chmod)(tmpfile, options.mode).catch(err => {\n if (!isChownErrOk(err)) {\n throw err\n }\n })\n }\n\n await promisify(fs.rename)(tmpfile, truename)\n } finally {\n if (fd) {\n await promisify(fs.close)(fd).catch(\n /* istanbul ignore next */\n () => {}\n )\n }\n removeOnExitHandler()\n await promisify(fs.unlink)(tmpfile).catch(() => {})\n activeFiles[absoluteName].shift() // remove the element added by serializeSameFile\n if (activeFiles[absoluteName].length > 0) {\n activeFiles[absoluteName][0]() // start next job if one is pending\n } else {\n delete activeFiles[absoluteName]\n }\n }\n}\n\nasync function writeFile (filename, data, options, callback) {\n if (options instanceof Function) {\n callback = options\n options = {}\n }\n\n const promise = writeFileAsync(filename, data, options)\n if (callback) {\n try {\n const result = await promise\n return callback(result)\n } catch (err) {\n return callback(err)\n }\n }\n\n return promise\n}\n\nfunction writeFileSync (filename, data, options) {\n if (typeof options === 'string') {\n options = { encoding: options }\n } else if (!options) {\n options = {}\n }\n try {\n filename = fs.realpathSync(filename)\n } catch (ex) {\n // it's ok, it'll happen on a not yet existing file\n }\n const tmpfile = getTmpname(filename)\n\n if (!options.mode || !options.chown) {\n // Either mode or chown is not explicitly set\n // Default behavior is to copy it from original file\n try {\n const stats = fs.statSync(filename)\n options = Object.assign({}, options)\n if (!options.mode) {\n options.mode = stats.mode\n }\n if (!options.chown && process.getuid) {\n options.chown = { uid: stats.uid, gid: stats.gid }\n }\n } catch (ex) {\n // ignore stat errors\n }\n }\n\n let fd\n const cleanup = cleanupOnExit(tmpfile)\n const removeOnExitHandler = onExit(cleanup)\n\n let threw = true\n try {\n fd = fs.openSync(tmpfile, 'w', options.mode || 0o666)\n if (options.tmpfileCreated) {\n options.tmpfileCreated(tmpfile)\n }\n if (ArrayBuffer.isView(data)) {\n fs.writeSync(fd, data, 0, data.length, 0)\n } else if (data != null) {\n fs.writeSync(fd, String(data), 0, String(options.encoding || 'utf8'))\n }\n if (options.fsync !== false) {\n fs.fsyncSync(fd)\n }\n\n fs.closeSync(fd)\n fd = null\n\n if (options.chown) {\n try {\n fs.chownSync(tmpfile, options.chown.uid, options.chown.gid)\n } catch (err) {\n if (!isChownErrOk(err)) {\n throw err\n }\n }\n }\n\n if (options.mode) {\n try {\n fs.chmodSync(tmpfile, options.mode)\n } catch (err) {\n if (!isChownErrOk(err)) {\n throw err\n }\n }\n }\n\n fs.renameSync(tmpfile, filename)\n threw = false\n } finally {\n if (fd) {\n try {\n fs.closeSync(fd)\n } catch (ex) {\n // ignore close errors at this stage, error may have closed fd already.\n }\n }\n removeOnExitHandler()\n if (threw) {\n cleanup()\n }\n }\n}\n","/**\n * Options for constructing a {@link CliError}.\n */\nexport interface CliErrorOptions {\n\t/** A user-facing description of what went wrong. Must not contain absolute paths. */\n\treadonly message: string;\n\t/** An optional actionable suggestion for the user to resolve the issue. */\n\treadonly suggestion?: string | undefined;\n\t/** The original error that caused this CLI error, if any. */\n\treadonly cause?: unknown;\n}\n\n/**\n * Error thrown for user-facing CLI failures.\n *\n * Includes an optional `suggestion` field with actionable advice.\n * Error messages must never contain absolute paths — use `path.relative()` before constructing.\n *\n * @throws Never — this class is thrown, not caught internally.\n *\n * @example\n * ```ts\n * throw new CliError({\n * message: \"No .session/ directory found in the current project\",\n * suggestion: \"Run `npx dev-session init` to create one\",\n * });\n * ```\n */\nexport class CliError extends Error {\n\t/** Discriminant for runtime type checking. */\n\toverride readonly name = \"CliError\" as const;\n\n\t/** An actionable suggestion for the user to resolve the issue, if available. */\n\treadonly suggestion: string | undefined;\n\n\t/**\n\t * Creates a new CliError.\n\t *\n\t * @param options - The message, optional suggestion, and optional cause.\n\t */\n\tconstructor(options: CliErrorOptions) {\n\t\tsuper(options.message, { cause: options.cause });\n\t\tthis.suggestion = options.suggestion;\n\t}\n}\n\n/**\n * Type guard to check if an unknown value is a {@link CliError}.\n *\n * @param error - The value to check.\n * @returns `true` if the value is a CliError instance.\n */\nexport function isCliError(error: unknown): error is CliError {\n\treturn error instanceof CliError;\n}\n","/**\n * Options for constructing a {@link ParseError}.\n */\nexport interface ParseErrorOptions {\n\t/** A human-readable description of the parse failure. Must not contain raw YAML or absolute paths. */\n\treadonly message: string;\n\t/** The relative file path where the parse failure occurred. */\n\treadonly file: string;\n\t/** The line number where the parse failure occurred, if known. */\n\treadonly line?: number | undefined;\n\t/** The original error that caused this parse error, if any. */\n\treadonly cause?: unknown;\n}\n\n/**\n * Error thrown when file content cannot be parsed.\n *\n * Includes `file` (always a relative path) and optional `line` number.\n * The `message` field must never contain raw YAML content — sanitize before constructing.\n *\n * @throws Never — this class is thrown, not caught internally.\n *\n * @example\n * ```ts\n * throw new ParseError({\n * message: \"Invalid frontmatter: expected 'title' to be a string\",\n * file: \".session/SESSION_STATE.md\",\n * line: 3,\n * });\n * ```\n */\nexport class ParseError extends Error {\n\t/** Discriminant for runtime type checking. */\n\toverride readonly name = \"ParseError\" as const;\n\n\t/** The relative file path where parsing failed. */\n\treadonly file: string;\n\n\t/** The line number where parsing failed, if known. */\n\treadonly line: number | undefined;\n\n\t/**\n\t * Creates a new ParseError.\n\t *\n\t * @param options - The message, file path, optional line number, and optional cause.\n\t */\n\tconstructor(options: ParseErrorOptions) {\n\t\tsuper(options.message, { cause: options.cause });\n\t\tthis.file = options.file;\n\t\tthis.line = options.line;\n\t}\n}\n\n/**\n * Type guard to check if an unknown value is a {@link ParseError}.\n *\n * @param error - The value to check.\n * @returns `true` if the value is a ParseError instance.\n */\nexport function isParseError(error: unknown): error is ParseError {\n\treturn error instanceof ParseError;\n}\n","import type { SecurityThreat } from \"./security-threat.js\";\n\n/**\n * Options for constructing a {@link SecurityError}.\n */\nexport interface SecurityErrorOptions {\n\t/** The category of security threat that was detected. */\n\treadonly threat: SecurityThreat;\n\t/** A human-readable description of the threat. Must not contain absolute paths. */\n\treadonly message: string;\n\t/** The original error that caused this security error, if any. */\n\treadonly cause?: unknown;\n}\n\n/**\n * Error thrown when a security violation is detected.\n *\n * Includes a `threat` field classifying the type of violation.\n * Error messages must never contain absolute paths — use `path.relative()` before constructing.\n *\n * @throws Never — this class is thrown, not caught internally.\n *\n * @example\n * ```ts\n * throw new SecurityError({\n * threat: SecurityThreat.PATH_TRAVERSAL,\n * message: `Path \"${relativePath}\" resolves outside project root`,\n * });\n * ```\n */\nexport class SecurityError extends Error {\n\t/** Discriminant for runtime type checking. */\n\toverride readonly name = \"SecurityError\" as const;\n\n\t/** The category of security threat that triggered this error. */\n\treadonly threat: SecurityThreat;\n\n\t/**\n\t * Creates a new SecurityError.\n\t *\n\t * @param options - The threat type, message, and optional cause.\n\t */\n\tconstructor(options: SecurityErrorOptions) {\n\t\tsuper(options.message, { cause: options.cause });\n\t\tthis.threat = options.threat;\n\t}\n}\n\n/**\n * Type guard to check if an unknown value is a {@link SecurityError}.\n *\n * @param error - The value to check.\n * @returns `true` if the value is a SecurityError instance.\n */\nexport function isSecurityError(error: unknown): error is SecurityError {\n\treturn error instanceof SecurityError;\n}\n","/**\n * Enumeration of known security threat categories.\n *\n * Used by {@link SecurityError} to classify the type of threat detected.\n */\nexport const SecurityThreat = {\n\t/** Path resolves outside the allowed project root boundary. */\n\tPATH_TRAVERSAL: \"PATH_TRAVERSAL\",\n\t/** Content contains a known secret pattern (API key, token, etc.). */\n\tSECRET_DETECTED: \"SECRET_DETECTED\",\n\t/** Input contains executable code or injection attempt (e.g., JS in YAML frontmatter). */\n\tINJECTION_ATTEMPT: \"INJECTION_ATTEMPT\",\n\t/** Parsed object contains prototype pollution keys (__proto__, constructor, prototype). */\n\tPROTOTYPE_POLLUTION: \"PROTOTYPE_POLLUTION\",\n} as const;\n\n/** Union type of all security threat categories. */\nexport type SecurityThreat = (typeof SecurityThreat)[keyof typeof SecurityThreat];\n","/**\n * Synchronous secret detection scanner.\n *\n * Scans content for 10 known secret patterns (API keys, tokens, private keys).\n * Returns scan results with redacted matches — never exposes full secret values.\n *\n * @packageDocumentation\n */\n\n/**\n * A single detected secret in scanned content.\n */\nexport interface ScanResult {\n\t/** The name of the pattern that matched (e.g., \"AWS Access Key\"). */\n\treadonly pattern: string;\n\t/** The 1-indexed line number where the match was found. */\n\treadonly line: number;\n\t/** A redacted version of the matched value. Shows first 4 chars + asterisks. */\n\treadonly redacted: string;\n}\n\n/**\n * A named regex pattern used for secret detection.\n */\ninterface SecretPattern {\n\t/** Human-readable pattern name. */\n\treadonly name: string;\n\t/** The regex to test against each line of content. */\n\treadonly regex: RegExp;\n}\n\n/**\n * The 10 secret patterns scanned by {@link SecretScanner}.\n *\n * Each pattern is designed to minimize false positives while catching\n * real secrets that commonly leak into configuration and markdown files.\n */\nconst SECRET_PATTERNS: readonly SecretPattern[] = [\n\t{\n\t\tname: \"AWS Access Key\",\n\t\tregex: /\\bAKIA[0-9A-Z]{16}\\b/,\n\t},\n\t{\n\t\tname: \"AWS Secret Key\",\n\t\tregex:\n\t\t\t/(?:aws_secret_access_key|AWS_SECRET_ACCESS_KEY)\\s*[=:]\\s*[\"']?([A-Za-z0-9/+=]{40})[\"']?/,\n\t},\n\t{\n\t\tname: \"GitHub PAT (classic)\",\n\t\tregex: /\\bghp_[A-Za-z0-9]{36}\\b/,\n\t},\n\t{\n\t\tname: \"GitHub PAT (fine-grained)\",\n\t\tregex: /\\bgithub_pat_[A-Za-z0-9]{22}_[A-Za-z0-9]{59}\\b/,\n\t},\n\t{\n\t\tname: \"npm Token\",\n\t\tregex: /\\bnpm_[A-Za-z0-9]{36}\\b/,\n\t},\n\t{\n\t\tname: \"OpenAI API Key\",\n\t\tregex: /\\bsk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}\\b/,\n\t},\n\t{\n\t\tname: \"Anthropic API Key\",\n\t\tregex: /\\bsk-ant-[A-Za-z0-9\\-_]{80,}\\b/,\n\t},\n\t{\n\t\tname: \"Private Key Header\",\n\t\tregex: /-----BEGIN\\s+(RSA|EC|DSA|OPENSSH|PGP)?\\s*PRIVATE KEY-----/,\n\t},\n\t{\n\t\tname: \"Generic Secret Assignment\",\n\t\tregex:\n\t\t\t/(?:secret|token|password|api_key|apikey|api-key|access_token)\\s*[=:]\\s*[\"'][A-Za-z0-9/+=\\-_]{16,}[\"']/i,\n\t},\n\t{\n\t\tname: \"Generic Bearer Token\",\n\t\tregex: /\\bBearer\\s+[A-Za-z0-9\\-_.~+/]+=*\\b/,\n\t},\n] as const;\n\n/**\n * Number of leading characters to show in redacted output.\n * The rest is replaced with asterisks.\n */\nconst REDACT_VISIBLE_CHARS = 4;\n\n/** Minimum redacted output length. */\nconst REDACT_MIN_LENGTH = 10;\n\n/**\n * Redacts a matched secret value by showing only the first few characters.\n *\n * @param match - The full matched string.\n * @returns A redacted version showing at most {@link REDACT_VISIBLE_CHARS} characters.\n */\nfunction redactMatch(match: string): string {\n\tif (match.length <= REDACT_VISIBLE_CHARS) {\n\t\treturn \"*\".repeat(REDACT_MIN_LENGTH);\n\t}\n\tconst visible = match.slice(0, REDACT_VISIBLE_CHARS);\n\tconst asteriskCount = Math.max(\n\t\tREDACT_MIN_LENGTH - REDACT_VISIBLE_CHARS,\n\t\tmatch.length - REDACT_VISIBLE_CHARS,\n\t);\n\treturn visible + \"*\".repeat(asteriskCount);\n}\n\n/**\n * Extracts the best match string from a regex result.\n * Prefers capture group 1 (the actual secret value) if present,\n * otherwise uses the full match.\n *\n * @param result - The regex exec result.\n * @returns The matched string to redact.\n */\nfunction extractMatch(result: RegExpExecArray): string {\n\t// Some patterns (like AWS Secret Key) use a capture group for the actual value\n\treturn result[1] ?? result[0];\n}\n\n/**\n * Synchronous secret scanner for content strings.\n *\n * Scans text line-by-line against 10 known secret patterns.\n * Returns results with redacted matches — the full secret value is never stored or returned.\n */\nexport const SecretScanner = {\n\t/**\n\t * Scans content for known secret patterns.\n\t *\n\t * @param content - The text content to scan (typically file contents).\n\t * @returns An array of {@link ScanResult} for each detected secret. Empty array if none found.\n\t *\n\t * @example\n\t * ```ts\n\t * const results = SecretScanner.scan(\"AKIAIOSFODNN7EXAMPLE\");\n\t * // [{ pattern: \"AWS Access Key\", line: 1, redacted: \"AKIA****************\" }]\n\t * ```\n\t */\n\tscan(content: string): ScanResult[] {\n\t\tconst results: ScanResult[] = [];\n\t\tconst lines = content.split(\"\\n\");\n\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (line === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tscanLine(line, i + 1, results);\n\t\t}\n\n\t\treturn results;\n\t},\n\n\t/**\n\t * Returns the number of secret patterns checked by the scanner.\n\t *\n\t * @returns The count of registered secret patterns.\n\t */\n\tget patternCount(): number {\n\t\treturn SECRET_PATTERNS.length;\n\t},\n} as const;\n\n/**\n * Scans a single line against all secret patterns and appends matches to results.\n *\n * @param line - The line of text to scan.\n * @param lineNumber - The 1-indexed line number (for reporting).\n * @param results - The results array to append matches to.\n */\nfunction scanLine(line: string, lineNumber: number, results: ScanResult[]): void {\n\tfor (const pattern of SECRET_PATTERNS) {\n\t\tconst result = pattern.regex.exec(line);\n\t\tif (result !== null) {\n\t\t\tconst matchValue = extractMatch(result);\n\t\t\tresults.push({\n\t\t\t\tpattern: pattern.name,\n\t\t\t\tline: lineNumber,\n\t\t\t\tredacted: redactMatch(matchValue),\n\t\t\t});\n\t\t}\n\t}\n}\n","/**\n * Write guard middleware that scans content for secrets before writing.\n *\n * Pipeline: scan content with {@link SecretScanner} -> warn or block -> delegate to writer.\n * Supports warn mode (default), strict/block mode, and inline bypass comments.\n *\n * @packageDocumentation\n */\n\nimport { SecurityError } from \"../errors/security-error.js\";\nimport { SecurityThreat } from \"../errors/security-threat.js\";\nimport type { ScanResult } from \"../scanners/secret-scanner.js\";\nimport { SecretScanner } from \"../scanners/secret-scanner.js\";\n\n/**\n * Inline comment that bypasses secret scanning for a file.\n * When this string appears anywhere in the content, the WriteGuard\n * allows the write without scanning.\n */\nconst BYPASS_COMMENT = \"<!-- dev-session:allow -->\";\n\n/**\n * Options for {@link WriteGuard.check}.\n */\nexport interface WriteGuardOptions {\n\t/**\n\t * When `true`, throws a {@link SecurityError} if secrets are detected.\n\t * When `false` (default), returns the scan results as warnings without blocking.\n\t */\n\treadonly strict?: boolean | undefined;\n}\n\n/**\n * Result of a write guard check.\n */\nexport interface WriteGuardResult {\n\t/** Whether the write is allowed to proceed. Always `true` unless strict mode blocks it. */\n\treadonly allowed: boolean;\n\t/** Whether the content contains the bypass comment. */\n\treadonly bypassed: boolean;\n\t/** Any secrets detected during scanning. Empty if bypassed or no secrets found. */\n\treadonly results: readonly ScanResult[];\n}\n\n/**\n * Middleware that scans content for secrets before file writes.\n *\n * The WriteGuard sits between the caller and {@link AtomicWriter},\n * enforcing secret detection policies:\n *\n * - **Warn mode** (default): Returns scan results but allows the write.\n * - **Strict mode**: Throws {@link SecurityError} if secrets are detected.\n * - **Bypass**: Content containing `<!-- dev-session:allow -->` skips scanning entirely.\n */\nexport const WriteGuard = {\n\t/**\n\t * Checks content for secrets and returns a guard result.\n\t *\n\t * @param content - The content to scan before writing.\n\t * @param options - Optional configuration. Set `strict: true` to block on detection.\n\t * @returns A {@link WriteGuardResult} indicating whether the write is allowed.\n\t * @throws {SecurityError} With `SECRET_DETECTED` threat if strict mode is enabled and secrets are found.\n\t *\n\t * @example\n\t * ```ts\n\t * const result = WriteGuard.check(fileContent);\n\t * if (result.results.length > 0) {\n\t * console.warn(\"Secrets detected:\", result.results);\n\t * }\n\t * ```\n\t *\n\t * @example\n\t * ```ts\n\t * // Strict mode — throws on detection\n\t * WriteGuard.check(fileContent, { strict: true });\n\t * ```\n\t */\n\tcheck(content: string, options?: WriteGuardOptions): WriteGuardResult {\n\t\t// Check for bypass comment first\n\t\tif (content.includes(BYPASS_COMMENT)) {\n\t\t\treturn {\n\t\t\t\tallowed: true,\n\t\t\t\tbypassed: true,\n\t\t\t\tresults: [],\n\t\t\t};\n\t\t}\n\n\t\tconst results = SecretScanner.scan(content);\n\n\t\t// No secrets found — always allowed\n\t\tif (results.length === 0) {\n\t\t\treturn {\n\t\t\t\tallowed: true,\n\t\t\t\tbypassed: false,\n\t\t\t\tresults: [],\n\t\t\t};\n\t\t}\n\n\t\t// Secrets found in strict mode — block the write\n\t\tif (options?.strict === true) {\n\t\t\tconst summary = formatScanSummary(results);\n\t\t\tthrow new SecurityError({\n\t\t\t\tthreat: SecurityThreat.SECRET_DETECTED,\n\t\t\t\tmessage: `Write blocked: ${summary}`,\n\t\t\t});\n\t\t}\n\n\t\t// Secrets found in warn mode — allow but report\n\t\treturn {\n\t\t\tallowed: true,\n\t\t\tbypassed: false,\n\t\t\tresults,\n\t\t};\n\t},\n\n\t/**\n\t * The bypass comment string that disables scanning for a file.\n\t *\n\t * @returns The bypass comment string.\n\t */\n\tget bypassComment(): string {\n\t\treturn BYPASS_COMMENT;\n\t},\n} as const;\n\n/**\n * Formats a summary of scan results for error messages.\n *\n * @param results - The scan results to summarize.\n * @returns A human-readable summary string.\n */\nfunction formatScanSummary(results: readonly ScanResult[]): string {\n\tconst count = results.length;\n\tconst patterns = [...new Set(results.map((r) => r.pattern))];\n\tconst patternList = patterns.join(\", \");\n\treturn `${String(count)} secret${count === 1 ? \"\" : \"s\"} detected (${patternList})`;\n}\n","import matter from \"@11ty/gray-matter\";\nimport type { z } from \"zod\";\n\nimport { ParseError } from \"../errors/parse-error.js\";\nimport { SecurityError } from \"../errors/security-error.js\";\nimport { SecurityThreat } from \"../errors/security-threat.js\";\nimport { ContentSanitizer } from \"../sanitizers/content-sanitizer.js\";\n\n/**\n * The result of parsing frontmatter from a string.\n *\n * @typeParam T - The validated shape of the frontmatter data, inferred from the Zod schema.\n */\nexport interface ParsedFrontmatter<T> {\n\t/** The validated and sanitized frontmatter data. */\n\treadonly data: T;\n\t/** The content body (everything after the closing `---` delimiter). */\n\treadonly content: string;\n}\n\n/**\n * Options for {@link FrontmatterParser.parse}.\n */\nexport interface FrontmatterParseOptions {\n\t/**\n\t * A relative file path for error messages.\n\t * Must not be an absolute path.\n\t */\n\treadonly file: string;\n}\n\n/**\n * Safely parses YAML frontmatter from markdown strings.\n *\n * Wraps `@11ty/gray-matter` with the JavaScript engine disabled and applies:\n * 1. Prototype pollution sanitization via {@link ContentSanitizer}\n * 2. Zod schema validation with `.strict()` enforcement (caller should use `.strict()`)\n *\n * Never use `gray-matter` directly — always go through this parser.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n * const schema = z.object({ title: z.string(), draft: z.boolean() }).strict();\n * const result = FrontmatterParser.parse(markdownString, schema, { file: \"post.md\" });\n * // result.data is { title: string, draft: boolean }\n * // result.content is the markdown body\n * ```\n */\nexport const FrontmatterParser = {\n\t/**\n\t * Parses and validates frontmatter from a string.\n\t *\n\t * @typeParam T - The Zod output type, inferred from the schema.\n\t * @param input - The raw markdown string containing YAML frontmatter.\n\t * @param schema - A Zod schema to validate the parsed frontmatter against.\n\t * @param options - Parse options including the file path for error messages.\n\t * @returns An object with validated `data` and the remaining `content`.\n\t * @throws {SecurityError} With `INJECTION_ATTEMPT` if JavaScript frontmatter is detected.\n\t * @throws {SecurityError} With `PROTOTYPE_POLLUTION` if pollution keys are found.\n\t * @throws {ParseError} If gray-matter fails to parse or Zod validation fails.\n\t */\n\tparse<T>(\n\t\tinput: string,\n\t\tschema: z.ZodType<T>,\n\t\toptions: FrontmatterParseOptions,\n\t): ParsedFrontmatter<T> {\n\t\tassertNoJavaScriptFrontmatter(input, options.file);\n\n\t\tconst parsed = parseRawFrontmatter(input, options.file);\n\n\t\tassertNoPollutionKeys(parsed.data, options.file);\n\n\t\tconst sanitized = ContentSanitizer.sanitize(parsed.data) as Record<string, unknown>;\n\n\t\tconst validated = validateWithSchema(sanitized, schema, options.file);\n\n\t\treturn {\n\t\t\tdata: validated,\n\t\t\tcontent: parsed.content,\n\t\t};\n\t},\n\n\t/**\n\t * Checks whether a string contains frontmatter delimiters.\n\t *\n\t * @param input - The string to check.\n\t * @returns `true` if the string starts with a `---` frontmatter delimiter.\n\t */\n\thasFrontmatter(input: string): boolean {\n\t\treturn matter.test(input);\n\t},\n} as const;\n\n/**\n * Detects JavaScript frontmatter blocks (`---js` or `---javascript`).\n * The `@11ty/gray-matter` fork disables JS eval, but we add an explicit check\n * as defense-in-depth to reject such content entirely.\n *\n * @param input - The raw input string.\n * @param file - The file path for error messages.\n * @throws {SecurityError} If JavaScript frontmatter is detected.\n */\nfunction assertNoJavaScriptFrontmatter(input: string, file: string): void {\n\t// Match opening delimiter followed by js/javascript language tag\n\tconst jsPattern = /^---\\s*(js|javascript)\\s*\\r?\\n/m;\n\tif (jsPattern.test(input)) {\n\t\tthrow new SecurityError({\n\t\t\tthreat: SecurityThreat.INJECTION_ATTEMPT,\n\t\t\tmessage: `JavaScript frontmatter detected in \"${file}\" — this is not allowed`,\n\t\t});\n\t}\n}\n\n/**\n * Parses raw frontmatter using `@11ty/gray-matter` with the JS engine disabled.\n *\n * @param input - The raw input string.\n * @param file - The file path for error messages.\n * @returns The parsed gray-matter result.\n * @throws {ParseError} If gray-matter fails to parse.\n */\nfunction parseRawFrontmatter(\n\tinput: string,\n\tfile: string,\n): { data: Record<string, unknown>; content: string } {\n\ttry {\n\t\tconst result = matter(input, {\n\t\t\t// Only allow YAML — no JS, no CoffeeScript\n\t\t\tlanguage: \"yaml\",\n\t\t\t// Explicitly disable eval as defense-in-depth\n\t\t\teval: false,\n\t\t});\n\t\treturn {\n\t\t\tdata: (result.data ?? Object.create(null)) as Record<string, unknown>,\n\t\t\tcontent: result.content,\n\t\t};\n\t} catch (error: unknown) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Failed to parse frontmatter in \"${file}\"`,\n\t\t\tfile,\n\t\t\tcause: error,\n\t\t});\n\t}\n}\n\n/**\n * Checks for prototype pollution keys in parsed data before sanitization.\n * Throws a SecurityError to alert callers that the input was malicious.\n *\n * @param data - The raw parsed frontmatter data.\n * @param file - The file path for error messages.\n * @throws {SecurityError} If prototype pollution keys are detected.\n */\nfunction assertNoPollutionKeys(data: Record<string, unknown>, file: string): void {\n\tif (ContentSanitizer.hasPollutionKeys(data)) {\n\t\tthrow new SecurityError({\n\t\t\tthreat: SecurityThreat.PROTOTYPE_POLLUTION,\n\t\t\tmessage: `Frontmatter in \"${file}\" contains prototype pollution keys`,\n\t\t});\n\t}\n}\n\n/**\n * Validates sanitized frontmatter data against a Zod schema.\n *\n * @typeParam T - The expected output type.\n * @param data - The sanitized frontmatter data.\n * @param schema - The Zod schema to validate against.\n * @param file - The file path for error messages.\n * @returns The validated data.\n * @throws {ParseError} If Zod validation fails.\n */\nfunction validateWithSchema<T>(\n\tdata: Record<string, unknown>,\n\tschema: z.ZodType<T>,\n\tfile: string,\n): T {\n\tconst result = schema.safeParse(data);\n\tif (result.success) {\n\t\treturn result.data;\n\t}\n\n\t// Build a safe error message from Zod issues — never include raw YAML\n\tconst issues = result.error.issues\n\t\t.map((issue) => {\n\t\t\tconst path = issue.path.length > 0 ? issue.path.join(\".\") : \"(root)\";\n\t\t\treturn `${path}: ${issue.message}`;\n\t\t})\n\t\t.join(\"; \");\n\n\tthrow new ParseError({\n\t\tmessage: `Invalid frontmatter in \"${file}\": ${issues}`,\n\t\tfile,\n\t\tcause: result.error,\n\t});\n}\n","import { SecurityError } from \"../errors/security-error.js\";\nimport { SecurityThreat } from \"../errors/security-threat.js\";\n\n/**\n * Keys that indicate prototype pollution attempts.\n * These keys must be stripped from any object built from untrusted parsed data.\n */\nconst POLLUTION_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\n/**\n * Options for {@link ContentSanitizer.sanitize}.\n */\nexport interface SanitizeOptions {\n\t/**\n\t * When `true`, throw a {@link SecurityError} instead of silently stripping\n\t * dangerous keys. Defaults to `false` (strip mode).\n\t */\n\treadonly strict?: boolean | undefined;\n}\n\n/**\n * Sanitizes parsed objects by removing prototype pollution keys.\n *\n * Any object built from untrusted data (YAML frontmatter, JSON configs, etc.)\n * should pass through this sanitizer before use.\n */\nexport const ContentSanitizer = {\n\t/**\n\t * Recursively removes prototype pollution keys from a parsed object.\n\t *\n\t * Returns a new object created with `Object.create(null)` to prevent\n\t * any prototype chain access. Arrays are deeply sanitized but remain arrays.\n\t * Primitive values are returned as-is.\n\t *\n\t * @param input - The untrusted parsed data to sanitize.\n\t * @param options - Optional configuration. Set `strict: true` to throw on pollution keys.\n\t * @returns A sanitized deep copy of the input with no prototype pollution keys.\n\t * @throws {SecurityError} With `PROTOTYPE_POLLUTION` threat if `strict` is `true` and a pollution key is found.\n\t *\n\t * @example\n\t * ```ts\n\t * const dirty = JSON.parse(untrustedJson);\n\t * const clean = ContentSanitizer.sanitize(dirty);\n\t * ```\n\t */\n\tsanitize(input: unknown, options?: SanitizeOptions): unknown {\n\t\treturn sanitizeValue(input, options?.strict === true);\n\t},\n\n\t/**\n\t * Checks whether an object contains any prototype pollution keys at any depth.\n\t *\n\t * @param input - The value to inspect.\n\t * @returns `true` if pollution keys were found, `false` otherwise.\n\t */\n\thasPollutionKeys(input: unknown): boolean {\n\t\treturn detectPollutionKeys(input);\n\t},\n} as const;\n\n/**\n * Recursively sanitizes a value, stripping or rejecting prototype pollution keys.\n *\n * @param value - The value to sanitize.\n * @param strict - Whether to throw on pollution keys.\n * @returns The sanitized value.\n */\nfunction sanitizeValue(value: unknown, strict: boolean): unknown {\n\tif (value === null || value === undefined) {\n\t\treturn value;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn sanitizeArray(value, strict);\n\t}\n\n\tif (typeof value === \"object\") {\n\t\treturn sanitizeObject(value as Record<string, unknown>, strict);\n\t}\n\n\t// Primitives pass through unchanged\n\treturn value;\n}\n\n/**\n * Sanitizes an array by deeply sanitizing each element.\n *\n * @param arr - The array to sanitize.\n * @param strict - Whether to throw on pollution keys.\n * @returns A new array with sanitized elements.\n */\nfunction sanitizeArray(arr: readonly unknown[], strict: boolean): unknown[] {\n\tconst result: unknown[] = [];\n\tfor (const item of arr) {\n\t\tresult.push(sanitizeValue(item, strict));\n\t}\n\treturn result;\n}\n\n/**\n * Sanitizes a plain object by creating a null-prototype copy without pollution keys.\n *\n * @param obj - The object to sanitize.\n * @param strict - Whether to throw on pollution keys.\n * @returns A new null-prototype object with sanitized values.\n */\nfunction sanitizeObject(obj: Record<string, unknown>, strict: boolean): Record<string, unknown> {\n\tconst result: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\n\tfor (const key of Object.keys(obj)) {\n\t\tif (POLLUTION_KEYS.has(key)) {\n\t\t\tif (strict) {\n\t\t\t\tthrow new SecurityError({\n\t\t\t\t\tthreat: SecurityThreat.PROTOTYPE_POLLUTION,\n\t\t\t\t\tmessage: `Object contains prototype pollution key \"${key}\"`,\n\t\t\t\t});\n\t\t\t}\n\t\t\t// In non-strict mode, silently skip the dangerous key\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult[key] = sanitizeValue(obj[key], strict);\n\t}\n\n\treturn result;\n}\n\n/**\n * Recursively checks whether a value contains any prototype pollution keys.\n *\n * @param value - The value to inspect.\n * @returns `true` if any pollution key is found at any depth.\n */\nfunction detectPollutionKeys(value: unknown): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn false;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.some((item) => detectPollutionKeys(item));\n\t}\n\n\tif (typeof value === \"object\") {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tfor (const key of Object.keys(obj)) {\n\t\t\tif (POLLUTION_KEYS.has(key)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (detectPollutionKeys(obj[key])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { SecurityError } from \"../errors/security-error.js\";\nimport { SecurityThreat } from \"../errors/security-threat.js\";\n\n/**\n * A branded type representing a filesystem path that has been validated\n * to be within the allowed project root boundary.\n *\n * Functions that perform filesystem operations should accept `ValidatedPath`\n * instead of `string` to enforce that all paths have been security-checked.\n */\nexport type ValidatedPath = string & { readonly __brand: unique symbol };\n\n/** Characters that are never allowed in user-supplied paths. */\nconst NULL_BYTE = \"\\0\";\n\n/** Prototype pollution keys that should never appear as path segments. */\nconst DANGEROUS_SEGMENTS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\n/**\n * Validates and resolves user-supplied file paths against a project root boundary.\n *\n * All external path inputs (CLI args, frontmatter, FILE_INDEX.md entries) must pass\n * through this validator before any filesystem operation.\n */\nexport const PathValidator = {\n\t/**\n\t * Resolves a user-supplied path relative to `projectRoot` and verifies it\n\t * stays within the root boundary.\n\t *\n\t * @param userPath - The untrusted path to validate (from CLI, config, or parsed files).\n\t * @param projectRoot - The absolute path to the project root directory.\n\t * @returns A `ValidatedPath` that is guaranteed to be within `projectRoot`.\n\t * @throws {SecurityError} With `PATH_TRAVERSAL` threat if:\n\t * - The path contains null bytes\n\t * - The path is absolute (must be relative to projectRoot)\n\t * - The path contains dangerous prototype pollution segments\n\t * - The resolved path escapes the projectRoot boundary\n\t */\n\tsafeResolvePath(userPath: string, projectRoot: string): ValidatedPath {\n\t\tassertNoNullBytes(userPath);\n\t\tassertRelativePath(userPath);\n\t\tassertNoDangerousSegments(userPath);\n\n\t\tconst resolvedRoot = resolveAndNormalizeRoot(projectRoot);\n\t\tconst resolvedPath = path.resolve(resolvedRoot, userPath);\n\n\t\tassertWithinBoundary(resolvedPath, resolvedRoot, userPath);\n\n\t\treturn resolvedPath as ValidatedPath;\n\t},\n\n\t/**\n\t * Resolves a user-supplied path and additionally verifies it exists on\n\t * the filesystem by resolving symlinks via `fs.realpathSync`.\n\t *\n\t * This catches symlink-based traversal attacks where a symlink inside the\n\t * project root points to a location outside of it.\n\t *\n\t * @param userPath - The untrusted path to validate.\n\t * @param projectRoot - The absolute path to the project root directory.\n\t * @returns A `ValidatedPath` with all symlinks resolved, guaranteed within `projectRoot`.\n\t * @throws {SecurityError} With `PATH_TRAVERSAL` threat if validation fails or symlink escapes boundary.\n\t */\n\tsafeResolveRealPath(userPath: string, projectRoot: string): ValidatedPath {\n\t\t// First do the basic validation\n\t\tconst validated = PathValidator.safeResolvePath(userPath, projectRoot);\n\n\t\t// Then resolve symlinks and re-check boundary\n\t\tconst resolvedRoot = resolveAndNormalizeRoot(projectRoot);\n\t\tlet realPath: string;\n\t\ttry {\n\t\t\trealPath = fs.realpathSync(validated);\n\t\t} catch {\n\t\t\tthrow new SecurityError({\n\t\t\t\tthreat: SecurityThreat.PATH_TRAVERSAL,\n\t\t\t\tmessage: `Path \"${userPath}\" does not exist or is not accessible`,\n\t\t\t});\n\t\t}\n\n\t\tassertWithinBoundary(realPath, resolvedRoot, userPath);\n\n\t\treturn realPath as ValidatedPath;\n\t},\n} as const;\n\n/**\n * Asserts that a path contains no null bytes.\n *\n * @param userPath - The path to check.\n * @throws {SecurityError} If null bytes are found.\n */\nfunction assertNoNullBytes(userPath: string): void {\n\tif (userPath.includes(NULL_BYTE)) {\n\t\tthrow new SecurityError({\n\t\t\tthreat: SecurityThreat.PATH_TRAVERSAL,\n\t\t\tmessage: \"Path contains null bytes\",\n\t\t});\n\t}\n}\n\n/**\n * Asserts that a path is relative (not absolute).\n *\n * @param userPath - The path to check.\n * @throws {SecurityError} If the path is absolute.\n */\nfunction assertRelativePath(userPath: string): void {\n\tif (path.isAbsolute(userPath)) {\n\t\tthrow new SecurityError({\n\t\t\tthreat: SecurityThreat.PATH_TRAVERSAL,\n\t\t\tmessage: \"Absolute paths are not allowed — use a path relative to the project root\",\n\t\t});\n\t}\n}\n\n/**\n * Asserts that no path segment is a prototype pollution key.\n *\n * @param userPath - The path to check.\n * @throws {SecurityError} If a dangerous segment is found.\n */\nfunction assertNoDangerousSegments(userPath: string): void {\n\tconst segments = userPath.split(path.sep);\n\tfor (const segment of segments) {\n\t\tif (DANGEROUS_SEGMENTS.has(segment)) {\n\t\t\tthrow new SecurityError({\n\t\t\t\tthreat: SecurityThreat.PATH_TRAVERSAL,\n\t\t\t\tmessage: `Path contains dangerous segment \"${segment}\"`,\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Resolves the project root to an absolute, normalized path with a trailing separator.\n * The trailing separator prevents prefix attacks (e.g., `/project-evil` matching `/project`).\n *\n * @param projectRoot - The project root to normalize.\n * @returns The resolved root path (without trailing separator for `path.resolve` compat).\n */\nfunction resolveAndNormalizeRoot(projectRoot: string): string {\n\treturn path.resolve(projectRoot);\n}\n\n/**\n * Asserts that a resolved path is within the project root boundary.\n * Uses trailing separator to prevent prefix attacks.\n *\n * @param resolvedPath - The fully resolved path.\n * @param resolvedRoot - The resolved project root.\n * @param userPath - The original user-supplied path (for error messages).\n * @throws {SecurityError} If the path is outside the boundary.\n */\nfunction assertWithinBoundary(resolvedPath: string, resolvedRoot: string, userPath: string): void {\n\t// The resolved path must either be exactly the root, or start with root + separator.\n\t// Appending separator to root prevents prefix attacks: /project vs /project-evil\n\tconst rootWithSep = resolvedRoot + path.sep;\n\tif (resolvedPath !== resolvedRoot && !resolvedPath.startsWith(rootWithSep)) {\n\t\tthrow new SecurityError({\n\t\t\tthreat: SecurityThreat.PATH_TRAVERSAL,\n\t\t\tmessage: `Path \"${userPath}\" resolves outside the project root`,\n\t\t});\n\t}\n}\n","/**\n * Atomic file writer that prevents partial writes and corruption.\n *\n * Wraps `write-file-atomic` to ensure every file write is atomic:\n * content is written to a temporary file first, then renamed to the target path.\n * If the process crashes mid-write, the original file remains intact.\n *\n * All writes go through {@link WriteGuard} for secret scanning before writing.\n *\n * @packageDocumentation\n */\n\nimport writeFileAtomicCallback from \"write-file-atomic\";\nimport type { WriteGuardOptions } from \"../guards/write-guard.js\";\nimport { WriteGuard } from \"../guards/write-guard.js\";\nimport type { ValidatedPath } from \"../validators/path-validator.js\";\n\n// write-file-atomic v7 exports .sync on the default export\nconst writeFileAtomicSync = writeFileAtomicCallback.sync;\n\n/** Default file mode for written files: owner rw, group r, others r. */\nconst DEFAULT_FILE_MODE = 0o644;\n\n/**\n * Options for {@link AtomicWriter.writeFile}.\n */\nexport interface AtomicWriteOptions {\n\t/**\n\t * File mode to set on the written file.\n\t * @defaultValue `0o644`\n\t */\n\treadonly mode?: number | undefined;\n\n\t/**\n\t * File encoding for the write.\n\t * @defaultValue `\"utf8\"`\n\t */\n\treadonly encoding?: BufferEncoding | undefined;\n\n\t/**\n\t * Secret scanning options passed to {@link WriteGuard}.\n\t * Set `strict: true` to block writes containing secrets.\n\t */\n\treadonly guard?: WriteGuardOptions | undefined;\n\n\t/**\n\t * Skip the WriteGuard secret scan entirely.\n\t * This should only be used for internal writes that are known-safe.\n\t * @defaultValue `false`\n\t */\n\treadonly skipGuard?: boolean | undefined;\n}\n\n/**\n * Result of an atomic write operation.\n */\nexport interface AtomicWriteResult {\n\t/** The validated path that was written to. */\n\treadonly path: ValidatedPath;\n\t/** Number of bytes written. */\n\treadonly bytesWritten: number;\n\t/** Any secret scan warnings from the WriteGuard. */\n\treadonly warnings: readonly import(\"../scanners/secret-scanner.js\").ScanResult[];\n}\n\n/**\n * Atomic file writer with integrated secret scanning.\n *\n * Every file write in dev-session must go through this writer.\n * It enforces:\n * 1. Secret scanning via {@link WriteGuard} (unless explicitly skipped)\n * 2. Atomic writes via `write-file-atomic` (write to .tmp, then rename)\n * 3. Consistent file permissions (`0o644` by default)\n */\nexport const AtomicWriter = {\n\t/**\n\t * Atomically writes content to a validated file path.\n\t *\n\t * The write is performed synchronously: content goes to a temporary file first,\n\t * then is renamed to the target. If anything fails, the original file is untouched.\n\t *\n\t * @param filePath - A {@link ValidatedPath} that has been security-checked.\n\t * @param content - The string content to write.\n\t * @param options - Optional write configuration.\n\t * @returns An {@link AtomicWriteResult} with the path, bytes written, and any warnings.\n\t * @throws {SecurityError} If strict mode is enabled and secrets are detected.\n\t * @throws {Error} If the underlying write operation fails.\n\t *\n\t * @example\n\t * ```ts\n\t * const validated = PathValidator.safeResolvePath(\"config.yml\", projectRoot);\n\t * const result = AtomicWriter.writeFile(validated, yamlContent);\n\t * ```\n\t */\n\twriteFile(\n\t\tfilePath: ValidatedPath,\n\t\tcontent: string,\n\t\toptions?: AtomicWriteOptions,\n\t): AtomicWriteResult {\n\t\tconst warnings = guardContent(content, options);\n\t\tconst bytesWritten = Buffer.byteLength(content, options?.encoding ?? \"utf8\");\n\n\t\ttry {\n\t\t\twriteFileAtomicSync(filePath, content, {\n\t\t\t\tmode: options?.mode ?? DEFAULT_FILE_MODE,\n\t\t\t\tencoding: options?.encoding ?? \"utf8\",\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\t// Re-throw with context but don't expose the full path\n\t\t\tthrow new Error(`Atomic write failed for file`, { cause: error });\n\t\t}\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tbytesWritten,\n\t\t\twarnings,\n\t\t};\n\t},\n\n\t/**\n\t * Atomically writes content to a validated file path (async version).\n\t *\n\t * @param filePath - A {@link ValidatedPath} that has been security-checked.\n\t * @param content - The string content to write.\n\t * @param options - Optional write configuration.\n\t * @returns A promise resolving to an {@link AtomicWriteResult}.\n\t * @throws {SecurityError} If strict mode is enabled and secrets are detected.\n\t * @throws {Error} If the underlying write operation fails.\n\t */\n\tasync writeFileAsync(\n\t\tfilePath: ValidatedPath,\n\t\tcontent: string,\n\t\toptions?: AtomicWriteOptions,\n\t): Promise<AtomicWriteResult> {\n\t\tconst warnings = guardContent(content, options);\n\t\tconst bytesWritten = Buffer.byteLength(content, options?.encoding ?? \"utf8\");\n\n\t\ttry {\n\t\t\tawait writeFileAtomicCallback(filePath, content, {\n\t\t\t\tmode: options?.mode ?? DEFAULT_FILE_MODE,\n\t\t\t\tencoding: options?.encoding ?? \"utf8\",\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tthrow new Error(`Atomic write failed for file`, { cause: error });\n\t\t}\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tbytesWritten,\n\t\t\twarnings,\n\t\t};\n\t},\n} as const;\n\n/**\n * Runs the WriteGuard check on content, returning any warnings.\n *\n * @param content - The content to scan.\n * @param options - Write options containing guard configuration.\n * @returns Array of scan result warnings (empty if no secrets or guard skipped).\n * @throws {SecurityError} If guard is in strict mode and secrets are detected.\n */\nfunction guardContent(\n\tcontent: string,\n\toptions?: AtomicWriteOptions,\n): readonly import(\"../scanners/secret-scanner.js\").ScanResult[] {\n\tif (options?.skipGuard === true) {\n\t\treturn [];\n\t}\n\n\tconst guardResult = WriteGuard.check(content, options?.guard);\n\treturn guardResult.results;\n}\n","/**\n * @dev-session/security\n *\n * Security primitives for dev-session.\n * Zero internal dependencies. Built and tested first.\n *\n * @packageDocumentation\n */\n\n// Error types\nexport type {\n\tCliErrorOptions,\n\tParseErrorOptions,\n\tSecurityErrorOptions,\n} from \"./errors/index.js\";\nexport {\n\tCliError,\n\tisCliError,\n\tisParseError,\n\tisSecurityError,\n\tParseError,\n\tSecurityError,\n\tSecurityThreat,\n} from \"./errors/index.js\";\n// Guards\nexport type {\n\tWriteGuardOptions,\n\tWriteGuardResult,\n} from \"./guards/write-guard.js\";\nexport { WriteGuard } from \"./guards/write-guard.js\";\n// Parsers\nexport type {\n\tFrontmatterParseOptions,\n\tParsedFrontmatter,\n} from \"./parsers/frontmatter-parser.js\";\nexport { FrontmatterParser } from \"./parsers/frontmatter-parser.js\";\n// Sanitizers\nexport type { SanitizeOptions } from \"./sanitizers/content-sanitizer.js\";\nexport { ContentSanitizer } from \"./sanitizers/content-sanitizer.js\";\n\n// Scanners\nexport type { ScanResult } from \"./scanners/secret-scanner.js\";\nexport { SecretScanner } from \"./scanners/secret-scanner.js\";\n// Validators\nexport type { ValidatedPath } from \"./validators/path-validator.js\";\nexport { PathValidator } from \"./validators/path-validator.js\";\n\n// Writers\nexport type {\n\tAtomicWriteOptions,\n\tAtomicWriteResult,\n} from \"./writers/atomic-writer.js\";\nexport { AtomicWriter } from \"./writers/atomic-writer.js\";\n\n/** Package version identifier. */\nexport const SECURITY_VERSION = \"0.0.0\" as const;\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n","export {};\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","import * as z from \"./v4/classic/external.js\";\nexport * from \"./v4/classic/external.js\";\nexport { z };\nexport default z;\n","/**\n * @dev-session/core\n *\n * Business logic for dev-session. Data model, file managers, validators.\n * No CLI dependencies — this is a pure library.\n *\n * @packageDocumentation\n */\n\n// Re-export security types that consumers need\nexport {\n\tCliError,\n\tParseError,\n\tSecurityError,\n} from \"@dev-session/security\";\n// Adapter interface and context types\nexport type {\n\tAdapter,\n\tAdapterReadFile,\n\tAdapterSetupContext,\n\tAdapterSetupResult,\n\tAdapterWriteFile,\n\tSessionLifecycleContext,\n\tTransformStateContext,\n} from \"./adapters/adapter.js\";\n// Calculators\nexport { ContextBudgetCalculator } from \"./calculators/context-budget-calculator.js\";\nexport type {\n\tHealthIssue,\n\tHealthReport,\n\tHealthSeverityValue,\n} from \"./checkers/health-checker.js\";\n// Checkers\nexport { HealthChecker, HealthSeverity } from \"./checkers/health-checker.js\";\nexport type { TokenCounterInstance } from \"./counters/token-counter.js\";\n// Counters\nexport { TokenCounter } from \"./counters/token-counter.js\";\nexport type {\n\tMonorepoInfo,\n\tMonorepoType,\n\tWorkspacePackage,\n} from \"./detectors/monorepo-detector.js\";\nexport { MonorepoDetector } from \"./detectors/monorepo-detector.js\";\n// Detectors\nexport { ProjectDetector } from \"./detectors/project-detector.js\";\n// Types for bootstrap formatters\nexport type { BootstrapContext, BootstrapFormatter } from \"./formatters/bootstrap-formatter.js\";\n// Formatter utilities (shared across all formatter implementations)\nexport {\n\tDEFAULT_MAX_NEXT_TASKS,\n\tDEFAULT_MAX_NOTES,\n\tDEFAULT_MAX_PROMPT_LINES,\n\tformatBudgetLine,\n\tformatChunkProgress,\n\tformatCompletedChunksSummary,\n\tgetPendingTasks,\n\ttrimToMaxLines,\n} from \"./formatters/formatter-utils.js\";\n// Bootstrap formatters\nexport { PlainTextFormatter } from \"./formatters/plain-text-formatter.js\";\nexport { FILE_INDEX_PAGE_SIZE, FileIndexManager } from \"./managers/file-index-manager.js\";\nexport { NextPromptWriter } from \"./managers/next-prompt-writer.js\";\nexport { PlanChunkManager } from \"./managers/plan-chunk-manager.js\";\nexport { RoutinesWriter } from \"./managers/routines-writer.js\";\n// Managers\nexport { SessionStateManager } from \"./managers/session-state-manager.js\";\n// Parsers\nexport { PlanParser } from \"./parsers/plan-parser.js\";\nexport type {\n\tAdapterConfig,\n\tAuditResult,\n\tBoundaryResult,\n\tContextBudget,\n\tContextBudgetBreakdown,\n\tContextBudgetSummary,\n\tDetectedToolValue,\n\tDirectoryGroup,\n\tExternalTokenCounter,\n\tFileIndexEntry,\n\tNextPrompt,\n\tPlanChunk,\n\tProjectInfo,\n\tProjectTypeValue,\n\tSessionState,\n\tTask,\n\tTaskStatusValue,\n\tTokenBudget,\n\tTokenCostMap,\n\tTokenCountResult,\n\tValidationResult,\n\tWalkedFile,\n\tWalkOptions,\n} from \"./schemas/index.js\";\n// Schemas and types\nexport {\n\tAdapterConfigSchema,\n\tContextBudgetSummarySchema,\n\tDEFAULT_CONTEXT_BUDGET,\n\tDetectedTool,\n\tFileIndexEntrySchema,\n\tMAX_PROMPT_LINES,\n\tNextPromptSchema,\n\tPlanChunkSchema,\n\tProjectInfoSchema,\n\tProjectType,\n\tSessionStateSchema,\n\tTaskSchema,\n\tTaskStatus,\n\tTaskStatusSchema,\n} from \"./schemas/index.js\";\n\n// Walkers\nexport { GitignoreAwareWalker } from \"./walkers/gitignore-aware-walker.js\";\n","import { z } from \"zod\";\n\n/**\n * Default context budget in estimated tokens.\n *\n * This caps the token cost of the *generated bootstrap context* that\n * `dev-session` produces (SESSION_STATE summary, plan chunk summary,\n * always-include file references, and context file metadata). It is\n * **not** the full AI context window — source files listed in the\n * bootstrap are loaded separately by the AI.\n *\n * Measured against this project's own bootstrap:\n * - SESSION_STATE metadata: ~50–150 tokens (YAML frontmatter + task list)\n * - Plan chunk summary: ~100–300 tokens (title + task markdown)\n * - Always-include refs: ~200–400 tokens (CLAUDE.md, SESSION_STATE.md paths)\n * - File index metadata: ~50–100 tokens per file (path + purpose + chunk tags)\n *\n * A typical 10-file chunk generates ~1,500–2,500 bootstrap tokens.\n * 4,000 provides ~60% headroom for larger chunks before triggering\n * an over-budget warning. Projects can override via `budgetCap` param.\n *\n * When accurate counting is available (via {@link TokenCounter}),\n * this default may be adjusted — but the heuristic estimate validated\n * here is within ±15% of real Claude tokenizer output for English\n * text and TypeScript source code.\n */\nexport const DEFAULT_CONTEXT_BUDGET = 4000;\n\n/**\n * Breakdown of token costs by category within a context budget.\n */\nexport interface ContextBudgetBreakdown {\n\t/** Estimated tokens for the SESSION_STATE.md file. */\n\treadonly sessionState: number;\n\t/** Estimated tokens for the active plan chunk file. */\n\treadonly planChunk: number;\n\t/** Per-file token estimates for context files (keyed by filepath). */\n\treadonly files: ReadonlyMap<string, number>;\n\t/** Estimated tokens for always-include files. */\n\treadonly alwaysInclude: number;\n}\n\n/**\n * Zod schema for a serializable context budget summary.\n *\n * Used when persisting budget data to NEXT_PROMPT.md or status output.\n */\nexport const ContextBudgetSummarySchema = z\n\t.object({\n\t\t/** Total estimated token cost for the current context. */\n\t\ttotal_tokens: z.number().int().min(0),\n\t\t/** The configured budget cap. */\n\t\tbudget_cap: z.number().int().min(1),\n\t\t/** Whether the current context exceeds the budget cap. */\n\t\tover_budget: z.boolean(),\n\t\t/** Number of files included in the estimate. */\n\t\tfile_count: z.number().int().min(0),\n\t\t/** Whether all counts used an accurate tokenizer (false = heuristic). */\n\t\taccurate: z.boolean().optional(),\n\t})\n\t.strict();\n\n/**\n * A serializable summary of the context budget.\n */\nexport type ContextBudgetSummary = z.infer<typeof ContextBudgetSummarySchema>;\n\n/**\n * Full context budget result returned by the calculator.\n */\nexport interface ContextBudget {\n\t/** Total estimated token cost across all loaded context. */\n\treadonly totalTokens: number;\n\t/** Detailed per-category breakdown. */\n\treadonly breakdown: ContextBudgetBreakdown;\n\t/** Whether the total exceeds the configured budget cap. */\n\treadonly overBudget: boolean;\n\t/** The configured budget cap in tokens. */\n\treadonly budgetCap: number;\n\t/**\n\t * Whether all token counts in this budget came from an accurate tokenizer.\n\t *\n\t * `false` when any file (or the session state / plan chunk estimates) used\n\t * the character-based heuristic. Consumers can use this to display a\n\t * \"~ approximate\" qualifier in budget summaries.\n\t *\n\t * Defaults to `false` for backward compatibility with callers that do not\n\t * provide a {@link TokenCounterInstance}.\n\t */\n\treadonly accurate: boolean;\n}\n","/**\n * Calculates the estimated token budget for a session's context window.\n *\n * Aggregates token costs from:\n * 1. SESSION_STATE.md (estimated from state content size)\n * 2. The active plan chunk (estimated from markdown size)\n * 3. Chunk-tagged files (from {@link FileIndexEntry.token_cost} or live estimation)\n * 4. Always-include files (from {@link FileIndexEntry.token_cost} or live estimation)\n *\n * Uses the heuristic of ~4 bytes per token for English text / code.\n *\n * @packageDocumentation\n */\n\nimport type { ContextBudget, ContextBudgetBreakdown } from \"../schemas/context-budget.js\";\nimport { DEFAULT_CONTEXT_BUDGET } from \"../schemas/context-budget.js\";\nimport type { FileIndexEntry, PlanChunk, SessionState } from \"../schemas/index.js\";\n\n/** Bytes-per-token heuristic for English text and code. */\nconst BYTES_PER_TOKEN = 4;\n\n/**\n * Estimates token count from a string's byte length.\n *\n * @param content - The string to estimate.\n * @returns Estimated token count.\n */\nfunction estimateTokensFromString(content: string): number {\n\tconst byteLength = Buffer.byteLength(content, \"utf-8\");\n\treturn Math.ceil(byteLength / BYTES_PER_TOKEN);\n}\n\n/**\n * Estimates token cost for session state by serializing it to a rough size estimate.\n *\n * Counts the string lengths of key fields rather than re-serializing to avoid\n * importing the YAML serializer.\n *\n * @param state - The current session state.\n * @returns Estimated token count.\n */\nfunction estimateSessionStateTokens(state: SessionState): number {\n\tlet charCount = 0;\n\n\t// Frontmatter overhead\n\tcharCount += 50; // delimiters + fixed fields\n\n\t// Tasks\n\tfor (const task of state.tasks) {\n\t\tcharCount += task.text.length + 30; // status, dates, YAML syntax\n\t}\n\n\t// Notes\n\tfor (const note of state.notes) {\n\t\tcharCount += note.length + 10;\n\t}\n\n\t// Last worked files\n\tfor (const file of state.last_worked_files) {\n\t\tcharCount += file.length + 10;\n\t}\n\n\t// Completed chunks\n\tcharCount += Object.keys(state.completed_chunks).length * 25;\n\n\treturn Math.ceil(charCount / BYTES_PER_TOKEN);\n}\n\n/**\n * Estimates token cost for a plan chunk by measuring its content.\n *\n * @param chunk - The active plan chunk.\n * @returns Estimated token count.\n */\nfunction estimatePlanChunkTokens(chunk: PlanChunk): number {\n\tlet charCount = 0;\n\n\t// Frontmatter\n\tcharCount += 80; // delimiters + chunk_id + title + depends_on\n\n\tcharCount += chunk.title.length;\n\n\t// Tasks\n\tfor (const task of chunk.tasks) {\n\t\tcharCount += task.text.length + 30;\n\t}\n\n\treturn Math.ceil(charCount / BYTES_PER_TOKEN);\n}\n\n/**\n * Builds the per-file token breakdown from file index entries.\n *\n * Uses the entry's `token_cost` field if populated, otherwise falls back\n * to a conservative estimate based on a default file size.\n *\n * @param files - The file index entries for context files.\n * @param defaultTokenCost - Fallback token cost when entry has no estimate.\n * @returns A map of filepath to estimated token cost.\n */\nfunction buildFileBreakdown(\n\tfiles: readonly FileIndexEntry[],\n\tdefaultTokenCost: number,\n): ReadonlyMap<string, number> {\n\tconst breakdown = new Map<string, number>();\n\n\tfor (const entry of files) {\n\t\tconst cost = entry.token_cost ?? defaultTokenCost;\n\t\tbreakdown.set(entry.filepath, cost);\n\t}\n\n\treturn breakdown;\n}\n\n/**\n * Calculates the context budget for a session.\n *\n * Produces a full breakdown of estimated token costs and determines\n * whether the total exceeds the configured budget cap.\n */\nexport const ContextBudgetCalculator = {\n\t/**\n\t * Estimates the total token budget for the current session context.\n\t *\n\t * @param state - The current session state.\n\t * @param chunk - The active plan chunk.\n\t * @param chunkFiles - File index entries tagged to the active chunk.\n\t * @param alwaysIncludeFiles - File index entries tagged as always-include.\n\t * @param budgetCap - The maximum token budget (defaults to {@link DEFAULT_CONTEXT_BUDGET}).\n\t * @returns A {@link ContextBudget} with total, breakdown, and over-budget status.\n\t */\n\testimate(\n\t\tstate: SessionState,\n\t\tchunk: PlanChunk,\n\t\tchunkFiles: readonly FileIndexEntry[],\n\t\talwaysIncludeFiles: readonly FileIndexEntry[],\n\t\tbudgetCap?: number,\n\t): ContextBudget {\n\t\tconst cap = budgetCap ?? DEFAULT_CONTEXT_BUDGET;\n\n\t\tconst sessionStateTokens = estimateSessionStateTokens(state);\n\t\tconst planChunkTokens = estimatePlanChunkTokens(chunk);\n\n\t\t// Default per-file cost when no token_cost is populated: ~50 tokens (200 bytes)\n\t\tconst DEFAULT_FILE_TOKEN_COST = 50;\n\n\t\tconst fileBreakdown = buildFileBreakdown(chunkFiles, DEFAULT_FILE_TOKEN_COST);\n\t\tconst alwaysIncludeBreakdown = buildFileBreakdown(alwaysIncludeFiles, DEFAULT_FILE_TOKEN_COST);\n\n\t\tlet filesTotal = 0;\n\t\tfor (const cost of fileBreakdown.values()) {\n\t\t\tfilesTotal += cost;\n\t\t}\n\n\t\tlet alwaysIncludeTotal = 0;\n\t\tfor (const cost of alwaysIncludeBreakdown.values()) {\n\t\t\talwaysIncludeTotal += cost;\n\t\t}\n\n\t\tconst totalTokens = sessionStateTokens + planChunkTokens + filesTotal + alwaysIncludeTotal;\n\n\t\tconst breakdown: ContextBudgetBreakdown = {\n\t\t\tsessionState: sessionStateTokens,\n\t\t\tplanChunk: planChunkTokens,\n\t\t\tfiles: fileBreakdown,\n\t\t\talwaysInclude: alwaysIncludeTotal,\n\t\t};\n\n\t\treturn {\n\t\t\ttotalTokens,\n\t\t\tbreakdown,\n\t\t\toverBudget: totalTokens > cap,\n\t\t\tbudgetCap: cap,\n\t\t\taccurate: false,\n\t\t};\n\t},\n\n\t/**\n\t * Estimates token cost for a raw string content.\n\t *\n\t * Useful for ad-hoc estimation of arbitrary content.\n\t *\n\t * @param content - The string to estimate.\n\t * @returns Estimated token count.\n\t */\n\testimateFromString(content: string): number {\n\t\treturn estimateTokensFromString(content);\n\t},\n\n\t/**\n\t * Formats a context budget as a human-readable summary string.\n\t *\n\t * @param budget - The calculated context budget.\n\t * @returns A multi-line summary suitable for status output or NEXT_PROMPT.\n\t */\n\tformatSummary(budget: ContextBudget): string {\n\t\tconst status = budget.overBudget ? \"OVER BUDGET\" : \"within budget\";\n\t\tconst prefix = budget.accurate ? \"\" : \"~\";\n\t\tconst lines: string[] = [\n\t\t\t`Context budget: ${prefix}${String(budget.totalTokens)} / ${String(budget.budgetCap)} tokens (${status})`,\n\t\t];\n\n\t\tif (!budget.accurate) {\n\t\t\tlines.push(\" (approximate — using heuristic token estimates)\");\n\t\t}\n\n\t\tlines.push(` SESSION_STATE ${prefix}${String(budget.breakdown.sessionState)} tokens`);\n\t\tlines.push(` Plan chunk ${prefix}${String(budget.breakdown.planChunk)} tokens`);\n\t\tlines.push(` Always-include ${prefix}${String(budget.breakdown.alwaysInclude)} tokens`);\n\n\t\tlet filesTotal = 0;\n\t\tfor (const cost of budget.breakdown.files.values()) {\n\t\t\tfilesTotal += cost;\n\t\t}\n\t\tlines.push(\n\t\t\t` Context files ${prefix}${String(filesTotal)} tokens (${String(budget.breakdown.files.size)} files)`,\n\t\t);\n\n\t\treturn lines.join(\"\\n\");\n\t},\n} as const;\n","/**\n * Session health checking for dev-session.\n *\n * Audits `.session/` for structural issues and returns a {@link HealthReport}.\n * All issues carry machine-readable {@link HealthIssue.code} values so the CLI\n * can selectively auto-remediate them with `--fix`.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type { ValidatedPath } from \"@dev-session/security\";\n\nimport { ContextBudgetCalculator } from \"../calculators/context-budget-calculator.js\";\nimport { FILE_INDEX_PAGE_SIZE, FileIndexManager } from \"../managers/file-index-manager.js\";\nimport { PlanChunkManager } from \"../managers/plan-chunk-manager.js\";\nimport { SessionStateManager } from \"../managers/session-state-manager.js\";\nimport type { FileIndexEntry, PlanChunk, SessionState } from \"../schemas/index.js\";\nimport { MAX_PROMPT_LINES, TaskStatus } from \"../schemas/index.js\";\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\n/** Severity levels for health issues. */\nexport const HealthSeverity = {\n\tERROR: \"error\",\n\tWARNING: \"warning\",\n\tINFO: \"info\",\n} as const;\n\n/** A single severity value. */\nexport type HealthSeverityValue = (typeof HealthSeverity)[keyof typeof HealthSeverity];\n\n/** A single detected health issue. */\nexport interface HealthIssue {\n\t/** Severity of this issue. */\n\treadonly severity: HealthSeverityValue;\n\t/** Machine-readable code for programmatic handling (e.g. `--fix`). */\n\treadonly code: string;\n\t/** Human-readable description. */\n\treadonly message: string;\n\t/** Whether the CLI can auto-remediate this issue. */\n\treadonly fixable: boolean;\n}\n\n/** Summary of a full health audit. */\nexport interface HealthReport {\n\t/** True only when errorCount === 0 and warningCount === 0. */\n\treadonly healthy: boolean;\n\t/** Number of ERROR-severity issues. */\n\treadonly errorCount: number;\n\t/** Number of WARNING-severity issues. */\n\treadonly warningCount: number;\n\t/** Number of INFO-severity issues. */\n\treadonly infoCount: number;\n\t/** Total number of checks performed. */\n\treadonly checksRun: number;\n\t/** All detected issues in the order they were discovered. */\n\treadonly issues: readonly HealthIssue[];\n\t/**\n\t * Stale FILE_INDEX entries (files that no longer exist on disk).\n\t * Populated when the STALE_INDEX_ENTRIES issue is present; needed by `--fix`.\n\t */\n\treadonly staleEntries: readonly FileIndexEntry[];\n\t/**\n\t * NEXT_PROMPT.md line count, or `undefined` if the file is unreadable.\n\t * Populated for the PROMPT_TOO_LONG / PROMPT_MISSING issues.\n\t */\n\treadonly promptLineCount: number | undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Runs a full health audit of the `.session/` directory.\n *\n * Checks performed (in order):\n * 1. SESSION_STATE.md is present and valid\n * 2. Active PLAN_N.md exists\n * 3. FILE_INDEX.md is present, parseable, and not stale\n * 4. Always-include entry count (≤ 4 recommended)\n * 5. Context budget (within cap)\n * 6. Active chunk task completion status\n * 7. NEXT_PROMPT.md line count (≤ MAX_PROMPT_LINES)\n * 8. Session staleness (last_updated within 7 days)\n */\nexport const HealthChecker = {\n\t/**\n\t * Audit the session directory and return a structured report.\n\t *\n\t * @param sessionDir - Validated path to `.session/`\n\t * @returns A {@link HealthReport} with all detected issues\n\t */\n\taudit(sessionDir: ValidatedPath): HealthReport {\n\t\tconst issues: HealthIssue[] = [];\n\t\tlet staleEntries: readonly FileIndexEntry[] = [];\n\t\tlet promptLineCount: number | undefined;\n\t\tlet checksRun = 0;\n\n\t\t// 1. SESSION_STATE.md\n\t\tchecksRun++;\n\t\tconst state = safeLoad(() => SessionStateManager.load(sessionDir));\n\t\tif (state === null) {\n\t\t\tissues.push(\n\t\t\t\tmakeIssue(\n\t\t\t\t\tHealthSeverity.ERROR,\n\t\t\t\t\t\"SESSION_STATE_INVALID\",\n\t\t\t\t\t\"SESSION_STATE.md is unreadable or invalid\",\n\t\t\t\t\tfalse,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn buildReport(issues, staleEntries, promptLineCount, checksRun);\n\t\t}\n\n\t\t// 2. Active plan file\n\t\tchecksRun++;\n\t\tissues.push(...checkPlanFile(sessionDir, state.active_chunk));\n\n\t\t// 3-6. FILE_INDEX + budget + task completion\n\t\tchecksRun++;\n\t\tconst indexResult = checkFileIndex(sessionDir, state);\n\t\tissues.push(...indexResult.issues);\n\t\tstaleEntries = indexResult.staleEntries;\n\t\tchecksRun += indexResult.extraChecks;\n\n\t\t// 7. NEXT_PROMPT.md\n\t\tchecksRun++;\n\t\tconst promptResult = checkPrompt(sessionDir);\n\t\tissues.push(...promptResult.issues);\n\t\tpromptLineCount = promptResult.lineCount;\n\n\t\t// 8. Staleness\n\t\tchecksRun++;\n\t\tissues.push(...checkStaleness(state.last_updated));\n\n\t\treturn buildReport(issues, staleEntries, promptLineCount, checksRun);\n\t},\n} as const;\n\n// ---------------------------------------------------------------------------\n// Internal: per-check helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Check that the active PLAN_N.md exists.\n *\n * @param sessionDir - Path to .session/\n * @param activeChunk - The active chunk ID\n * @returns Array of issues (empty if healthy)\n */\nfunction checkPlanFile(sessionDir: string, activeChunk: number): HealthIssue[] {\n\tconst planPath = path.join(sessionDir, `PLAN_${String(activeChunk)}.md`);\n\tif (!fs.existsSync(planPath)) {\n\t\treturn [\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.ERROR,\n\t\t\t\t\"PLAN_MISSING\",\n\t\t\t\t`PLAN_${String(activeChunk)}.md not found — active chunk ${String(activeChunk)} has no plan file`,\n\t\t\t\tfalse,\n\t\t\t),\n\t\t];\n\t}\n\treturn [];\n}\n\n/**\n * Internal result from the FILE_INDEX check block.\n */\ninterface IndexCheckResult {\n\treadonly issues: readonly HealthIssue[];\n\treadonly staleEntries: readonly FileIndexEntry[];\n\treadonly extraChecks: number;\n}\n\n/**\n * Check FILE_INDEX.md: parseability, stale entries, missing chunks,\n * always-include count, context budget, and task completion.\n *\n * @param sessionDir - Validated path to .session/\n * @param state - The loaded session state\n * @returns Issues, stale entries, and count of extra checks performed\n */\nfunction checkFileIndex(sessionDir: ValidatedPath, state: SessionState): IndexCheckResult {\n\tconst issues: HealthIssue[] = [];\n\tlet staleEntries: readonly FileIndexEntry[] = [];\n\tlet extraChecks = 0;\n\n\tconst entries = safeLoad(() => FileIndexManager.load(sessionDir));\n\tif (entries === null) {\n\t\tissues.push(\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.ERROR,\n\t\t\t\t\"FILE_INDEX_INVALID\",\n\t\t\t\t\"FILE_INDEX.md is unreadable or malformed\",\n\t\t\t\tfalse,\n\t\t\t),\n\t\t);\n\t\treturn { issues, staleEntries, extraChecks };\n\t}\n\n\t// Stale entries + missing chunks\n\tconst audit = FileIndexManager.audit(entries, sessionDir);\n\tif (audit.stale.length > 0) {\n\t\tstaleEntries = audit.stale;\n\t\tissues.push(\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.WARNING,\n\t\t\t\t\"STALE_INDEX_ENTRIES\",\n\t\t\t\t`${String(audit.stale.length)} FILE_INDEX entr${audit.stale.length === 1 ? \"y\" : \"ies\"} point to files that no longer exist`,\n\t\t\t\ttrue,\n\t\t\t),\n\t\t);\n\t}\n\tif (audit.missingChunks.length > 0) {\n\t\tissues.push(\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.WARNING,\n\t\t\t\t\"MISSING_CHUNK_FILES\",\n\t\t\t\t`Missing plan files: ${audit.missingChunks.map((id) => `PLAN_${String(id)}.md`).join(\", \")}`,\n\t\t\t\tfalse,\n\t\t\t),\n\t\t);\n\t}\n\n\t// Large FILE_INDEX warning (pagination hint)\n\tif (entries.length > FILE_INDEX_PAGE_SIZE) {\n\t\tissues.push(\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.INFO,\n\t\t\t\t\"FILE_INDEX_LARGE\",\n\t\t\t\t`FILE_INDEX has ${String(entries.length)} entries (> ${String(FILE_INDEX_PAGE_SIZE)}) — consider using --max-files on init or splitting chunks`,\n\t\t\t\tfalse,\n\t\t\t),\n\t\t);\n\t}\n\n\t// Always-include creep\n\textraChecks++;\n\tconst alwaysInclude = FileIndexManager.alwaysInclude(entries);\n\tif (alwaysInclude.length > 4) {\n\t\tissues.push(\n\t\t\tmakeIssue(\n\t\t\t\tHealthSeverity.WARNING,\n\t\t\t\t\"ALWAYS_INCLUDE_CREEP\",\n\t\t\t\t`always-include list has ${String(alwaysInclude.length)} files (recommend ≤ 4)`,\n\t\t\t\tfalse,\n\t\t\t),\n\t\t);\n\t}\n\n\t// Budget + task completion (needs the active chunk)\n\textraChecks++;\n\tconst chunk = safeLoad(() => PlanChunkManager.loadActive(sessionDir, state));\n\tif (chunk !== null) {\n\t\tissues.push(...checkBudget(state, chunk, entries, alwaysInclude));\n\t\tissues.push(...checkTaskCompletion(chunk));\n\t}\n\n\treturn { issues, staleEntries, extraChecks };\n}\n\n/**\n * Check whether the context budget is exceeded.\n *\n * @param state - Session state\n * @param chunk - Active plan chunk\n * @param entries - All FILE_INDEX entries\n * @param alwaysInclude - Always-include entries\n * @returns Array of issues\n */\nfunction checkBudget(\n\tstate: SessionState,\n\tchunk: PlanChunk,\n\tentries: readonly FileIndexEntry[],\n\talwaysInclude: readonly FileIndexEntry[],\n): HealthIssue[] {\n\tconst chunkFiles = FileIndexManager.queryByChunk(entries, state.active_chunk);\n\tconst budget = ContextBudgetCalculator.estimate(state, chunk, chunkFiles, alwaysInclude);\n\tif (!budget.overBudget) return [];\n\treturn [\n\t\tmakeIssue(\n\t\t\tHealthSeverity.WARNING,\n\t\t\t\"BUDGET_EXCEEDED\",\n\t\t\t`Context budget exceeded: ~${String(budget.totalTokens)} / ${String(budget.budgetCap)} tokens — remove large files or split the chunk`,\n\t\t\tfalse,\n\t\t),\n\t];\n}\n\n/**\n * Check whether all tasks are done but the chunk hasn't been advanced.\n *\n * @param chunk - The active plan chunk\n * @returns Array of issues\n */\nfunction checkTaskCompletion(chunk: PlanChunk): HealthIssue[] {\n\tconst allDone = chunk.tasks.length > 0 && chunk.tasks.every((t) => t.status === TaskStatus.DONE);\n\tif (!allDone) return [];\n\treturn [\n\t\tmakeIssue(\n\t\t\tHealthSeverity.INFO,\n\t\t\t\"ALL_TASKS_DONE\",\n\t\t\t\"All tasks in active chunk are done — run `dev-session advance` to move to the next chunk\",\n\t\t\tfalse,\n\t\t),\n\t];\n}\n\n/**\n * Internal result from the NEXT_PROMPT.md check.\n */\ninterface PromptCheckResult {\n\treadonly issues: readonly HealthIssue[];\n\treadonly lineCount: number | undefined;\n}\n\n/**\n * Check NEXT_PROMPT.md for existence and line count.\n *\n * @param sessionDir - Path to .session/\n * @returns Issues and line count\n */\nfunction checkPrompt(sessionDir: string): PromptCheckResult {\n\tconst promptPath = path.join(sessionDir, \"NEXT_PROMPT.md\");\n\tif (!fs.existsSync(promptPath)) {\n\t\treturn {\n\t\t\tissues: [\n\t\t\t\tmakeIssue(\n\t\t\t\t\tHealthSeverity.WARNING,\n\t\t\t\t\t\"PROMPT_MISSING\",\n\t\t\t\t\t\"NEXT_PROMPT.md does not exist — run `dev-session update` to regenerate\",\n\t\t\t\t\tfalse,\n\t\t\t\t),\n\t\t\t],\n\t\t\tlineCount: undefined,\n\t\t};\n\t}\n\n\tconst content = safeLoad(() => fs.readFileSync(promptPath, \"utf-8\"));\n\tif (content === null) {\n\t\treturn { issues: [], lineCount: undefined };\n\t}\n\n\tconst lineCount = content.split(\"\\n\").length;\n\tif (lineCount > MAX_PROMPT_LINES) {\n\t\treturn {\n\t\t\tissues: [\n\t\t\t\tmakeIssue(\n\t\t\t\t\tHealthSeverity.WARNING,\n\t\t\t\t\t\"PROMPT_TOO_LONG\",\n\t\t\t\t\t`NEXT_PROMPT.md has ${String(lineCount)} lines (max ${String(MAX_PROMPT_LINES)}) — run \\`dev-session update\\` to regenerate`,\n\t\t\t\t\tfalse,\n\t\t\t\t),\n\t\t\t],\n\t\t\tlineCount,\n\t\t};\n\t}\n\n\treturn { issues: [], lineCount };\n}\n\n/**\n * Check whether the session was updated recently (within 7 days).\n *\n * @param lastUpdated - ISO date string from session state\n * @returns Array of issues\n */\nfunction checkStaleness(lastUpdated: string): HealthIssue[] {\n\tconst date = new Date(lastUpdated);\n\tif (Number.isNaN(date.getTime())) return [];\n\n\tconst diffDays = Math.floor((Date.now() - date.getTime()) / (1000 * 60 * 60 * 24));\n\tif (diffDays <= 7) return [];\n\n\treturn [\n\t\tmakeIssue(\n\t\t\tHealthSeverity.INFO,\n\t\t\t\"SESSION_STALE\",\n\t\t\t`Session not updated in ${String(diffDays)} days (last: ${lastUpdated})`,\n\t\t\tfalse,\n\t\t),\n\t];\n}\n\n// ---------------------------------------------------------------------------\n// Internal: utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Safely call a loader function, returning null on any thrown error.\n *\n * @param fn - A function that may throw\n * @returns The return value, or null if an error was thrown\n */\nfunction safeLoad<T>(fn: () => T): T | null {\n\ttry {\n\t\treturn fn();\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Construct a {@link HealthIssue}.\n *\n * @param severity - Issue severity\n * @param code - Machine-readable code\n * @param message - Human-readable message\n * @param fixable - Whether --fix can remediate this\n * @returns A HealthIssue object\n */\nfunction makeIssue(\n\tseverity: HealthSeverityValue,\n\tcode: string,\n\tmessage: string,\n\tfixable: boolean,\n): HealthIssue {\n\treturn { severity, code, message, fixable };\n}\n\n/**\n * Assemble a {@link HealthReport} from collected issues.\n *\n * @param issues - All detected issues\n * @param staleEntries - Stale FILE_INDEX entries\n * @param promptLineCount - NEXT_PROMPT.md line count\n * @param checksRun - Total checks performed\n * @returns Complete HealthReport\n */\nfunction buildReport(\n\tissues: readonly HealthIssue[],\n\tstaleEntries: readonly FileIndexEntry[],\n\tpromptLineCount: number | undefined,\n\tchecksRun: number,\n): HealthReport {\n\tconst errorCount = issues.filter((i) => i.severity === HealthSeverity.ERROR).length;\n\tconst warningCount = issues.filter((i) => i.severity === HealthSeverity.WARNING).length;\n\tconst infoCount = issues.filter((i) => i.severity === HealthSeverity.INFO).length;\n\n\treturn {\n\t\thealthy: errorCount === 0 && warningCount === 0,\n\t\terrorCount,\n\t\twarningCount,\n\t\tinfoCount,\n\t\tchecksRun,\n\t\tissues,\n\t\tstaleEntries,\n\t\tpromptLineCount,\n\t};\n}\n","/**\n * Manages reading, writing, querying, and auditing the FILE_INDEX.md file.\n *\n * FILE_INDEX.md maps file paths to plan chunks, enabling selective context loading.\n * The file uses a markdown table format grouped by chunk sections.\n *\n * @packageDocumentation\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, ParseError } from \"@dev-session/security\";\n\nimport type { AuditResult, FileIndexEntry } from \"../schemas/index.js\";\n\n/** The filename for the file index within the session directory. */\nconst FILE_INDEX_FILENAME = \"FILE_INDEX.md\";\n\n/**\n * Maximum entries per page when pagination is enabled.\n * Repos exceeding this threshold use FILE_INDEX_1.md, FILE_INDEX_2.md, etc.\n */\nexport const FILE_INDEX_PAGE_SIZE = 500;\n\n/** Pattern matching \"## Chunk N\" or \"## Chunk N — Title\" headings. */\nconst CHUNK_HEADING_PATTERN = /^##\\s+Chunk\\s+(\\d+)(\\s|$)/;\n\n/** Pattern matching \"## Always Include\" heading. */\nconst ALWAYS_INCLUDE_HEADING = /^##\\s+Always\\s+Include\\s*$/;\n\n/** Pattern matching table separator rows like `|---|---|`. */\nconst TABLE_SEPARATOR_PATTERN = /^\\|\\s*-+\\s*\\|\\s*-+\\s*\\|$/;\n\n/** Pattern matching table header rows like `| File | Purpose |`. */\nconst TABLE_HEADER_PATTERN = /^\\|\\s*File\\s*\\|\\s*Purpose\\s*\\|$/;\n\n/**\n * Manages the FILE_INDEX.md file — loading, saving, querying, and auditing entries.\n *\n * All methods that touch the filesystem accept `ValidatedPath` arguments.\n * Pure query functions operate on in-memory `FileIndexEntry[]` arrays.\n */\nexport const FileIndexManager = {\n\t/**\n\t * Loads and parses FILE_INDEX.md from the given session directory.\n\t *\n\t * When `FILE_INDEX_1.md` exists alongside `FILE_INDEX.md`, all pages\n\t * (`FILE_INDEX_1.md`, `FILE_INDEX_2.md`, …) are loaded and merged.\n\t *\n\t * @param sessionDir - Validated path to the `.session/` directory.\n\t * @returns An array of parsed file index entries.\n\t * @throws {ParseError} If the file cannot be read or contains malformed content.\n\t */\n\tload(sessionDir: ValidatedPath): FileIndexEntry[] {\n\t\t// Detect paginated layout: FILE_INDEX_1.md exists\n\t\tif (fs.existsSync(path.join(sessionDir, \"FILE_INDEX_1.md\"))) {\n\t\t\treturn loadPaginatedIndex(sessionDir);\n\t\t}\n\t\tconst filePath = path.join(sessionDir, FILE_INDEX_FILENAME);\n\t\tconst relativePath = path.relative(process.cwd(), filePath);\n\t\tconst content = readFileContent(filePath, relativePath);\n\t\treturn parseFileIndex(content, relativePath);\n\t},\n\n\t/**\n\t * Serializes file index entries and writes them atomically.\n\t *\n\t * When `entries.length > FILE_INDEX_PAGE_SIZE`, the index is split into\n\t * `FILE_INDEX_1.md`, `FILE_INDEX_2.md`, … pages and a stub `FILE_INDEX.md`\n\t * is written. Existing page files are cleaned up if the page count shrinks.\n\t *\n\t * @param sessionDir - Validated path to the `.session/` directory.\n\t * @param entries - The file index entries to serialize and write.\n\t * @throws {Error} If the atomic write fails.\n\t */\n\tsave(sessionDir: ValidatedPath, entries: readonly FileIndexEntry[]): void {\n\t\tif (entries.length > FILE_INDEX_PAGE_SIZE) {\n\t\t\tsavePaginatedIndex(sessionDir, entries);\n\t\t\treturn;\n\t\t}\n\t\t// Remove any leftover page files (e.g. after entries shrink)\n\t\tcleanPageFiles(sessionDir);\n\t\t// sessionDir is already validated by the caller; filename is a constant.\n\t\tconst filePath = path.join(sessionDir, FILE_INDEX_FILENAME) as ValidatedPath;\n\t\tAtomicWriter.writeFile(filePath, serializeEntries(entries));\n\t},\n\n\t/**\n\t * Returns all entries that belong to a given chunk.\n\t *\n\t * @param entries - The full set of file index entries.\n\t * @param chunkId - The chunk ID to filter by.\n\t * @returns Entries whose `chunk_tags` include `chunkId`.\n\t */\n\tqueryByChunk(entries: readonly FileIndexEntry[], chunkId: number): FileIndexEntry[] {\n\t\treturn entries.filter((entry) => entry.chunk_tags.includes(chunkId));\n\t},\n\n\t/**\n\t * Returns all entries tagged with chunk `0` (\"Always Include\").\n\t *\n\t * @param entries - The full set of file index entries.\n\t * @returns Entries whose `chunk_tags` include `0`.\n\t */\n\talwaysInclude(entries: readonly FileIndexEntry[]): FileIndexEntry[] {\n\t\treturn entries.filter((entry) => entry.chunk_tags.includes(0));\n\t},\n\n\t/**\n\t * Adds an entry to the list, deduplicating by filepath.\n\t *\n\t * If a filepath already exists, its `chunk_tags` are merged (union) and the\n\t * purpose is updated to the new entry's value.\n\t *\n\t * @param entries - The existing file index entries.\n\t * @param entry - The new entry to add or merge.\n\t * @returns A new array with the entry added or merged.\n\t */\n\tadd(entries: readonly FileIndexEntry[], entry: FileIndexEntry): FileIndexEntry[] {\n\t\tconst existingIndex = entries.findIndex((e) => e.filepath === entry.filepath);\n\n\t\tif (existingIndex === -1) {\n\t\t\treturn [...entries, entry];\n\t\t}\n\n\t\tconst existing = entries[existingIndex] as FileIndexEntry;\n\t\tconst mergedTags = mergeChunkTags(existing.chunk_tags, entry.chunk_tags);\n\t\tconst merged: FileIndexEntry = {\n\t\t\tfilepath: existing.filepath,\n\t\t\tchunk_tags: mergedTags,\n\t\t\tpurpose: entry.purpose,\n\t\t};\n\n\t\tconst result = [...entries];\n\t\tresult[existingIndex] = merged;\n\t\treturn result;\n\t},\n\n\t/**\n\t * Audits the file index against the filesystem.\n\t *\n\t * Checks for:\n\t * - Stale entries whose files no longer exist on disk\n\t * - Chunk IDs that have no corresponding `PLAN_N.md` in the session directory\n\t *\n\t * @param entries - The file index entries to audit.\n\t * @param sessionDir - Validated path to the `.session/` directory.\n\t * @returns An audit result describing stale entries, missing chunks, and overall health.\n\t */\n\taudit(entries: readonly FileIndexEntry[], sessionDir: ValidatedPath): AuditResult {\n\t\tconst projectRoot = path.dirname(sessionDir);\n\t\tconst stale = findStaleEntries(entries, projectRoot);\n\t\tconst missingChunks = findMissingChunks(entries, sessionDir);\n\t\tconst healthy = stale.length === 0 && missingChunks.length === 0;\n\n\t\treturn { stale, missingChunks, healthy };\n\t},\n} as const;\n\n// ---------------------------------------------------------------------------\n// Internal: File I/O\n// ---------------------------------------------------------------------------\n\n/**\n * Reads the raw content of FILE_INDEX.md.\n *\n * @param filePath - Absolute path to the file.\n * @param relativePath - Relative path for error messages.\n * @returns The file content as a string.\n * @throws {ParseError} If the file cannot be read.\n */\nfunction readFileContent(filePath: string, relativePath: string): string {\n\ttry {\n\t\treturn fs.readFileSync(filePath, \"utf8\");\n\t} catch (cause: unknown) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Cannot read FILE_INDEX.md`,\n\t\t\tfile: relativePath,\n\t\t\tcause,\n\t\t});\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Internal: Parsing\n// ---------------------------------------------------------------------------\n\n/**\n * Parses the full content of FILE_INDEX.md into FileIndexEntry objects.\n *\n * @param content - Raw markdown content.\n * @param relativePath - Relative file path for error messages.\n * @returns Parsed entries.\n * @throws {ParseError} If the content is malformed.\n */\nfunction parseFileIndex(content: string, relativePath: string): FileIndexEntry[] {\n\tconst lines = content.split(\"\\n\");\n\tconst entries: FileIndexEntry[] = [];\n\tlet currentChunkTag: number | undefined;\n\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst line = lines[i];\n\t\tif (line === undefined) continue;\n\n\t\tconst trimmed = line.trim();\n\t\tif (trimmed === \"\") continue;\n\n\t\tconst chunkTag = parseSectionHeading(trimmed);\n\t\tif (chunkTag !== undefined) {\n\t\t\tcurrentChunkTag = chunkTag;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTableMetaRow(trimmed)) continue;\n\n\t\tif (isTableDataRow(trimmed) && currentChunkTag !== undefined) {\n\t\t\tconst parsed = parseTableRow(trimmed, relativePath, i + 1);\n\t\t\tif (parsed !== undefined) {\n\t\t\t\taddParsedEntry(entries, parsed.filepath, parsed.purpose, currentChunkTag);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Parses a section heading to extract the chunk tag.\n *\n * @param line - A trimmed line from the file.\n * @returns The chunk tag number, or `undefined` if this is not a section heading.\n */\nfunction parseSectionHeading(line: string): number | undefined {\n\tif (ALWAYS_INCLUDE_HEADING.test(line)) {\n\t\treturn 0;\n\t}\n\n\tconst chunkMatch = CHUNK_HEADING_PATTERN.exec(line);\n\tif (chunkMatch !== null) {\n\t\tconst rawNumber = chunkMatch[1];\n\t\tif (rawNumber !== undefined) {\n\t\t\tconst parsed = Number.parseInt(rawNumber, 10);\n\t\t\tif (!Number.isNaN(parsed)) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Checks whether a line is a table separator or header row.\n *\n * @param line - A trimmed line.\n * @returns `true` if the line is a table meta row that should be skipped.\n */\nfunction isTableMetaRow(line: string): boolean {\n\treturn TABLE_SEPARATOR_PATTERN.test(line) || TABLE_HEADER_PATTERN.test(line);\n}\n\n/**\n * Checks whether a line is a table data row (starts with `|`).\n *\n * @param line - A trimmed line.\n * @returns `true` if the line appears to be a data row.\n */\nfunction isTableDataRow(line: string): boolean {\n\treturn line.startsWith(\"|\");\n}\n\n/**\n * Parses a single markdown table row into filepath and purpose.\n *\n * @param line - The full table row (e.g., `| foo.ts | Description |`).\n * @param relativePath - Relative file path for error messages.\n * @param lineNumber - The 1-indexed line number for error messages.\n * @returns The parsed filepath and purpose, or `undefined` if the row is malformed.\n * @throws {ParseError} If the row has content but cannot be parsed.\n */\nfunction parseTableRow(\n\tline: string,\n\trelativePath: string,\n\tlineNumber: number,\n): { filepath: string; purpose: string } | undefined {\n\t// Split by `|`, filter out empty segments from leading/trailing pipes\n\tconst cells = line\n\t\t.split(\"|\")\n\t\t.map((cell) => cell.trim())\n\t\t.filter((cell) => cell !== \"\");\n\n\tif (cells.length < 2) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Malformed table row: expected at least 2 columns`,\n\t\t\tfile: relativePath,\n\t\t\tline: lineNumber,\n\t\t});\n\t}\n\n\tconst filepath = cells[0];\n\tconst purpose = cells[1];\n\n\tif (filepath === undefined || purpose === undefined) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Malformed table row: missing filepath or purpose`,\n\t\t\tfile: relativePath,\n\t\t\tline: lineNumber,\n\t\t});\n\t}\n\n\tif (filepath === \"\" || purpose === \"\") {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Malformed table row: empty filepath or purpose`,\n\t\t\tfile: relativePath,\n\t\t\tline: lineNumber,\n\t\t});\n\t}\n\n\treturn { filepath, purpose };\n}\n\n/**\n * Adds a parsed entry to the entries array, merging chunk tags if the filepath already exists.\n *\n * @param entries - The mutable entries array being built.\n * @param filepath - The file's relative path.\n * @param purpose - The file's purpose description.\n * @param chunkTag - The chunk tag from the current section.\n */\nfunction addParsedEntry(\n\tentries: FileIndexEntry[],\n\tfilepath: string,\n\tpurpose: string,\n\tchunkTag: number,\n): void {\n\tconst existing = entries.find((e) => e.filepath === filepath);\n\n\tif (existing !== undefined) {\n\t\tif (!existing.chunk_tags.includes(chunkTag)) {\n\t\t\texisting.chunk_tags.push(chunkTag);\n\t\t}\n\t} else {\n\t\tentries.push({ filepath, purpose, chunk_tags: [chunkTag] });\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Internal: Serialization\n// ---------------------------------------------------------------------------\n\n/**\n * Serializes entries to the FILE_INDEX.md markdown format.\n *\n * @param entries - The entries to serialize.\n * @returns The full markdown content string.\n */\nfunction serializeEntries(entries: readonly FileIndexEntry[]): string {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tconst grouped = groupByChunkTag(entries);\n\tconst sortedChunkIds = [...grouped.keys()].sort((a, b) => a - b);\n\n\tconst sections: string[] = [buildFrontmatter(today), \"# File Index\"];\n\n\tfor (const chunkId of sortedChunkIds) {\n\t\tconst chunkEntries = grouped.get(chunkId);\n\t\tif (chunkEntries === undefined || chunkEntries.length === 0) continue;\n\n\t\tsections.push(buildSectionMarkdown(chunkId, chunkEntries));\n\t}\n\n\treturn `${sections.join(\"\\n\\n\")}\\n`;\n}\n\n/**\n * Builds the YAML frontmatter block.\n *\n * @param date - The ISO date string for `last_updated`.\n * @returns The frontmatter string.\n */\nfunction buildFrontmatter(date: string): string {\n\treturn `---\\nversion: 1\\nlast_updated: \"${date}\"\\n---`;\n}\n\n/**\n * Builds a single chunk section with heading and table.\n *\n * @param chunkId - The chunk ID (0 = \"Always Include\").\n * @param entries - The entries for this chunk.\n * @returns The markdown section string.\n */\nfunction buildSectionMarkdown(chunkId: number, entries: readonly FileIndexEntry[]): string {\n\tconst heading = chunkId === 0 ? \"## Always Include\" : `## Chunk ${String(chunkId)}`;\n\tconst rows = entries.map((entry) => `| ${entry.filepath} | ${entry.purpose} |`);\n\n\treturn [heading, \"\", \"| File | Purpose |\", \"|---|---|\", ...rows].join(\"\\n\");\n}\n\n/**\n * Groups entries by their individual chunk tags.\n *\n * A single entry may appear in multiple groups if it has multiple chunk tags.\n *\n * @param entries - The entries to group.\n * @returns A map from chunk ID to entries belonging to that chunk.\n */\nfunction groupByChunkTag(entries: readonly FileIndexEntry[]): Map<number, FileIndexEntry[]> {\n\tconst grouped = new Map<number, FileIndexEntry[]>();\n\n\tfor (const entry of entries) {\n\t\tfor (const tag of entry.chunk_tags) {\n\t\t\tlet group = grouped.get(tag);\n\t\t\tif (group === undefined) {\n\t\t\t\tgroup = [];\n\t\t\t\tgrouped.set(tag, group);\n\t\t\t}\n\t\t\tgroup.push(entry);\n\t\t}\n\t}\n\n\treturn grouped;\n}\n\n// ---------------------------------------------------------------------------\n// Internal: Merging\n// ---------------------------------------------------------------------------\n\n/**\n * Merges two chunk_tags arrays into a deduplicated, sorted union.\n *\n * @param existing - The existing chunk tags.\n * @param incoming - The new chunk tags to merge.\n * @returns A sorted array of unique chunk tag values.\n */\nfunction mergeChunkTags(existing: readonly number[], incoming: readonly number[]): number[] {\n\tconst tagSet = new Set([...existing, ...incoming]);\n\treturn [...tagSet].sort((a, b) => a - b);\n}\n\n// ---------------------------------------------------------------------------\n// Internal: Pagination\n// ---------------------------------------------------------------------------\n\n/**\n * Load all paginated FILE_INDEX_N.md pages and merge them.\n *\n * @param sessionDir - Validated path to .session/\n * @returns Merged entries from all pages\n * @throws {ParseError} If any page is unreadable\n */\nfunction loadPaginatedIndex(sessionDir: string): FileIndexEntry[] {\n\tconst entries: FileIndexEntry[] = [];\n\tlet page = 1;\n\n\twhile (true) {\n\t\tconst pagePath = path.join(sessionDir, `FILE_INDEX_${String(page)}.md`);\n\t\tif (!fs.existsSync(pagePath)) break;\n\n\t\tconst relativePath = `FILE_INDEX_${String(page)}.md`;\n\t\tconst content = readFileContent(pagePath, relativePath);\n\t\tconst pageEntries = parseFileIndex(content, relativePath);\n\t\tentries.push(...pageEntries);\n\t\tpage++;\n\t}\n\n\treturn entries;\n}\n\n/**\n * Write entries split across multiple FILE_INDEX_N.md page files,\n * then write a stub FILE_INDEX.md indicating the paginated layout.\n *\n * @param sessionDir - Validated path to .session/\n * @param entries - All entries to paginate\n */\nfunction savePaginatedIndex(sessionDir: ValidatedPath, entries: readonly FileIndexEntry[]): void {\n\tconst pageCount = Math.ceil(entries.length / FILE_INDEX_PAGE_SIZE);\n\n\t// Remove old page files that exceed the new page count\n\tcleanPageFiles(sessionDir, pageCount);\n\n\t// Write each page\n\t// sessionDir is already validated by the caller; page filenames are constants.\n\tfor (let i = 0; i < pageCount; i++) {\n\t\tconst pageEntries = entries.slice(i * FILE_INDEX_PAGE_SIZE, (i + 1) * FILE_INDEX_PAGE_SIZE);\n\t\tconst pagePath = path.join(sessionDir, `FILE_INDEX_${String(i + 1)}.md`) as ValidatedPath;\n\t\tAtomicWriter.writeFile(pagePath, serializeEntries(pageEntries));\n\t}\n\n\t// Write stub FILE_INDEX.md so older readers don't crash\n\tconst stubPath = path.join(sessionDir, FILE_INDEX_FILENAME) as ValidatedPath;\n\tconst stubContent = buildPaginationStub(pageCount, entries.length);\n\tAtomicWriter.writeFile(stubPath, stubContent);\n}\n\n/**\n * Build the stub FILE_INDEX.md content for paginated repos.\n *\n * @param pageCount - Number of pages\n * @param totalEntries - Total entry count across all pages\n * @returns Markdown string for the stub file\n */\nfunction buildPaginationStub(pageCount: number, totalEntries: number): string {\n\tconst today = new Date().toISOString().slice(0, 10);\n\tconst pageList = Array.from(\n\t\t{ length: pageCount },\n\t\t(_, i) => `FILE_INDEX_${String(i + 1)}.md`,\n\t).join(\", \");\n\treturn [\n\t\t`---`,\n\t\t`version: 1`,\n\t\t`last_updated: \"${today}\"`,\n\t\t`paginated: true`,\n\t\t`pages: ${String(pageCount)}`,\n\t\t`---`,\n\t\t``,\n\t\t`# File Index (Paginated)`,\n\t\t``,\n\t\t`This project has ${String(totalEntries)} indexed files split across ${String(pageCount)} page${pageCount === 1 ? \"\" : \"s\"}.`,\n\t\t`Load: ${pageList}`,\n\t\t``,\n\t].join(\"\\n\");\n}\n\n/**\n * Remove FILE_INDEX_N.md page files, optionally keeping files up to `keepUpTo`.\n *\n * @param sessionDir - Path to .session/\n * @param keepUpTo - Keep pages 1..keepUpTo; pass 0 or omit to remove all\n */\nfunction cleanPageFiles(sessionDir: string, keepUpTo = 0): void {\n\tlet page = keepUpTo + 1;\n\twhile (true) {\n\t\tconst pagePath = path.join(sessionDir, `FILE_INDEX_${String(page)}.md`);\n\t\tif (!fs.existsSync(pagePath)) break;\n\t\ttry {\n\t\t\tfs.rmSync(pagePath);\n\t\t} catch {\n\t\t\t// Best-effort cleanup\n\t\t}\n\t\tpage++;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Internal: Auditing\n// ---------------------------------------------------------------------------\n\n/**\n * Finds entries whose files no longer exist on disk.\n *\n * @param entries - The entries to check.\n * @param projectRoot - The absolute path to the project root directory.\n * @returns Entries whose files are missing from the filesystem.\n */\nfunction findStaleEntries(\n\tentries: readonly FileIndexEntry[],\n\tprojectRoot: string,\n): FileIndexEntry[] {\n\treturn entries.filter((entry) => {\n\t\tconst absolutePath = path.resolve(projectRoot, entry.filepath);\n\t\treturn !fs.existsSync(absolutePath);\n\t});\n}\n\n/**\n * Finds chunk IDs that have no corresponding PLAN_N.md file.\n *\n * Chunk ID `0` (\"Always Include\") is excluded since it has no plan file.\n *\n * @param entries - The entries to extract chunk IDs from.\n * @param sessionDir - The absolute path to the session directory.\n * @returns Chunk IDs with no matching PLAN_N.md file.\n */\nfunction findMissingChunks(entries: readonly FileIndexEntry[], sessionDir: string): number[] {\n\tconst allChunkIds = collectNonZeroChunkIds(entries);\n\tconst missing: number[] = [];\n\n\tfor (const chunkId of allChunkIds) {\n\t\tconst planFile = path.join(sessionDir, `PLAN_${String(chunkId)}.md`);\n\t\tif (!fs.existsSync(planFile)) {\n\t\t\tmissing.push(chunkId);\n\t\t}\n\t}\n\n\treturn missing.sort((a, b) => a - b);\n}\n\n/**\n * Collects all unique non-zero chunk IDs from entries.\n *\n * @param entries - The entries to scan.\n * @returns A sorted array of unique non-zero chunk IDs.\n */\nfunction collectNonZeroChunkIds(entries: readonly FileIndexEntry[]): number[] {\n\tconst ids = new Set<number>();\n\n\tfor (const entry of entries) {\n\t\tfor (const tag of entry.chunk_tags) {\n\t\t\tif (tag !== 0) {\n\t\t\t\tids.add(tag);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [...ids].sort((a, b) => a - b);\n}\n","/**\n * Manages plan chunk files (PLAN_N.md) within a dev-session directory.\n *\n * Handles loading, querying, advancing, and archiving plan chunks.\n * All file reads use {@link FrontmatterParser} for safe parsing;\n * all writes use {@link AtomicWriter} for atomic, secret-scanned output.\n *\n * @packageDocumentation\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, CliError, FrontmatterParser, ParseError } from \"@dev-session/security\";\nimport type { PlanChunk, SessionState } from \"../schemas/index.js\";\nimport { PlanChunkSchema, TaskStatus } from \"../schemas/index.js\";\n\n/** Pattern that matches plan chunk filenames like PLAN_1.md, PLAN_2.md, etc. */\nconst PLAN_CHUNK_PATTERN = /^PLAN_(\\d+)\\.md$/;\n\n/** The filename used for the done/archive log. */\nconst DONE_LOG_FILENAME = \"DONE_LOG.md\";\n\n/**\n * Reads and validates a single plan chunk file.\n *\n * @param filePath - Absolute path to the PLAN_N.md file.\n * @param relativeName - The filename (e.g. \"PLAN_3.md\") used in error messages.\n * @returns The validated plan chunk data.\n * @throws {ParseError} If the file cannot be read or frontmatter is invalid.\n */\nfunction readChunkFile(filePath: string, relativeName: string): PlanChunk {\n\tlet raw: string;\n\ttry {\n\t\traw = fs.readFileSync(filePath, \"utf8\");\n\t} catch (cause: unknown) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Failed to read plan chunk file \"${relativeName}\"`,\n\t\t\tfile: relativeName,\n\t\t\tcause,\n\t\t});\n\t}\n\n\tconst { data } = FrontmatterParser.parse(raw, PlanChunkSchema, {\n\t\tfile: relativeName,\n\t});\n\n\treturn data;\n}\n\n/**\n * Lists plan chunk filenames in a session directory, sorted by chunk ID.\n *\n * @param sessionDir - A validated path to the session directory.\n * @returns An array of `{ name, chunkId }` entries sorted by `chunkId`.\n */\nfunction listChunkFiles(sessionDir: ValidatedPath): readonly { name: string; chunkId: number }[] {\n\tlet entries: readonly string[];\n\ttry {\n\t\tentries = fs.readdirSync(sessionDir);\n\t} catch {\n\t\treturn [];\n\t}\n\n\tconst chunks: { name: string; chunkId: number }[] = [];\n\n\tfor (const entry of entries) {\n\t\tconst match = PLAN_CHUNK_PATTERN.exec(entry);\n\t\tif (match !== null) {\n\t\t\tconst idStr = match[1];\n\t\t\tif (idStr !== undefined) {\n\t\t\t\tchunks.push({ name: entry, chunkId: Number.parseInt(idStr, 10) });\n\t\t\t}\n\t\t}\n\t}\n\n\tchunks.sort((a, b) => a.chunkId - b.chunkId);\n\treturn chunks;\n}\n\n/**\n * Builds the archive summary text for a completed chunk.\n *\n * @param chunk - The plan chunk to summarize.\n * @param completionDate - ISO 8601 date string for the completion timestamp.\n * @returns The formatted summary string.\n */\nfunction buildArchiveSummary(chunk: PlanChunk, completionDate: string): string {\n\tconst taskCount = chunk.tasks.length;\n\treturn `## Chunk ${String(chunk.chunk_id)} — ${chunk.title}\\nCompleted: ${completionDate}\\nTasks: ${String(taskCount)}\\n\\n`;\n}\n\n/**\n * Reads existing content from DONE_LOG.md, returning an empty string if the file does not exist.\n *\n * @param logPath - Absolute path to DONE_LOG.md.\n * @returns The existing file content, or an empty string.\n */\nfunction readExistingLog(logPath: string): string {\n\ttry {\n\t\treturn fs.readFileSync(logPath, \"utf8\");\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\n/**\n * Manages plan chunk files (PLAN_N.md) in a dev-session directory.\n *\n * Provides methods to load, query, advance, and archive plan chunks.\n * Pure functions (`advance`, `isComplete`) perform no I/O; I/O functions\n * (`loadAll`, `loadActive`, `archive`) use security-safe readers and writers.\n */\nexport const PlanChunkManager = {\n\t/**\n\t * Loads all plan chunk files from the session directory.\n\t *\n\t * Reads every file matching `PLAN_N.md`, parses and validates its\n\t * frontmatter via {@link FrontmatterParser}, and returns them sorted\n\t * by `chunk_id` in ascending order.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @returns An array of validated plan chunks, sorted by `chunk_id`. Empty if none found.\n\t * @throws {ParseError} If any chunk file has invalid frontmatter.\n\t */\n\tloadAll(sessionDir: ValidatedPath): PlanChunk[] {\n\t\tconst files = listChunkFiles(sessionDir);\n\n\t\tif (files.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn files.map(({ name }) => {\n\t\t\tconst filePath = path.join(sessionDir, name);\n\t\t\treturn readChunkFile(filePath, name);\n\t\t});\n\t},\n\n\t/**\n\t * Loads the plan chunk that matches the active chunk in the session state.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @param state - The current session state containing `active_chunk`.\n\t * @returns The validated plan chunk for the active chunk.\n\t * @throws {ParseError} If the chunk file does not exist or has invalid frontmatter.\n\t */\n\tloadActive(sessionDir: ValidatedPath, state: SessionState): PlanChunk {\n\t\tconst filename = `PLAN_${String(state.active_chunk)}.md`;\n\t\tconst filePath = path.join(sessionDir, filename);\n\n\t\tif (!fs.existsSync(filePath)) {\n\t\t\tthrow new ParseError({\n\t\t\t\tmessage: `Plan chunk file \"${filename}\" not found — expected for active chunk ${String(state.active_chunk)}`,\n\t\t\t\tfile: filename,\n\t\t\t});\n\t\t}\n\n\t\treturn readChunkFile(filePath, filename);\n\t},\n\n\t/**\n\t * Advances the session state to the next chunk.\n\t *\n\t * Pure function — performs no I/O. Returns a new `SessionState` with\n\t * `active_chunk` incremented by 1 and the current chunk added to\n\t * `completed_chunks` with today's ISO date.\n\t *\n\t * @param state - The current session state.\n\t * @returns A new session state with the chunk advanced.\n\t */\n\tadvance(state: SessionState): SessionState {\n\t\tconst today = new Date().toISOString().slice(0, 10);\n\t\tconst currentChunkKey = String(state.active_chunk);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tactive_chunk: state.active_chunk + 1,\n\t\t\tcompleted_chunks: {\n\t\t\t\t...state.completed_chunks,\n\t\t\t\t[currentChunkKey]: today,\n\t\t\t},\n\t\t};\n\t},\n\n\t/**\n\t * Checks whether all tasks in a plan chunk are complete.\n\t *\n\t * Returns `true` if every task has status `\"done\"`, or if the\n\t * tasks array is empty.\n\t *\n\t * @param chunk - The plan chunk to check.\n\t * @returns `true` if the chunk is fully complete.\n\t */\n\tisComplete(chunk: PlanChunk): boolean {\n\t\treturn chunk.tasks.every((task) => task.status === TaskStatus.DONE);\n\t},\n\n\t/**\n\t * Archives a completed chunk by appending a summary to DONE_LOG.md.\n\t *\n\t * Creates the file if it does not exist. Appends a formatted summary\n\t * block containing the chunk ID, title, completion date, and task count.\n\t * Writes via {@link AtomicWriter} for atomic, secret-scanned output.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @param chunk - The completed plan chunk to archive.\n\t * @throws {CliError} If the write operation fails.\n\t */\n\tarchive(sessionDir: ValidatedPath, chunk: PlanChunk): void {\n\t\tconst logPath = path.join(sessionDir, DONE_LOG_FILENAME) as ValidatedPath;\n\t\tconst existing = readExistingLog(logPath);\n\t\tconst completionDate = new Date().toISOString().slice(0, 10);\n\t\tconst summary = buildArchiveSummary(chunk, completionDate);\n\t\tconst content = existing + summary;\n\n\t\ttry {\n\t\t\tAtomicWriter.writeFile(logPath, content);\n\t\t} catch (cause: unknown) {\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: `Failed to write archive log \"${DONE_LOG_FILENAME}\"`,\n\t\t\t\tsuggestion: `Check that the session directory is writable`,\n\t\t\t\tcause,\n\t\t\t});\n\t\t}\n\t},\n} as const;\n","import { z } from \"zod\";\n\n/**\n * Zod schema for the adapter configuration contract.\n *\n * This defines the public interface that community adapters must satisfy.\n * Adapters transform session state into tool-specific file formats.\n */\nexport const AdapterConfigSchema = z\n\t.object({\n\t\t/** Unique identifier for the adapter (e.g., \"claude\", \"opencode\"). */\n\t\tname: z.string().min(1),\n\t\t/** Human-readable display name. */\n\t\tdisplay_name: z.string().min(1),\n\t\t/** The files this adapter reads to detect the tool (e.g., [\"CLAUDE.md\", \".claude/\"]). */\n\t\tdetect_files: z.array(z.string().min(1)).min(1),\n\t\t/** The files this adapter generates or modifies. */\n\t\toutput_files: z.array(z.string().min(1)).min(1),\n\t\t/** Version of the adapter config contract this adapter targets. */\n\t\tconfig_version: z.number().int().min(1),\n\t})\n\t.strict();\n\n/**\n * The public contract for community adapters.\n */\nexport type AdapterConfig = z.infer<typeof AdapterConfigSchema>;\n","import { z } from \"zod\";\n\n/**\n * Zod schema for a single entry in FILE_INDEX.md.\n *\n * Each entry maps a file path to the chunks it belongs to and its purpose.\n */\nexport const FileIndexEntrySchema = z\n\t.object({\n\t\t/** The relative file path from the project root. */\n\t\tfilepath: z.string().min(1),\n\t\t/** The chunk IDs this file is tagged to (e.g., [1, 2]). Use `0` for \"always include\". */\n\t\tchunk_tags: z.array(z.number().int().min(0)).min(1),\n\t\t/** A short description of the file's purpose. */\n\t\tpurpose: z.string().min(1),\n\t\t/** Estimated token cost for loading this file into context. Populated by walker/scanner. */\n\t\ttoken_cost: z.number().int().min(0).optional(),\n\t})\n\t.strict();\n\n/**\n * A single entry in the FILE_INDEX.md file.\n */\nexport type FileIndexEntry = z.infer<typeof FileIndexEntrySchema>;\n\n/**\n * The result of auditing the file index against the filesystem.\n */\nexport interface AuditResult {\n\t/** Entries whose files no longer exist on disk. */\n\treadonly stale: readonly FileIndexEntry[];\n\t/** Chunk IDs referenced in the index that have no corresponding PLAN_N.md file. */\n\treadonly missingChunks: readonly number[];\n\t/** Whether the index is completely healthy (no stale entries or missing chunks). */\n\treadonly healthy: boolean;\n}\n","import { z } from \"zod\";\n\n/** Maximum number of lines allowed in NEXT_PROMPT.md. */\nexport const MAX_PROMPT_LINES = 20;\n\n/**\n * Zod schema for the content of NEXT_PROMPT.md.\n *\n * The next prompt is a self-contained bootstrap for the next AI session.\n * It must be concise (<=15 lines) and include everything needed to resume.\n */\nexport const NextPromptSchema = z\n\t.object({\n\t\t/** The project name (e.g., \"dev-session\"). */\n\t\tproject_name: z.string().min(1),\n\t\t/** Description of the active chunk (e.g., \"3 — Core data model\"). */\n\t\tactive_chunk: z.string().min(1),\n\t\t/** File paths or patterns to load into context. */\n\t\tfiles_to_load: z.array(z.string().min(1)).min(1),\n\t\t/** A multi-line resume context string — what happened and what's next. */\n\t\tresume_context: z.string().min(1),\n\t})\n\t.strict();\n\n/**\n * The structured content of NEXT_PROMPT.md.\n */\nexport type NextPrompt = z.infer<typeof NextPromptSchema>;\n\n/**\n * Result of validating a NEXT_PROMPT.md string.\n */\nexport interface ValidationResult {\n\t/** Whether the prompt passes all validation checks. */\n\treadonly valid: boolean;\n\t/** The number of lines in the prompt. */\n\treadonly lineCount: number;\n\t/** List of validation errors (empty if valid). */\n\treadonly errors: readonly string[];\n}\n","import { z } from \"zod\";\n\nimport { TaskSchema } from \"./task.js\";\n\n/**\n * Zod schema for a plan chunk's frontmatter (PLAN_N.md).\n *\n * Each chunk represents a phase of work with its own tasks and metadata.\n */\nexport const PlanChunkSchema = z\n\t.object({\n\t\t/** The numeric chunk ID (matches the N in PLAN_N.md). */\n\t\tchunk_id: z.number().int().min(1),\n\t\t/** The human-readable title of this chunk (e.g., \"Security utilities\"). */\n\t\ttitle: z.string().min(1),\n\t\t/** Chunk IDs that must be completed before this one can start. */\n\t\tdepends_on: z.array(z.number().int().min(1)).default([]),\n\t\t/** Estimated number of sessions to complete this chunk. */\n\t\test_sessions: z.number().int().min(1).optional(),\n\t\t/** The list of tasks within this chunk. */\n\t\ttasks: z.array(TaskSchema).default([]),\n\t})\n\t.strict();\n\n/**\n * A plan chunk — one phase of work in the project plan.\n */\nexport type PlanChunk = z.infer<typeof PlanChunkSchema>;\n","import { z } from \"zod\";\n\n/**\n * Valid task status values.\n *\n * - `todo` — not yet started\n * - `in-progress` — actively being worked on\n * - `done` — completed\n */\nexport const TaskStatus = {\n\tTODO: \"todo\",\n\tIN_PROGRESS: \"in-progress\",\n\tDONE: \"done\",\n} as const;\n\n/** Union type of all valid task status values. */\nexport type TaskStatusValue = (typeof TaskStatus)[keyof typeof TaskStatus];\n\n/**\n * Zod schema for a task's status field.\n */\nexport const TaskStatusSchema = z.enum([\"todo\", \"in-progress\", \"done\"]);\n\n/**\n * Zod schema for a single task within a session or plan chunk.\n *\n * Tasks represent discrete units of work, tracked with status and optional timestamps.\n */\nexport const TaskSchema = z\n\t.object({\n\t\t/** The human-readable description of the task. */\n\t\ttext: z.string().min(1),\n\t\t/** Current status of the task. */\n\t\tstatus: TaskStatusSchema,\n\t\t/** ISO 8601 timestamp when the task was added. */\n\t\tadded_at: z.string().datetime().optional(),\n\t\t/** ISO 8601 timestamp when the task was completed (only set when status is `done`). */\n\t\tcompleted_at: z.string().datetime().optional(),\n\t})\n\t.strict();\n\n/**\n * A single task within a session or plan chunk.\n */\nexport type Task = z.infer<typeof TaskSchema>;\n","import { z } from \"zod\";\n\n/**\n * Detected AI tool types.\n */\nexport const DetectedTool = {\n\tCLAUDE: \"claude\",\n\tOPENCODE: \"opencode\",\n\tCURSOR: \"cursor\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\n/** Union type of detected AI tool identifiers. */\nexport type DetectedToolValue = (typeof DetectedTool)[keyof typeof DetectedTool];\n\n/**\n * Detected project framework types.\n */\nexport const ProjectType = {\n\tVITE: \"vite\",\n\tNEXT: \"next\",\n\tNODE: \"node\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\n/** Union type of detected project framework identifiers. */\nexport type ProjectTypeValue = (typeof ProjectType)[keyof typeof ProjectType];\n\n/**\n * Zod schema for detected project information.\n */\nexport const ProjectInfoSchema = z\n\t.object({\n\t\t/** The detected AI coding tool. */\n\t\ttool: z.enum([\"claude\", \"opencode\", \"cursor\", \"unknown\"]),\n\t\t/** The detected project framework type. */\n\t\tproject_type: z.enum([\"vite\", \"next\", \"node\", \"unknown\"]),\n\t\t/** Existing notable files found in the project root. */\n\t\texisting_files: z.array(z.string()),\n\t\t/** The absolute path to the project root. */\n\t\tproject_root: z.string().min(1),\n\t\t/** Whether a .session/ directory already exists. */\n\t\thas_existing_session: z.boolean(),\n\t\t/** The project name (from package.json or directory name). */\n\t\tproject_name: z.string().optional(),\n\t})\n\t.strict();\n\n/**\n * Information about the detected project environment.\n */\nexport type ProjectInfo = z.infer<typeof ProjectInfoSchema>;\n","import { z } from \"zod\";\n\nimport { TaskSchema } from \"./task.js\";\n\n/**\n * Zod schema for SESSION_STATE.md frontmatter.\n *\n * Represents the current state of a dev-session: which chunk is active,\n * what tasks exist, which files were last worked on, and session metadata.\n */\nexport const SessionStateSchema = z\n\t.object({\n\t\t/** The numeric ID of the currently active chunk (e.g., 1, 2, 3). */\n\t\tactive_chunk: z.number().int().min(1),\n\t\t/** A unique identifier for this session (typically UUID v4). */\n\t\tsession_id: z.string().min(1),\n\t\t/** ISO 8601 date string of the last update to this state file. */\n\t\tlast_updated: z.string().min(1),\n\t\t/** The list of tasks in the active chunk. */\n\t\ttasks: z.array(TaskSchema).default([]),\n\t\t/** Relative file paths that were last worked on. */\n\t\tlast_worked_files: z.array(z.string().min(1)).default([]),\n\t\t/** Free-form session notes (e.g., decisions, blockers, reminders). */\n\t\tnotes: z.array(z.string()).default([]),\n\t\t/** Map of completed chunk IDs to completion dates. */\n\t\tcompleted_chunks: z.record(z.string(), z.string()).default({}),\n\t})\n\t.strict();\n\n/**\n * The session state stored in SESSION_STATE.md frontmatter.\n */\nexport type SessionState = z.infer<typeof SessionStateSchema>;\n","/**\n * Manages reading, writing, and updating SESSION_STATE.md.\n *\n * All I/O goes through {@link FrontmatterParser} (read) and {@link AtomicWriter} (write)\n * from `@dev-session/security`. Pure state-transition helpers are side-effect-free.\n *\n * @packageDocumentation\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, FrontmatterParser, ParseError } from \"@dev-session/security\";\n\nimport type { SessionState, Task } from \"../schemas/index.js\";\nimport { SessionStateSchema, TaskStatus } from \"../schemas/index.js\";\n\n/** The filename of the session state file within the `.session/` directory. */\nconst SESSION_STATE_FILENAME = \"SESSION_STATE.md\";\n\n/**\n * Manages the lifecycle of SESSION_STATE.md: loading from disk,\n * saving to disk, and pure in-memory state transitions.\n */\nexport const SessionStateManager = {\n\t/**\n\t * Loads and validates SESSION_STATE.md from the given session directory.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @returns The parsed and validated session state.\n\t * @throws {ParseError} If the file cannot be read or its frontmatter is malformed.\n\t */\n\tload(sessionDir: ValidatedPath): SessionState {\n\t\tconst filePath = resolveStateFilePath(sessionDir);\n\t\tconst raw = readFileContent(filePath);\n\t\treturn parseFrontmatter(raw);\n\t},\n\n\t/**\n\t * Serializes session state to YAML frontmatter and writes it atomically.\n\t *\n\t * Automatically updates `last_updated` to the current ISO date before writing.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @param state - The session state to persist.\n\t * @returns void\n\t * @throws {SecurityError} If the write guard detects secrets in the content.\n\t */\n\tsave(sessionDir: ValidatedPath, state: SessionState): void {\n\t\tconst filePath = resolveStateFilePath(sessionDir);\n\t\tconst updated: SessionState = {\n\t\t\t...state,\n\t\t\tlast_updated: new Date().toISOString().slice(0, 10),\n\t\t};\n\t\tconst content = serializeToMarkdown(updated);\n\t\tAtomicWriter.writeFile(filePath, content);\n\t},\n\n\t/**\n\t * Marks a task as done by matching on its text.\n\t *\n\t * Pure function — performs no I/O. If no task matches, returns state unchanged.\n\t *\n\t * @param state - The current session state.\n\t * @param taskText - The text of the task to mark done.\n\t * @returns A new session state with the matching task marked done.\n\t */\n\tmarkTaskDone(state: SessionState, taskText: string): SessionState {\n\t\treturn updateTaskByText(state, taskText, (task) => ({\n\t\t\t...task,\n\t\t\tstatus: TaskStatus.DONE,\n\t\t\tcompleted_at: new Date().toISOString(),\n\t\t}));\n\t},\n\n\t/**\n\t * Marks a task as in-progress by matching on its text.\n\t *\n\t * Pure function — performs no I/O. If no task matches, returns state unchanged.\n\t *\n\t * @param state - The current session state.\n\t * @param taskText - The text of the task to mark in-progress.\n\t * @returns A new session state with the matching task marked in-progress.\n\t */\n\tmarkTaskInProgress(state: SessionState, taskText: string): SessionState {\n\t\treturn updateTaskByText(state, taskText, (task) => ({\n\t\t\t...task,\n\t\t\tstatus: TaskStatus.IN_PROGRESS,\n\t\t}));\n\t},\n\n\t/**\n\t * Appends a note to the session state.\n\t *\n\t * Pure function — performs no I/O.\n\t *\n\t * @param state - The current session state.\n\t * @param note - The note string to append.\n\t * @returns A new session state with the note appended.\n\t */\n\taddNote(state: SessionState, note: string): SessionState {\n\t\treturn {\n\t\t\t...state,\n\t\t\tnotes: [...state.notes, note],\n\t\t};\n\t},\n\n\t/**\n\t * Replaces the list of last-worked files.\n\t *\n\t * Pure function — performs no I/O.\n\t *\n\t * @param state - The current session state.\n\t * @param files - The new list of file paths.\n\t * @returns A new session state with the updated file list.\n\t */\n\tupdateLastWorked(state: SessionState, files: readonly string[]): SessionState {\n\t\treturn {\n\t\t\t...state,\n\t\t\tlast_worked_files: [...files],\n\t\t};\n\t},\n\n\t/**\n\t * Compacts the session state by removing detailed task lists from completed chunks.\n\t *\n\t * Completed chunk tasks are archived to DONE_LOG.md (if not already archived),\n\t * and the in-memory state is trimmed to keep only the active chunk's tasks,\n\t * a summary note per completed chunk, and essential metadata.\n\t *\n\t * This prevents SESSION_STATE.md from growing unboundedly as chunks accumulate.\n\t *\n\t * Pure function — performs no I/O. Call `save()` separately to persist.\n\t *\n\t * @param state - The current session state (may have stale task lists).\n\t * @returns A new session state with only the active chunk's tasks, plus compact summaries.\n\t */\n\tcompact(state: SessionState): SessionState {\n\t\t// Keep only tasks that belong to the active chunk.\n\t\t// Since all completed chunk tasks should have already been archived via\n\t\t// PlanChunkManager.archive(), we clear them from the state.\n\t\t// We preserve any existing notes and add a compact summary if not already present.\n\n\t\tconst completedKeys = Object.keys(state.completed_chunks);\n\t\tconst hasSummary = state.notes.some((n) => n.startsWith(\"Completed:\"));\n\n\t\tconst notes = [...state.notes];\n\n\t\tif (completedKeys.length > 0 && !hasSummary) {\n\t\t\tconst sortedKeys = completedKeys\n\t\t\t\t.map((k) => Number.parseInt(k, 10))\n\t\t\t\t.filter((n) => !Number.isNaN(n))\n\t\t\t\t.sort((a, b) => a - b);\n\n\t\t\tif (sortedKeys.length > 0) {\n\t\t\t\tconst first = sortedKeys[0] as number;\n\t\t\t\tconst last = sortedKeys[sortedKeys.length - 1] as number;\n\t\t\t\tconst isConsecutive = last - first === sortedKeys.length - 1;\n\n\t\t\t\tconst rangeStr =\n\t\t\t\t\tisConsecutive && sortedKeys.length > 1\n\t\t\t\t\t\t? `${String(first)}-${String(last)}`\n\t\t\t\t\t\t: sortedKeys.map(String).join(\", \");\n\n\t\t\t\tnotes.unshift(`Completed: Chunks ${rangeStr}. See DONE_LOG.md for details.`);\n\t\t\t}\n\t\t}\n\n\t\t// Clear last_worked_files from old chunks since they're no longer relevant\n\t\t// after advancing. Keep them if we haven't advanced (active chunk is still current).\n\t\treturn {\n\t\t\t...state,\n\t\t\tnotes,\n\t\t};\n\t},\n} as const;\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Builds the full path to SESSION_STATE.md inside the session directory.\n *\n * Since `sessionDir` is already a {@link ValidatedPath}, joining a known-safe\n * filename is safe — no user input enters the filename.\n *\n * @param sessionDir - The validated session directory path.\n * @returns The resolved path cast to ValidatedPath.\n */\nfunction resolveStateFilePath(sessionDir: ValidatedPath): ValidatedPath {\n\treturn path.join(sessionDir, SESSION_STATE_FILENAME) as ValidatedPath;\n}\n\n/**\n * Reads the raw content of SESSION_STATE.md from disk.\n *\n * @param filePath - The validated path to the file.\n * @returns The file content as a UTF-8 string.\n * @throws {ParseError} If the file does not exist or cannot be read.\n */\nfunction readFileContent(filePath: ValidatedPath): string {\n\ttry {\n\t\treturn fs.readFileSync(filePath, \"utf8\");\n\t} catch (cause: unknown) {\n\t\tthrow new ParseError({\n\t\t\tmessage: `Cannot read ${SESSION_STATE_FILENAME}`,\n\t\t\tfile: SESSION_STATE_FILENAME,\n\t\t\tcause,\n\t\t});\n\t}\n}\n\n/**\n * Parses and validates frontmatter from raw SESSION_STATE.md content.\n *\n * @param raw - The raw file content string.\n * @returns The validated session state.\n * @throws {ParseError} If frontmatter is missing or schema validation fails.\n * @throws {SecurityError} If malicious frontmatter is detected.\n */\nfunction parseFrontmatter(raw: string): SessionState {\n\treturn FrontmatterParser.parse(raw, SessionStateSchema, {\n\t\tfile: SESSION_STATE_FILENAME,\n\t}).data;\n}\n\n/**\n * Applies an updater function to the first task whose text matches.\n *\n * Returns the original state if no task matches (idempotent).\n *\n * @param state - The current session state.\n * @param taskText - The text to match against task descriptions.\n * @param updater - A function that returns an updated task.\n * @returns A new session state with the updated tasks array.\n */\nfunction updateTaskByText(\n\tstate: SessionState,\n\ttaskText: string,\n\tupdater: (task: Task) => Task,\n): SessionState {\n\tlet found = false;\n\tconst tasks = state.tasks.map((task) => {\n\t\tif (!found && task.text === taskText) {\n\t\t\tfound = true;\n\t\t\treturn updater(task);\n\t\t}\n\t\treturn task;\n\t});\n\n\tif (!found) {\n\t\treturn state;\n\t}\n\n\treturn { ...state, tasks };\n}\n\n// ---------------------------------------------------------------------------\n// YAML serialization (hand-rolled — no yaml library dependency)\n// ---------------------------------------------------------------------------\n\n/**\n * Serializes a {@link SessionState} into a complete markdown document\n * with YAML frontmatter and a human-readable body.\n *\n * @param state - The session state to serialize.\n * @returns A markdown string with YAML frontmatter.\n */\nfunction serializeToMarkdown(state: SessionState): string {\n\tconst yaml = serializeYaml(state);\n\tconst body = buildMarkdownBody(state);\n\treturn `---\\n${yaml}---\\n${body}`;\n}\n\n/**\n * Serializes session state fields into a YAML string.\n *\n * @param state - The session state.\n * @returns YAML content (without delimiters).\n */\nfunction serializeYaml(state: SessionState): string {\n\tconst lines: string[] = [];\n\n\tlines.push(`active_chunk: ${String(state.active_chunk)}`);\n\tlines.push(`session_id: ${yamlString(state.session_id)}`);\n\tlines.push(`last_updated: ${yamlString(state.last_updated)}`);\n\n\tlines.push(...serializeTasksYaml(state.tasks));\n\tlines.push(...serializeStringArrayYaml(\"notes\", state.notes));\n\tlines.push(...serializeStringArrayYaml(\"last_worked_files\", state.last_worked_files));\n\tlines.push(...serializeCompletedChunksYaml(state.completed_chunks));\n\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n\n/**\n * Serializes the tasks array into YAML lines.\n *\n * @param tasks - The tasks to serialize.\n * @returns An array of YAML lines.\n */\nfunction serializeTasksYaml(tasks: readonly Task[]): string[] {\n\tif (tasks.length === 0) {\n\t\treturn [\"tasks: []\"];\n\t}\n\n\tconst lines: string[] = [\"tasks:\"];\n\tfor (const task of tasks) {\n\t\tlines.push(` - text: ${yamlString(task.text)}`);\n\t\tlines.push(` status: ${yamlString(task.status)}`);\n\t\tif (task.added_at !== undefined) {\n\t\t\tlines.push(` added_at: ${yamlString(task.added_at)}`);\n\t\t}\n\t\tif (task.completed_at !== undefined) {\n\t\t\tlines.push(` completed_at: ${yamlString(task.completed_at)}`);\n\t\t}\n\t}\n\treturn lines;\n}\n\n/**\n * Serializes a string array field (e.g., notes, last_worked_files) into YAML lines.\n *\n * @param key - The YAML key name.\n * @param values - The string values.\n * @returns An array of YAML lines.\n */\nfunction serializeStringArrayYaml(key: string, values: readonly string[]): string[] {\n\tif (values.length === 0) {\n\t\treturn [`${key}: []`];\n\t}\n\n\tconst lines: string[] = [`${key}:`];\n\tfor (const value of values) {\n\t\tlines.push(` - ${yamlString(value)}`);\n\t}\n\treturn lines;\n}\n\n/**\n * Serializes the completed_chunks record into YAML lines.\n *\n * @param chunks - Map of chunk IDs to completion date strings.\n * @returns An array of YAML lines.\n */\nfunction serializeCompletedChunksYaml(chunks: Readonly<Record<string, string>>): string[] {\n\tconst entries = Object.entries(chunks);\n\tif (entries.length === 0) {\n\t\treturn [\"completed_chunks: {}\"];\n\t}\n\n\tconst lines: string[] = [\"completed_chunks:\"];\n\tfor (const [key, value] of entries) {\n\t\tlines.push(` ${yamlString(key)}: ${yamlString(value)}`);\n\t}\n\treturn lines;\n}\n\n/**\n * Wraps a value in double quotes for YAML output, escaping inner\n * double quotes and backslashes.\n *\n * @param value - The string to quote.\n * @returns The YAML-safe quoted string.\n */\nfunction yamlString(value: string): string {\n\tconst escaped = value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n\treturn `\"${escaped}\"`;\n}\n\n/**\n * Builds the human-readable markdown body appended after frontmatter.\n *\n * @param state - The session state.\n * @returns Markdown content for the document body.\n */\nfunction buildMarkdownBody(state: SessionState): string {\n\treturn `\\n# Session State\\n\\n## Active Chunk: ${String(state.active_chunk)}\\n`;\n}\n","/**\n * Token counting with pluggable accurate counting and heuristic fallback.\n *\n * The `TokenCounter` uses a character-based heuristic by default\n * (`Math.ceil(chars / 4)`), which is free and works offline.\n * Adapters can inject an {@link ExternalTokenCounter} callback to get\n * ground-truth counts from a real tokenizer API (e.g., Anthropic's\n * `messages.countTokens`).\n *\n * Design rationale: `packages/core` must not depend on vendor SDKs.\n * The pluggable callback keeps core dependency-free while allowing\n * accurate counting when an adapter provides the implementation.\n *\n * @packageDocumentation\n */\n\nimport * as fs from \"node:fs\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { CliError } from \"@dev-session/security\";\n\nimport type {\n\tExternalTokenCounter,\n\tTokenCostMap,\n\tTokenCountResult,\n} from \"../schemas/token-counting.js\";\n\n/**\n * Bytes-per-token heuristic for English text and code.\n *\n * Claude's actual BPE tokenizer averages ~3.5–4.5 bytes per token\n * for mixed English prose and source code. We use 4 as a conservative\n * middle ground — slightly overestimates for dense code, slightly\n * underestimates for prose-heavy markdown.\n */\nconst BYTES_PER_TOKEN = 4;\n\n/**\n * Estimates token count from a string using the character-based heuristic.\n *\n * @param content - The string content to estimate.\n * @returns The estimated token count.\n */\nfunction heuristicCount(content: string): number {\n\tconst byteLength = Buffer.byteLength(content, \"utf-8\");\n\treturn Math.ceil(byteLength / BYTES_PER_TOKEN);\n}\n\n/**\n * Options for creating a {@link TokenCounter} instance.\n */\nexport interface TokenCounterOptions {\n\t/**\n\t * Optional external token counter callback for accurate counting.\n\t * If not provided, all counts use the heuristic fallback.\n\t */\n\treadonly externalCounter?: ExternalTokenCounter;\n}\n\n/**\n * Counts tokens for strings and files with heuristic fallback.\n *\n * Create via {@link TokenCounter.create} to optionally inject an accurate\n * external counter. When no external counter is provided (or it throws),\n * all results use the `Math.ceil(bytes / 4)` heuristic and are marked\n * `accurate: false`.\n *\n * @example\n * ```typescript\n * // Heuristic-only (no API key):\n * const counter = TokenCounter.create();\n * const result = await counter.countString(\"Hello world\");\n * // { tokens: 3, accurate: false }\n *\n * // With adapter-provided accurate counter:\n * const counter = TokenCounter.create({\n * externalCounter: async (content) => anthropic.messages.countTokens(...)\n * });\n * const result = await counter.countString(\"Hello world\");\n * // { tokens: 2, accurate: true }\n * ```\n */\nexport const TokenCounter = {\n\t/**\n\t * Creates a new token counter instance.\n\t *\n\t * @param options - Optional configuration with an external counter callback.\n\t * @returns A token counter object with `countString`, `countFile`, and `countFiles` methods.\n\t */\n\tcreate(options?: TokenCounterOptions): TokenCounterInstance {\n\t\tconst externalCounter = options?.externalCounter;\n\t\treturn {\n\t\t\t/**\n\t\t\t * Whether this counter has an external (accurate) counter available.\n\t\t\t */\n\t\t\tget hasExternalCounter(): boolean {\n\t\t\t\treturn externalCounter !== undefined;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Counts tokens for a raw string.\n\t\t\t *\n\t\t\t * If an external counter is available, uses it. Falls back to heuristic\n\t\t\t * on failure or when no external counter is configured.\n\t\t\t *\n\t\t\t * @param content - The string to count tokens for.\n\t\t\t * @returns A promise resolving to a {@link TokenCountResult}.\n\t\t\t */\n\t\t\tasync countString(content: string): Promise<TokenCountResult> {\n\t\t\t\tif (externalCounter !== undefined) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst tokens = await externalCounter(content);\n\t\t\t\t\t\treturn { tokens, accurate: true };\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Fall through to heuristic\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { tokens: heuristicCount(content), accurate: false };\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Counts tokens for a file on disk.\n\t\t\t *\n\t\t\t * Reads the file content and delegates to {@link countString}.\n\t\t\t *\n\t\t\t * @param filePath - A validated file path to read and count.\n\t\t\t * @returns A promise resolving to a {@link TokenCountResult}.\n\t\t\t * @throws {CliError} If the file cannot be read.\n\t\t\t */\n\t\t\tasync countFile(filePath: ValidatedPath): Promise<TokenCountResult> {\n\t\t\t\tconst content = readFileContent(filePath);\n\t\t\t\treturn this.countString(content);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Counts tokens for multiple files, returning a {@link TokenCostMap}.\n\t\t\t *\n\t\t\t * Processes files sequentially to avoid overwhelming an external API.\n\t\t\t * If any file uses the heuristic fallback, the overall map will contain\n\t\t\t * a mix of accurate and inaccurate results — consumers should check\n\t\t\t * individual entries.\n\t\t\t *\n\t\t\t * @param paths - An array of validated file paths.\n\t\t\t * @returns A promise resolving to a map of path to token count result.\n\t\t\t */\n\t\t\tasync countFiles(paths: readonly ValidatedPath[]): Promise<TokenCostMap> {\n\t\t\t\tconst results = new Map<string, TokenCountResult>();\n\t\t\t\tfor (const filePath of paths) {\n\t\t\t\t\tconst result = await this.countFile(filePath);\n\t\t\t\t\tresults.set(filePath, result);\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\t\t};\n\t},\n\n\t/**\n\t * Synchronous heuristic-only token estimate for a string.\n\t *\n\t * Convenience method for cases where async is not needed and heuristic\n\t * accuracy is acceptable (e.g., quick estimates during file walking).\n\t *\n\t * @param content - The string to estimate.\n\t * @returns The heuristic token estimate.\n\t */\n\theuristicCount(content: string): number {\n\t\treturn heuristicCount(content);\n\t},\n\n\t/**\n\t * Synchronous heuristic-only token estimate from byte count.\n\t *\n\t * @param bytes - The byte count to estimate from.\n\t * @returns The heuristic token estimate.\n\t */\n\theuristicCountFromBytes(bytes: number): number {\n\t\treturn Math.ceil(bytes / BYTES_PER_TOKEN);\n\t},\n} as const;\n\n/**\n * Instance returned by {@link TokenCounter.create}.\n */\nexport interface TokenCounterInstance {\n\t/** Whether an external (accurate) counter is available. */\n\treadonly hasExternalCounter: boolean;\n\t/** Count tokens for a string. */\n\tcountString(content: string): Promise<TokenCountResult>;\n\t/** Count tokens for a file on disk. */\n\tcountFile(filePath: ValidatedPath): Promise<TokenCountResult>;\n\t/** Count tokens for multiple files. */\n\tcountFiles(paths: readonly ValidatedPath[]): Promise<TokenCostMap>;\n}\n\n/**\n * Reads file content as UTF-8 string.\n *\n * @param filePath - The absolute file path.\n * @returns The file content as a string.\n * @throws {CliError} If the file cannot be read.\n */\nfunction readFileContent(filePath: string): string {\n\ttry {\n\t\treturn fs.readFileSync(filePath, \"utf-8\");\n\t} catch (cause: unknown) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"Failed to read file for token counting\",\n\t\t\tsuggestion: \"Check that the file exists and has read permissions.\",\n\t\t\tcause,\n\t\t});\n\t}\n}\n","/**\n * Monorepo detection for `dev-session migrate`.\n *\n * Detects workspace configuration files (pnpm-workspace.yaml, nx.json,\n * turbo.json, package.json workspaces) and resolves the list of workspace\n * packages in the project.\n *\n * Only handles simple glob patterns of the form `dir/*` — this covers the\n * vast majority of real-world monorepo layouts without adding a glob library\n * dependency.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Supported monorepo tool types. */\nexport type MonorepoType = \"pnpm\" | \"nx\" | \"turborepo\" | \"npm\" | \"yarn\" | \"none\";\n\n/** A resolved workspace package directory. */\nexport interface WorkspacePackage {\n\t/** Relative path from project root (e.g. \"packages/core\"). */\n\treadonly relativePath: string;\n\t/** Absolute path to the package directory. */\n\treadonly absolutePath: string;\n\t/** Package name from package.json, or undefined if absent. */\n\treadonly name: string | undefined;\n}\n\n/** Result of monorepo detection. */\nexport interface MonorepoInfo {\n\t/** Whether this directory is the root of a monorepo. */\n\treadonly isMonorepo: boolean;\n\t/** The primary monorepo tooling detected. */\n\treadonly type: MonorepoType;\n\t/** Resolved workspace package directories. */\n\treadonly packages: readonly WorkspacePackage[];\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Detects monorepo workspace configuration and resolves member packages.\n */\nexport const MonorepoDetector = {\n\t/**\n\t * Scan a directory for monorepo workspace configuration.\n\t *\n\t * Detection order: pnpm-workspace.yaml → nx.json → turbo.json →\n\t * package.json (npm/yarn workspaces) → none.\n\t *\n\t * @param cwd - Absolute path to the project root.\n\t * @returns MonorepoInfo describing the detected workspace layout.\n\t */\n\tdetect(cwd: string): MonorepoInfo {\n\t\t// pnpm\n\t\tconst pnpmWorkspace = path.join(cwd, \"pnpm-workspace.yaml\");\n\t\tif (fs.existsSync(pnpmWorkspace)) {\n\t\t\tconst { include, exclude } = parsePnpmWorkspaceYaml(readFile(pnpmWorkspace));\n\t\t\tconst packages = resolvePackages(cwd, include, exclude);\n\t\t\treturn { isMonorepo: true, type: \"pnpm\", packages };\n\t\t}\n\n\t\t// nx (may still use package.json workspaces for the actual packages)\n\t\tif (fs.existsSync(path.join(cwd, \"nx.json\"))) {\n\t\t\tconst patterns = readPackageJsonWorkspaces(cwd) ?? [];\n\t\t\tconst packages = resolvePackages(cwd, patterns, []);\n\t\t\treturn { isMonorepo: true, type: \"nx\", packages };\n\t\t}\n\n\t\t// turborepo\n\t\tif (\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.json\")) ||\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.config.js\")) ||\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.config.ts\"))\n\t\t) {\n\t\t\tconst patterns = readPackageJsonWorkspaces(cwd) ?? [];\n\t\t\tconst packages = resolvePackages(cwd, patterns, []);\n\t\t\treturn { isMonorepo: true, type: \"turborepo\", packages };\n\t\t}\n\n\t\t// npm / yarn — package.json workspaces field\n\t\tconst wsPatterns = readPackageJsonWorkspaces(cwd);\n\t\tif (wsPatterns !== undefined && wsPatterns.length > 0) {\n\t\t\tconst type = detectNpmYarn(cwd);\n\t\t\tconst packages = resolvePackages(cwd, wsPatterns, []);\n\t\t\treturn { isMonorepo: true, type, packages };\n\t\t}\n\n\t\treturn { isMonorepo: false, type: \"none\", packages: [] };\n\t},\n\n\t/**\n\t * Returns true if the directory contains any supported workspace config.\n\t *\n\t * This is a lightweight check — it only tests for file existence, without\n\t * parsing contents or resolving packages.\n\t *\n\t * @param cwd - Absolute path to the project root.\n\t * @returns true if a monorepo workspace file is present.\n\t */\n\tisMonorepoRoot(cwd: string): boolean {\n\t\tif (fs.existsSync(path.join(cwd, \"pnpm-workspace.yaml\"))) {\n\t\t\treturn true;\n\t\t}\n\t\tif (fs.existsSync(path.join(cwd, \"nx.json\"))) {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.json\")) ||\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.config.js\")) ||\n\t\t\tfs.existsSync(path.join(cwd, \"turbo.config.ts\"))\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (readPackageJsonWorkspaces(cwd)?.length ?? 0) > 0;\n\t},\n} as const;\n\n// ---------------------------------------------------------------------------\n// Parsers\n// ---------------------------------------------------------------------------\n\n/** Parsed result from pnpm-workspace.yaml. */\ninterface PnpmWorkspacePatterns {\n\t/** Positive glob patterns (directories to include). */\n\treadonly include: string[];\n\t/** Negation patterns (directories to exclude), with the leading `!` stripped. */\n\treadonly exclude: string[];\n}\n\n/**\n * Parse workspace glob patterns from a pnpm-workspace.yaml file.\n *\n * Handles the standard YAML list format under a top-level `packages:` key.\n * Negation patterns (starting with `!`) are returned separately so the\n * resolver can filter them out after expansion.\n *\n * @param content - Raw file content.\n * @returns Include and exclude pattern lists.\n */\nfunction parsePnpmWorkspaceYaml(content: string): PnpmWorkspacePatterns {\n\tconst include: string[] = [];\n\tconst exclude: string[] = [];\n\tlet inPackages = false;\n\n\tfor (const line of content.split(\"\\n\")) {\n\t\tconst trimmed = line.trimEnd();\n\n\t\tif (/^packages\\s*:/.test(trimmed)) {\n\t\t\tinPackages = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inPackages) {\n\t\t\t// List item under packages:\n\t\t\tif (/^\\s+-\\s/.test(trimmed)) {\n\t\t\t\tlet value = trimmed.replace(/^\\s+-\\s+/, \"\").trim();\n\t\t\t\t// Strip surrounding quotes\n\t\t\t\tif (\n\t\t\t\t\t(value.startsWith(\"'\") && value.endsWith(\"'\")) ||\n\t\t\t\t\t(value.startsWith('\"') && value.endsWith('\"'))\n\t\t\t\t) {\n\t\t\t\t\tvalue = value.slice(1, -1);\n\t\t\t\t}\n\t\t\t\tif (value.startsWith(\"!\")) {\n\t\t\t\t\texclude.push(value.slice(1));\n\t\t\t\t} else {\n\t\t\t\t\tinclude.push(value);\n\t\t\t\t}\n\t\t\t} else if (trimmed && !/^\\s/.test(trimmed) && !trimmed.startsWith(\"#\")) {\n\t\t\t\t// New top-level YAML key — leave the packages section\n\t\t\t\tinPackages = false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { include, exclude };\n}\n\n/**\n * Read workspace glob patterns from package.json's `workspaces` field.\n *\n * Supports both the plain array format (npm) and the `{ packages: [...] }`\n * nested format (Yarn 1).\n *\n * @param cwd - Project root directory.\n * @returns Array of glob patterns, or undefined if none found.\n */\nfunction readPackageJsonWorkspaces(cwd: string): string[] | undefined {\n\tconst pkgPath = path.join(cwd, \"package.json\");\n\tif (!fs.existsSync(pkgPath)) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst raw: unknown = JSON.parse(readFile(pkgPath));\n\t\tif (typeof raw !== \"object\" || raw === null) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst record = raw as Record<string, unknown>;\n\t\tconst workspaces: unknown = record.workspaces;\n\n\t\tif (Array.isArray(workspaces)) {\n\t\t\treturn workspaces.filter((w): w is string => typeof w === \"string\");\n\t\t}\n\n\t\t// Yarn 1 nested: { packages: [...], nohoist: [...] }\n\t\tif (typeof workspaces === \"object\" && workspaces !== null) {\n\t\t\tconst ws = workspaces as Record<string, unknown>;\n\t\t\tconst packages: unknown = ws.packages;\n\t\t\tif (Array.isArray(packages)) {\n\t\t\t\treturn packages.filter((p): p is string => typeof p === \"string\");\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Malformed package.json — treat as no workspaces\n\t}\n\n\treturn undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Package resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve a list of glob patterns to concrete workspace package directories.\n *\n * Only handles simple `dir/*` and literal directory patterns. Complex\n * patterns with `**` or multiple wildcards are skipped.\n *\n * @param cwd - Project root directory.\n * @param patterns - Workspace glob patterns (positive).\n * @param excludePatterns - Negation patterns to filter out after expansion.\n * @returns Array of resolved workspace packages.\n */\nfunction resolvePackages(\n\tcwd: string,\n\tpatterns: string[],\n\texcludePatterns: string[],\n): WorkspacePackage[] {\n\t// Expand exclusions to concrete relative paths for fast lookup\n\tconst excluded = new Set<string>();\n\tfor (const pattern of excludePatterns) {\n\t\tfor (const rel of expandPattern(cwd, pattern)) {\n\t\t\texcluded.add(rel);\n\t\t}\n\t}\n\n\tconst seen = new Set<string>();\n\tconst packages: WorkspacePackage[] = [];\n\n\tfor (const pattern of patterns) {\n\t\tfor (const rel of expandPattern(cwd, pattern)) {\n\t\t\tif (seen.has(rel) || excluded.has(rel)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(rel);\n\n\t\t\tconst absolutePath = path.join(cwd, rel);\n\t\t\tpackages.push({\n\t\t\t\trelativePath: rel,\n\t\t\t\tabsolutePath,\n\t\t\t\tname: readPackageName(absolutePath),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn packages;\n}\n\n/**\n * Expand a single workspace glob pattern to relative directory paths.\n *\n * Supports:\n * - Literal directories: `packages/core` → `[\"packages/core\"]`\n * - Single-level wildcard: `packages/*` → lists all subdirs of `packages/`\n *\n * @param cwd - Project root directory.\n * @param pattern - Glob pattern to expand.\n * @returns Array of matching relative paths (forward-slash separated).\n */\nfunction expandPattern(cwd: string, pattern: string): string[] {\n\tif (!pattern.includes(\"*\") && !pattern.includes(\"?\")) {\n\t\t// Literal path\n\t\tconst abs = path.join(cwd, pattern);\n\t\tif (isDirectory(abs)) {\n\t\t\treturn [normalizeSlashes(pattern)];\n\t\t}\n\t\treturn [];\n\t}\n\n\tconst parts = pattern.split(\"/\");\n\tconst wildcardIdx = parts.findIndex((p) => p.includes(\"*\") || p.includes(\"?\"));\n\n\t// Only handle the simple `dir/*` case (wildcard is the last segment and is `*`)\n\tif (wildcardIdx !== parts.length - 1 || parts[wildcardIdx] !== \"*\") {\n\t\treturn [];\n\t}\n\n\tconst parentRel = parts.slice(0, wildcardIdx).join(\"/\");\n\tconst parentAbs = parentRel ? path.join(cwd, parentRel) : cwd;\n\n\tif (!isDirectory(parentAbs)) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst entries = fs.readdirSync(parentAbs, { withFileTypes: true });\n\t\treturn entries\n\t\t\t.filter((e) => e.isDirectory() && !e.name.startsWith(\".\"))\n\t\t\t.map((e) => normalizeSlashes(parentRel ? `${parentRel}/${e.name}` : e.name));\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Detect whether npm or yarn is used based on lockfile presence.\n *\n * @param cwd - Project root.\n * @returns \"yarn\" if yarn.lock exists, otherwise \"npm\".\n */\nfunction detectNpmYarn(cwd: string): \"npm\" | \"yarn\" {\n\treturn fs.existsSync(path.join(cwd, \"yarn.lock\")) ? \"yarn\" : \"npm\";\n}\n\n/**\n * Read the `name` field from a package's package.json.\n *\n * @param packageDir - Absolute path to the package directory.\n * @returns Package name string or undefined.\n */\nfunction readPackageName(packageDir: string): string | undefined {\n\tconst pkgPath = path.join(packageDir, \"package.json\");\n\tif (!fs.existsSync(pkgPath)) {\n\t\treturn undefined;\n\t}\n\ttry {\n\t\tconst raw: unknown = JSON.parse(readFile(pkgPath));\n\t\tif (typeof raw !== \"object\" || raw === null) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst record = raw as Record<string, unknown>;\n\t\tconst name: unknown = record.name;\n\t\treturn typeof name === \"string\" ? name : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Read a file's content as UTF-8 string. Returns empty string on error.\n *\n * @param filePath - Absolute path to the file.\n * @returns File content string.\n */\nfunction readFile(filePath: string): string {\n\ttry {\n\t\treturn fs.readFileSync(filePath, \"utf-8\");\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\n/**\n * Return true if the path exists and is a directory.\n *\n * @param absPath - Absolute path to check.\n * @returns true if the path is a directory.\n */\nfunction isDirectory(absPath: string): boolean {\n\ttry {\n\t\treturn fs.statSync(absPath).isDirectory();\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Normalize path separators to forward slashes.\n *\n * @param p - Path string.\n * @returns Path with backslashes replaced by forward slashes.\n */\nfunction normalizeSlashes(p: string): string {\n\treturn p.replace(/\\\\/g, \"/\");\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { CliError } from \"@dev-session/security\";\nimport type { ProjectInfo, ProjectTypeValue } from \"../schemas/index.js\";\nimport { DetectedTool, ProjectType } from \"../schemas/index.js\";\n\n/** Files and directories that indicate a specific AI tool is in use. */\nconst TOOL_INDICATORS = {\n\tclaude: [\"CLAUDE.md\", \".claude\"],\n\topencode: [\"AGENTS.md\", \"opencode.json\"],\n\tcursor: [\".cursor\", \".cursor/rules\"],\n} as const;\n\n/** Notable files to scan for in the project root. */\nconst NOTABLE_FILES = [\n\t\"PLAN.md\",\n\t\"docs/PLAN.md\",\n\t\"CLAUDE.md\",\n\t\"AGENTS.md\",\n\t\"package.json\",\n\t\".git\",\n\t\".session\",\n] as const;\n\n/** Vite config file names. */\nconst VITE_CONFIGS = [\"vite.config.ts\", \"vite.config.js\"] as const;\n\n/** Next.js config file names. */\nconst NEXT_CONFIGS = [\"next.config.ts\", \"next.config.js\", \"next.config.mjs\"] as const;\n\n/**\n * Checks whether a file or directory exists at the given path.\n *\n * @param fullPath - Absolute path to check.\n * @returns `true` if the path exists on disk.\n */\nfunction exists(fullPath: string): boolean {\n\treturn fs.existsSync(fullPath);\n}\n\n/**\n * Checks whether any of the given file names exist in the target directory.\n *\n * @param cwd - The directory to scan.\n * @param fileNames - An array of relative file/directory names to look for.\n * @returns `true` if at least one of the file names exists.\n */\nfunction anyExists(cwd: string, fileNames: readonly string[]): boolean {\n\treturn fileNames.some((name) => exists(path.join(cwd, name)));\n}\n\n/**\n * Detects which AI coding tool is configured in the project directory.\n *\n * @param cwd - The directory to scan for tool indicators.\n * @returns The detected tool identifier.\n */\nfunction detectTool(cwd: string): \"claude\" | \"opencode\" | \"cursor\" | \"unknown\" {\n\tif (anyExists(cwd, TOOL_INDICATORS.claude)) {\n\t\treturn DetectedTool.CLAUDE;\n\t}\n\tif (anyExists(cwd, TOOL_INDICATORS.opencode)) {\n\t\treturn DetectedTool.OPENCODE;\n\t}\n\tif (anyExists(cwd, TOOL_INDICATORS.cursor)) {\n\t\treturn DetectedTool.CURSOR;\n\t}\n\treturn DetectedTool.UNKNOWN;\n}\n\n/**\n * Collects a list of notable files that exist in the project root.\n *\n * @param cwd - The directory to scan.\n * @returns An array of relative paths for files that were found.\n */\nfunction collectExistingFiles(cwd: string): string[] {\n\tconst found: string[] = [];\n\tfor (const file of NOTABLE_FILES) {\n\t\tif (exists(path.join(cwd, file))) {\n\t\t\tfound.push(file);\n\t\t}\n\t}\n\treturn found;\n}\n\n/**\n * Safely reads and parses the project name from `package.json`.\n *\n * @param cwd - The directory containing the `package.json`.\n * @returns The project name string, or `undefined` if not readable or not present.\n */\nfunction readProjectName(cwd: string): string | undefined {\n\tconst pkgPath = path.join(cwd, \"package.json\");\n\tif (!exists(pkgPath)) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst raw: unknown = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n\t\tif (typeof raw !== \"object\" || raw === null) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst record = raw as Record<string, unknown>;\n\t\tconst name: unknown = record.name;\n\t\treturn typeof name === \"string\" ? name : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Detects the project environment — AI tool, framework type, notable files,\n * and session state — for a given working directory.\n *\n * Designed as a one-time synchronous scan at startup. All filesystem access\n * uses `fs.existsSync` / `fs.readFileSync` because detection is not on the\n * hot path.\n */\nexport const ProjectDetector = {\n\t/**\n\t * Scans the given directory and returns a complete {@link ProjectInfo} snapshot.\n\t *\n\t * @param cwd - Absolute path to the project root directory.\n\t * @returns A {@link ProjectInfo} object describing the detected environment.\n\t * @throws {CliError} If `cwd` does not exist or is not a directory.\n\t */\n\tdetect(cwd: string): ProjectInfo {\n\t\tassertDirectory(cwd);\n\n\t\tconst tool = detectTool(cwd);\n\t\tconst projectType = ProjectDetector.getProjectType(cwd);\n\t\tconst existingFiles = collectExistingFiles(cwd);\n\t\tconst hasSession = ProjectDetector.hasExistingSession(cwd);\n\t\tconst projectName = readProjectName(cwd);\n\n\t\tconst info: ProjectInfo = {\n\t\t\ttool,\n\t\t\tproject_type: projectType,\n\t\t\texisting_files: existingFiles,\n\t\t\tproject_root: cwd,\n\t\t\thas_existing_session: hasSession,\n\t\t};\n\n\t\tif (projectName !== undefined) {\n\t\t\tinfo.project_name = projectName;\n\t\t}\n\n\t\treturn info;\n\t},\n\n\t/**\n\t * Checks whether a `.session/` directory already exists in the project.\n\t *\n\t * @param cwd - Absolute path to the project root directory.\n\t * @returns `true` if a `.session/` directory exists.\n\t */\n\thasExistingSession(cwd: string): boolean {\n\t\treturn exists(path.join(cwd, \".session\"));\n\t},\n\n\t/**\n\t * Determines the project framework type by checking for known config files.\n\t *\n\t * Detection order: Vite > Next.js > Node (package.json) > unknown.\n\t *\n\t * @param cwd - Absolute path to the project root directory.\n\t * @returns The detected {@link ProjectTypeValue}.\n\t */\n\tgetProjectType(cwd: string): ProjectTypeValue {\n\t\tif (anyExists(cwd, VITE_CONFIGS)) {\n\t\t\treturn ProjectType.VITE;\n\t\t}\n\t\tif (anyExists(cwd, NEXT_CONFIGS)) {\n\t\t\treturn ProjectType.NEXT;\n\t\t}\n\t\tif (exists(path.join(cwd, \"package.json\"))) {\n\t\t\treturn ProjectType.NODE;\n\t\t}\n\t\treturn ProjectType.UNKNOWN;\n\t},\n} as const;\n\n/**\n * Validates that the given path is an existing directory.\n *\n * @param cwd - The path to validate.\n * @throws {CliError} If the path does not exist or is not a directory.\n */\nfunction assertDirectory(cwd: string): void {\n\tif (!exists(cwd)) {\n\t\tthrow new CliError({\n\t\t\tmessage: `Directory does not exist: ${path.relative(process.cwd(), cwd) || \".\"}`,\n\t\t\tsuggestion: \"Check the path and try again.\",\n\t\t});\n\t}\n\n\ttry {\n\t\tconst stat = fs.statSync(cwd);\n\t\tif (!stat.isDirectory()) {\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: `Path is not a directory: ${path.relative(process.cwd(), cwd) || \".\"}`,\n\t\t\t\tsuggestion: \"Provide a directory path, not a file.\",\n\t\t\t});\n\t\t}\n\t} catch (error: unknown) {\n\t\tif (error instanceof CliError) {\n\t\t\tthrow error;\n\t\t}\n\t\tthrow new CliError({\n\t\t\tmessage: `Unable to read path: ${path.relative(process.cwd(), cwd) || \".\"}`,\n\t\t\tsuggestion: \"Check file permissions and try again.\",\n\t\t\tcause: error,\n\t\t});\n\t}\n}\n","/**\n * Shared utility functions for bootstrap formatters.\n *\n * Pure functions used across all formatter implementations (plain, Claude,\n * opencode, Cursor) to build common prompt sections: completed-chunk\n * summaries, chunk progress, budget status, and pending task lists.\n *\n * @packageDocumentation\n */\n\nimport type { ContextBudget } from \"../schemas/context-budget.js\";\nimport type { PlanChunk, SessionState, Task } from \"../schemas/index.js\";\n\n/** Maximum pending tasks to show in the \"Next\" section by default. */\nexport const DEFAULT_MAX_NEXT_TASKS = 4;\n\n/** Maximum notes to include by default. */\nexport const DEFAULT_MAX_NOTES = 2;\n\n/** Maximum lines in a generated prompt by default. */\nexport const DEFAULT_MAX_PROMPT_LINES = 20;\n\n/**\n * Summarizes completed chunks as a compact one-liner.\n *\n * @param state - The session state with completed_chunks record.\n * @returns A compact summary string like \"Chunks 1-3 done\", or empty string if none.\n */\nexport function formatCompletedChunksSummary(state: SessionState): string {\n\tconst keys = Object.keys(state.completed_chunks)\n\t\t.map((k) => Number.parseInt(k, 10))\n\t\t.filter((n) => !Number.isNaN(n))\n\t\t.sort((a, b) => a - b);\n\n\tif (keys.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tif (keys.length === 1) {\n\t\treturn `Chunk ${String(keys[0])} done.`;\n\t}\n\n\t// Check if consecutive\n\tconst first = keys[0] as number;\n\tconst last = keys[keys.length - 1] as number;\n\tconst isConsecutive = last - first === keys.length - 1;\n\n\tif (isConsecutive) {\n\t\treturn `Chunks ${String(first)}-${String(last)} done.`;\n\t}\n\n\treturn `Chunks ${keys.map(String).join(\", \")} done.`;\n}\n\n/**\n * Builds the progress line for the active chunk.\n *\n * @param chunk - The active plan chunk.\n * @returns A string like \"3/8 tasks done, 1 in-progress\".\n */\nexport function formatChunkProgress(chunk: PlanChunk): string {\n\tconst total = chunk.tasks.length;\n\tconst done = chunk.tasks.filter((t) => t.status === \"done\").length;\n\tconst inProgress = chunk.tasks.filter((t) => t.status === \"in-progress\").length;\n\n\tconst parts: string[] = [`${String(done)}/${String(total)} tasks done`];\n\n\tif (inProgress > 0) {\n\t\tparts.push(`${String(inProgress)} in-progress`);\n\t}\n\n\treturn parts.join(\", \");\n}\n\n/**\n * Formats the budget status line.\n *\n * @param budget - The calculated context budget.\n * @returns A compact budget status string like \"Budget: ~750/4000 tokens [OK]\".\n */\nexport function formatBudgetLine(budget: ContextBudget): string {\n\tconst status = budget.overBudget ? \"OVER\" : \"OK\";\n\treturn `Budget: ~${String(budget.totalTokens)}/${String(budget.budgetCap)} tokens [${status}]`;\n}\n\n/**\n * Gets pending tasks from a chunk (todo + in-progress).\n *\n * @param chunk - The plan chunk.\n * @returns Array of pending task objects.\n */\nexport function getPendingTasks(chunk: PlanChunk): readonly Task[] {\n\treturn chunk.tasks.filter((t) => t.status === \"todo\" || t.status === \"in-progress\");\n}\n\n/**\n * Trims a lines array to the maximum allowed line count.\n *\n * @param lines - The full set of prompt lines.\n * @param maxLines - Maximum number of lines to keep.\n * @returns Lines trimmed to the specified cap.\n */\nexport function trimToMaxLines(lines: readonly string[], maxLines: number): readonly string[] {\n\tif (lines.length <= maxLines) {\n\t\treturn lines;\n\t}\n\treturn lines.slice(0, maxLines);\n}\n","/**\n * Default bootstrap formatter that produces plain-text NEXT_PROMPT.md content.\n *\n * Uses structured sections with per-section line budgets to maximize\n * information density within the prompt's line cap.\n *\n * Section budget (20 lines total):\n * - Header: 3 lines (project, chunk, budget)\n * - Context: 4 lines (files to load, excludes)\n * - Resume: 5 lines (progress, completed chunks, last touched)\n * - Next: 5 lines (pending tasks)\n * - Notes: 3 lines (first relevant notes)\n *\n * @packageDocumentation\n */\n\nimport type { FileIndexEntry } from \"../schemas/index.js\";\nimport type { BootstrapContext, BootstrapFormatter } from \"./bootstrap-formatter.js\";\nimport {\n\tDEFAULT_MAX_NEXT_TASKS,\n\tDEFAULT_MAX_NOTES,\n\tDEFAULT_MAX_PROMPT_LINES,\n\tformatBudgetLine,\n\tformatChunkProgress,\n\tformatCompletedChunksSummary,\n\tgetPendingTasks,\n\ttrimToMaxLines,\n} from \"./formatter-utils.js\";\n\n/** Maximum files to show in the \"Load\" section before truncating. */\nconst MAX_FILES_TO_SHOW = 6;\n\n/**\n * Default bootstrap formatter using plain text.\n *\n * Suitable for any tool that reads NEXT_PROMPT.md as plain text.\n * Produces structured, information-dense output within a 20-line cap.\n */\nexport const PlainTextFormatter: BootstrapFormatter = {\n\tname: \"plain\",\n\n\t/**\n\t * Formats file paths as a comma-separated list.\n\t *\n\t * @param files - The file index entries to format.\n\t * @returns Formatted string of file paths.\n\t */\n\tformatFilesToLoad(files: readonly FileIndexEntry[]): string {\n\t\tif (files.length === 0) {\n\t\t\treturn \"(none)\";\n\t\t}\n\n\t\tconst shown = files.slice(0, MAX_FILES_TO_SHOW).map((f) => f.filepath);\n\t\tconst remaining = files.length - shown.length;\n\t\tconst suffix = remaining > 0 ? `, +${String(remaining)} more` : \"\";\n\t\treturn shown.join(\", \") + suffix;\n\t},\n\n\t/**\n\t * Formats exclude patterns as a \"Do NOT load\" instruction.\n\t *\n\t * @param patterns - The glob patterns or paths to exclude.\n\t * @returns Formatted exclude instruction string.\n\t */\n\tformatExcludes(patterns: readonly string[]): string {\n\t\tif (patterns.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn `Do NOT load: ${patterns.join(\", \")}`;\n\t},\n\n\t/**\n\t * Generates the full bootstrap prompt with structured sections.\n\t *\n\t * @param context - The full bootstrap context data.\n\t * @returns The NEXT_PROMPT.md content string.\n\t */\n\tgeneratePrompt(context: BootstrapContext): string {\n\t\tconst { state, chunk, chunkFiles, alwaysIncludeFiles, budget, excludePatterns, projectName } =\n\t\t\tcontext;\n\n\t\tconst lines: string[] = [];\n\n\t\t// -- Header section (3 lines) --\n\t\tlines.push(`Project: ${projectName}`);\n\t\tlines.push(`Active chunk: ${String(chunk.chunk_id)} — ${chunk.title}`);\n\t\tlines.push(formatBudgetLine(budget));\n\n\t\t// -- Context section (up to 4 lines) --\n\t\tconst allFiles = [...alwaysIncludeFiles, ...chunkFiles];\n\t\tlines.push(`Load: ${this.formatFilesToLoad(allFiles)}`);\n\n\t\tconst excludeStr = this.formatExcludes(excludePatterns);\n\t\tif (excludeStr.length > 0) {\n\t\t\tlines.push(excludeStr);\n\t\t}\n\n\t\t// -- Resume section (up to 5 lines) --\n\t\tconst completedSummary = formatCompletedChunksSummary(state);\n\t\tconst progress = formatChunkProgress(chunk);\n\t\tconst resumeParts: string[] = [progress];\n\t\tif (completedSummary.length > 0) {\n\t\t\tresumeParts.push(completedSummary);\n\t\t}\n\t\tlines.push(`Resume: ${resumeParts.join(\" \")}`);\n\n\t\tif (state.last_worked_files.length > 0) {\n\t\t\tconst lastFiles = state.last_worked_files.slice(0, 3).join(\", \");\n\t\t\tlines.push(`Last touched: ${lastFiles}`);\n\t\t}\n\n\t\t// -- Next tasks section (up to 5 lines) --\n\t\tconst pending = getPendingTasks(chunk);\n\t\tif (pending.length > 0) {\n\t\t\tlines.push(\"Next:\");\n\t\t\tconst shown = pending.slice(0, DEFAULT_MAX_NEXT_TASKS);\n\t\t\tfor (const task of shown) {\n\t\t\t\tconst prefix = task.status === \"in-progress\" ? \"[WIP]\" : \"[ ]\";\n\t\t\t\tlines.push(` ${prefix} ${task.text}`);\n\t\t\t}\n\t\t\tconst remaining = pending.length - shown.length;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(` (+${String(remaining)} more tasks)`);\n\t\t\t}\n\t\t}\n\n\t\t// -- Notes section (up to 3 lines) --\n\t\tif (state.notes.length > 0) {\n\t\t\tconst notesToShow = state.notes.slice(0, DEFAULT_MAX_NOTES);\n\t\t\tfor (const note of notesToShow) {\n\t\t\t\tlines.push(`Note: ${note}`);\n\t\t\t}\n\t\t}\n\n\t\t// Trim to max lines\n\t\tconst trimmed = trimToMaxLines(lines, DEFAULT_MAX_PROMPT_LINES);\n\t\treturn `${trimmed.join(\"\\n\")}\\n`;\n\t},\n} as const;\n","/**\n * Generates and writes NEXT_PROMPT.md — a self-contained bootstrap for the next AI session.\n *\n * The prompt is capped at {@link MAX_PROMPT_LINES} lines and includes project name,\n * active chunk, files to load, resume context, and next steps.\n *\n * Supports two generation modes:\n * 1. Legacy `generate()` — backward-compatible simple generation\n * 2. `generateWithFormatter()` — uses a {@link BootstrapFormatter} for tool-specific output\n *\n * @packageDocumentation\n */\n\nimport * as path from \"node:path\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, CliError } from \"@dev-session/security\";\nimport type { BootstrapContext, BootstrapFormatter } from \"../formatters/bootstrap-formatter.js\";\nimport type {\n\tFileIndexEntry,\n\tPlanChunk,\n\tSessionState,\n\tValidationResult,\n} from \"../schemas/index.js\";\nimport { MAX_PROMPT_LINES } from \"../schemas/index.js\";\n\n/** Maximum number of file paths to include in the \"Files to load\" line. */\nconst MAX_FILES_TO_SHOW = 5;\n\n/** Maximum number of \"Next\" task lines to include. */\nconst MAX_NEXT_LINES = 4;\n\n/** The filename for the next prompt file. */\nconst NEXT_PROMPT_FILENAME = \"NEXT_PROMPT.md\";\n\n/**\n * Required field prefixes that must appear in a valid next prompt.\n *\n * Validation accepts both legacy (\"Files to load:\") and new (\"Load:\") field names.\n */\nconst REQUIRED_FIELDS: readonly string[] = [\"Project:\", \"Active chunk:\"];\n\n/** Field prefixes for file loading — at least one must be present. */\nconst FILE_LOAD_FIELDS: readonly string[] = [\"Files to load:\", \"Load:\"];\n\n/**\n * Extracts a project name from the session ID.\n *\n * Falls back to `\"dev-session\"` if the session ID does not contain a recognizable name.\n *\n * @param sessionId - The session's unique identifier string.\n * @returns A human-readable project name.\n */\nfunction extractProjectName(sessionId: string): string {\n\treturn sessionId.length > 0 ? sessionId : \"dev-session\";\n}\n\n/**\n * Formats the \"Files to load\" value from file index entries.\n *\n * @param files - The file index entries tagged to the active chunk.\n * @returns A comma-separated string of file paths, capped at {@link MAX_FILES_TO_SHOW}.\n */\nfunction formatFilePaths(files: readonly FileIndexEntry[]): string {\n\tif (files.length === 0) {\n\t\treturn \"(none)\";\n\t}\n\n\tconst shown = files.slice(0, MAX_FILES_TO_SHOW).map((f) => f.filepath);\n\tconst remaining = files.length - shown.length;\n\tconst suffix = remaining > 0 ? `, +${String(remaining)} more` : \"\";\n\n\treturn shown.join(\", \") + suffix;\n}\n\n/**\n * Builds the \"Resume\" line summarizing completed vs remaining tasks.\n *\n * @param state - The current session state.\n * @param chunk - The active plan chunk.\n * @returns A one-line summary of progress.\n */\nfunction buildResumeLine(state: SessionState, chunk: PlanChunk): string {\n\tconst allTasks = chunk.tasks;\n\tconst doneTasks = allTasks.filter((t) => t.status === \"done\");\n\tconst inProgress = allTasks.filter((t) => t.status === \"in-progress\");\n\n\tconst parts: string[] = [];\n\tparts.push(`${String(doneTasks.length)}/${String(allTasks.length)} tasks done`);\n\n\tif (inProgress.length > 0) {\n\t\tconst ipNames = inProgress.map((t) => t.text).join(\", \");\n\t\tparts.push(`in-progress: ${ipNames}`);\n\t}\n\n\tif (state.last_worked_files.length > 0) {\n\t\tparts.push(`last touched: ${state.last_worked_files.slice(0, 3).join(\", \")}`);\n\t}\n\n\treturn parts.join(\"; \");\n}\n\n/**\n * Builds the \"Next\" lines listing remaining todo tasks.\n *\n * @param chunk - The active plan chunk.\n * @returns An array of strings, each describing one pending task (max {@link MAX_NEXT_LINES}).\n */\nfunction buildNextLines(chunk: PlanChunk): readonly string[] {\n\tconst todoTasks = chunk.tasks.filter((t) => t.status === \"todo\");\n\treturn todoTasks.slice(0, MAX_NEXT_LINES).map((t) => `- ${t.text}`);\n}\n\n/**\n * Trims a prompt to the maximum allowed line count.\n *\n * @param lines - The full set of prompt lines.\n * @returns Lines trimmed to {@link MAX_PROMPT_LINES}.\n */\nfunction trimToMaxLines(lines: readonly string[]): readonly string[] {\n\tif (lines.length <= MAX_PROMPT_LINES) {\n\t\treturn lines;\n\t}\n\treturn lines.slice(0, MAX_PROMPT_LINES);\n}\n\n/**\n * Generates and writes NEXT_PROMPT.md for the next AI coding session.\n *\n * Exports:\n * - `generate()` — legacy simple generation (backward-compatible)\n * - `generateWithFormatter()` — formatter-aware generation with context budget support\n * - `write()` — writes content to NEXT_PROMPT.md via AtomicWriter\n * - `validate()` — validates prompt content structure\n */\nexport const NextPromptWriter = {\n\t/**\n\t * Generates the content string for NEXT_PROMPT.md (legacy mode).\n\t *\n\t * Pure function — no side effects. The output is capped at {@link MAX_PROMPT_LINES} lines.\n\t * For tool-specific output, use {@link generateWithFormatter} instead.\n\t *\n\t * @param state - The current session state (active chunk, tasks, notes).\n\t * @param chunk - The active plan chunk with its tasks and title.\n\t * @param files - File index entries tagged to the active chunk.\n\t * @returns A string suitable for writing to NEXT_PROMPT.md.\n\t */\n\tgenerate(state: SessionState, chunk: PlanChunk, files: readonly FileIndexEntry[]): string {\n\t\tconst projectName = extractProjectName(state.session_id);\n\t\tconst chunkLabel = `${String(chunk.chunk_id)} — ${chunk.title}`;\n\t\tconst filePaths = formatFilePaths(files);\n\t\tconst resumeText = buildResumeLine(state, chunk);\n\t\tconst nextLines = buildNextLines(chunk);\n\n\t\tconst lines: string[] = [\n\t\t\t`Project: ${projectName}`,\n\t\t\t`Active chunk: ${chunkLabel}`,\n\t\t\t`Files to load: ${filePaths}`,\n\t\t\t`Resume: ${resumeText}`,\n\t\t];\n\n\t\tif (nextLines.length > 0) {\n\t\t\tlines.push(\"Next:\");\n\t\t\tfor (const line of nextLines) {\n\t\t\t\tlines.push(line);\n\t\t\t}\n\t\t}\n\n\t\tif (state.notes.length > 0) {\n\t\t\tconst firstNote = state.notes[0];\n\t\t\tif (firstNote !== undefined) {\n\t\t\t\tlines.push(`Note: ${firstNote}`);\n\t\t\t}\n\t\t}\n\n\t\tconst trimmed = trimToMaxLines(lines);\n\t\treturn `${trimmed.join(\"\\n\")}\\n`;\n\t},\n\n\t/**\n\t * Generates NEXT_PROMPT.md content using a {@link BootstrapFormatter}.\n\t *\n\t * This is the recommended generation method. It delegates formatting to\n\t * the provided formatter, which can produce tool-specific output\n\t * (e.g., Claude Code `@`-mentions, opencode format, etc.).\n\t *\n\t * @param formatter - The bootstrap formatter to use for rendering.\n\t * @param context - The full bootstrap context data.\n\t * @returns A string suitable for writing to NEXT_PROMPT.md.\n\t */\n\tgenerateWithFormatter(formatter: BootstrapFormatter, context: BootstrapContext): string {\n\t\treturn formatter.generatePrompt(context);\n\t},\n\n\t/**\n\t * Writes the generated prompt content to NEXT_PROMPT.md inside the session directory.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t * @param content - The prompt content string to write.\n\t * @throws {CliError} If the content is empty.\n\t */\n\twrite(sessionDir: ValidatedPath, content: string): void {\n\t\tif (content.trim().length === 0) {\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: \"Cannot write empty NEXT_PROMPT.md\",\n\t\t\t\tsuggestion: \"Generate content with NextPromptWriter.generate() first\",\n\t\t\t});\n\t\t}\n\n\t\tconst filePath = path.join(sessionDir, NEXT_PROMPT_FILENAME) as ValidatedPath;\n\t\tAtomicWriter.writeFile(filePath, content);\n\t},\n\n\t/**\n\t * Validates a NEXT_PROMPT.md content string.\n\t *\n\t * Checks that the content is non-empty, within the line limit, and contains\n\t * all required field prefixes. Supports both legacy (\"Files to load:\") and\n\t * new (\"Load:\") field names for file references.\n\t *\n\t * @param content - The prompt content string to validate.\n\t * @returns A {@link ValidationResult} with validity status, line count, and any errors.\n\t */\n\tvalidate(content: string): ValidationResult {\n\t\tconst errors: string[] = [];\n\t\tconst lines = content.split(\"\\n\").filter((line) => line.length > 0);\n\t\tconst lineCount = lines.length;\n\n\t\tif (content.trim().length === 0) {\n\t\t\terrors.push(\"Content is empty\");\n\t\t}\n\n\t\tif (lineCount > MAX_PROMPT_LINES) {\n\t\t\terrors.push(`Line count ${String(lineCount)} exceeds maximum of ${String(MAX_PROMPT_LINES)}`);\n\t\t}\n\n\t\tfor (const field of REQUIRED_FIELDS) {\n\t\t\tconst found = lines.some((line) => line.startsWith(field));\n\t\t\tif (!found) {\n\t\t\t\terrors.push(`Missing required field: \"${field}\"`);\n\t\t\t}\n\t\t}\n\n\t\t// Check for at least one file load field (supports both old and new format)\n\t\tconst hasFileLoadField = lines.some((line) =>\n\t\t\tFILE_LOAD_FIELDS.some((field) => line.startsWith(field)),\n\t\t);\n\t\tif (!hasFileLoadField) {\n\t\t\terrors.push(\n\t\t\t\t`Missing file load field: expected one of ${FILE_LOAD_FIELDS.map((f) => `\"${f}\"`).join(\" or \")}`,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tvalid: errors.length === 0,\n\t\t\tlineCount,\n\t\t\terrors,\n\t\t};\n\t},\n} as const;\n","/**\n * Generates and writes ROUTINES.md — bootstrap and self-update prompt snippets.\n *\n * This is a static file with well-known content. It is written once during\n * `dev-session init` and rarely changes.\n *\n * @packageDocumentation\n */\n\nimport * as path from \"node:path\";\n\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter } from \"@dev-session/security\";\n\n/** The filename for the routines file within the session directory. */\nconst ROUTINES_FILENAME = \"ROUTINES.md\";\n\n/**\n * Builds the static ROUTINES.md content string.\n *\n * @returns The full markdown content for ROUTINES.md.\n */\nfunction buildRoutinesContent(): string {\n\treturn `# Routines\n\n## Bootstrap Routine\n\nAt the start of every session, paste this prompt:\n\n\\`\\`\\`\nRead .session/SESSION_STATE.md to find the active chunk.\nRead .session/FILE_INDEX.md to identify files tagged to the active chunk.\nRead the active chunk file (e.g., .session/PLAN_N.md).\nLoad only the tagged files into context.\nSummarize: active chunk goal, today's tasks, files in context.\nAsk for confirmation before writing any code.\n\\`\\`\\`\n\n## Self-Update Routine\n\nAt the end of every session, run this:\n\n\\`\\`\\`\nSession ending. Execute in order:\n1. Update .session/SESSION_STATE.md — mark completed tasks [x], note stopping point, update last-worked files\n2. Update .session/FILE_INDEX.md — add new files created, update chunk tags if scope changed\n3. Rewrite .session/NEXT_PROMPT.md from scratch — project name, active chunk, files to load,\n exact resume point, any prerequisite context. Must be <=15 lines, fully self-contained.\n4. If all tasks in active chunk are done: advance to next chunk in SESSION_STATE.md\nShow me each file's new content before writing. I will confirm.\n\\`\\`\\`\n`;\n}\n\n/**\n * Writes ROUTINES.md with bootstrap and self-update prompt snippets.\n */\nexport const RoutinesWriter = {\n\t/**\n\t * Writes ROUTINES.md to the session directory.\n\t *\n\t * @param sessionDir - A validated path to the `.session/` directory.\n\t */\n\twrite(sessionDir: ValidatedPath): void {\n\t\tconst filePath = path.join(sessionDir, ROUTINES_FILENAME) as ValidatedPath;\n\t\tconst content = buildRoutinesContent();\n\t\tAtomicWriter.writeFile(filePath, content);\n\t},\n} as const;\n","/**\n * Manual markdown parser for PLAN.md files.\n *\n * Splits a monolithic plan on `## ` headings into {@link PlanChunk} objects,\n * detects chunk boundaries with confidence scores, and serializes chunks\n * back to markdown.\n *\n * No external markdown AST library is used — parsing is done line-by-line.\n *\n * @packageDocumentation\n */\n\nimport { ParseError } from \"@dev-session/security\";\nimport type { BoundaryResult, PlanChunk, Task } from \"../schemas/index.js\";\nimport { TaskStatus } from \"../schemas/index.js\";\n\n// ---------------------------------------------------------------------------\n// Regex patterns\n// ---------------------------------------------------------------------------\n\n/** Matches a `## ` (h2) heading line and captures the heading text. */\nconst H2_RE = /^## \\s*(.+)$/;\n\n/** Matches a `# ` (h1) heading line and captures the heading text. */\nconst H1_RE = /^# \\s*(.+)$/;\n\n/** Matches a `### ` (h3+) heading line and captures the heading text. */\nconst H3_PLUS_RE = /^###+ \\s*(.+)$/;\n\n/** Matches a horizontal rule (`---`, `***`, `___`) on its own line. */\nconst HR_RE = /^(?:---+|\\*\\*\\*+|___+)\\s*$/;\n\n/** Matches `- [ ] text` (todo task). */\nconst TASK_TODO_RE = /^[-*]\\s+\\[ \\]\\s+(.+)$/;\n\n/** Matches `- [x] text` (done task, case-insensitive x). */\nconst TASK_DONE_RE = /^[-*]\\s+\\[[xX]\\]\\s+(.+)$/;\n\n/** Matches `- [-] text` (in-progress task). */\nconst TASK_IN_PROGRESS_RE = /^[-*]\\s+\\[-\\]\\s+(.+)$/;\n\n/** Matches \"Chunk N\" in a heading and captures N. */\nconst CHUNK_ID_RE = /\\bChunk\\s+(\\d+)\\b/i;\n\n/** Matches dependency declarations like \"Depends on: Chunk 1\" or \"Chunks 1, 2, 3\". */\nconst DEPENDS_RE = /depends\\s+on:\\s*chunks?\\s+([\\d,\\s]+)/i;\n\n/** Matches estimated sessions like \"Est. sessions: 2-3\" or \"Est. sessions: 4\". */\nconst EST_SESSIONS_RE = /est\\.?\\s*sessions?:\\s*(\\d+)/i;\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Extract a chunk_id from heading text if it contains \"Chunk N\".\n *\n * @param heading - The heading text to inspect.\n * @returns The parsed chunk ID, or `undefined` if the pattern is not found.\n */\nfunction extractChunkIdFromHeading(heading: string): number | undefined {\n\tconst match = CHUNK_ID_RE.exec(heading);\n\tif (match?.[1] === undefined) {\n\t\treturn undefined;\n\t}\n\tconst id = Number.parseInt(match[1], 10);\n\treturn Number.isFinite(id) && id >= 1 ? id : undefined;\n}\n\n/**\n * Extract the display title from a heading, stripping \"Chunk N — \" prefix if present.\n *\n * @param heading - The raw heading text.\n * @returns The cleaned title string.\n */\nfunction extractTitle(heading: string): string {\n\t// Strip patterns like \"Chunk 2 — Security utilities\" → \"Security utilities\"\n\t// Also handles \"Chunk 2 - Security utilities\" (plain dash)\n\tconst stripped = heading.replace(/^Chunk\\s+\\d+\\s*[—–\\-:]\\s*/i, \"\");\n\treturn stripped.trim() || heading.trim();\n}\n\n/**\n * Parse a single line for dependency information.\n *\n * @param line - The trimmed line to inspect.\n * @returns Array of dependency chunk IDs, or empty array if none found.\n */\nfunction parseDependencies(line: string): readonly number[] {\n\tconst match = DEPENDS_RE.exec(line);\n\tif (match?.[1] === undefined) {\n\t\treturn [];\n\t}\n\treturn match[1]\n\t\t.split(\",\")\n\t\t.map((s) => Number.parseInt(s.trim(), 10))\n\t\t.filter((n) => Number.isFinite(n) && n >= 1);\n}\n\n/**\n * Parse a single line for estimated sessions.\n *\n * @param line - The trimmed line to inspect.\n * @returns The first number found, or `undefined` if the pattern is not matched.\n */\nfunction parseEstSessions(line: string): number | undefined {\n\tconst match = EST_SESSIONS_RE.exec(line);\n\tif (match?.[1] === undefined) {\n\t\treturn undefined;\n\t}\n\tconst n = Number.parseInt(match[1], 10);\n\treturn Number.isFinite(n) && n >= 1 ? n : undefined;\n}\n\n/**\n * Try to parse a line as a task checkbox.\n *\n * @param line - The trimmed line content.\n * @returns A {@link Task} if the line is a checkbox, or `undefined` otherwise.\n */\nfunction parseTaskLine(line: string): Task | undefined {\n\tconst doneMatch = TASK_DONE_RE.exec(line);\n\tif (doneMatch?.[1] !== undefined) {\n\t\treturn { text: doneMatch[1].trim(), status: TaskStatus.DONE };\n\t}\n\n\tconst inProgressMatch = TASK_IN_PROGRESS_RE.exec(line);\n\tif (inProgressMatch?.[1] !== undefined) {\n\t\treturn { text: inProgressMatch[1].trim(), status: TaskStatus.IN_PROGRESS };\n\t}\n\n\tconst todoMatch = TASK_TODO_RE.exec(line);\n\tif (todoMatch?.[1] !== undefined) {\n\t\treturn { text: todoMatch[1].trim(), status: TaskStatus.TODO };\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Determine whether a line is inside a YAML frontmatter block.\n *\n * Frontmatter is delimited by `---` on the very first line of the file\n * and a subsequent `---` line. Horizontal rules elsewhere are not frontmatter.\n *\n * @param lineIndex - The 0-based index of the current line.\n * @param frontmatterEnd - The 0-based index where frontmatter ends (-1 if no frontmatter).\n * @returns `true` if the line is inside the frontmatter block.\n */\nfunction isInsideFrontmatter(lineIndex: number, frontmatterEnd: number): boolean {\n\treturn frontmatterEnd >= 0 && lineIndex <= frontmatterEnd;\n}\n\n/**\n * Find the line index where YAML frontmatter ends.\n *\n * Frontmatter must start on line 0 with `---` and end with a subsequent `---`.\n *\n * @param lines - All lines of the document.\n * @returns The 0-based line index of the closing `---`, or -1 if no frontmatter.\n */\nfunction findFrontmatterEnd(lines: readonly string[]): number {\n\tif (lines[0]?.trim() !== \"---\") {\n\t\treturn -1;\n\t}\n\tfor (let i = 1; i < lines.length; i++) {\n\t\tif (lines[i]?.trim() === \"---\") {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n// ---------------------------------------------------------------------------\n// Accumulator for building chunks from sequential line scanning\n// ---------------------------------------------------------------------------\n\ninterface ChunkAccumulator {\n\theading: string;\n\ttasks: Task[];\n\tdependsOn: number[];\n\testSessions: number | undefined;\n}\n\n/**\n * Finalize a {@link ChunkAccumulator} into a {@link PlanChunk}.\n *\n * @param acc - The accumulated chunk data.\n * @param chunkId - The chunk_id to assign.\n * @returns A fully formed {@link PlanChunk}.\n */\nfunction finalizeChunk(acc: ChunkAccumulator, chunkId: number): PlanChunk {\n\tconst base: PlanChunk = {\n\t\tchunk_id: chunkId,\n\t\ttitle: extractTitle(acc.heading),\n\t\tdepends_on: [...acc.dependsOn],\n\t\ttasks: [...acc.tasks],\n\t};\n\n\tif (acc.estSessions !== undefined) {\n\t\treturn { ...base, est_sessions: acc.estSessions };\n\t}\n\n\treturn base;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Parses PLAN.md markdown into structured {@link PlanChunk} objects,\n * detects chunk boundaries, and serializes chunks back to markdown.\n */\nexport const PlanParser = {\n\t/**\n\t * Parse a monolithic PLAN.md into an array of {@link PlanChunk} objects.\n\t *\n\t * Splits on `## ` (h2) headings. Each h2 section becomes one chunk.\n\t * Content before the first h2 is ignored (typically the document title).\n\t *\n\t * @param content - The raw markdown content of PLAN.md.\n\t * @returns An array of parsed plan chunks.\n\t * @throws {ParseError} If the content is empty.\n\t */\n\tfromMarkdown(content: string): PlanChunk[] {\n\t\tif (content.trim().length === 0) {\n\t\t\tthrow new ParseError({\n\t\t\t\tmessage: \"Plan content is empty\",\n\t\t\t\tfile: \"PLAN.md\",\n\t\t\t});\n\t\t}\n\n\t\tconst lines = content.split(\"\\n\");\n\t\tconst chunks: PlanChunk[] = [];\n\t\tlet current: ChunkAccumulator | undefined;\n\t\tlet sequentialId = 0;\n\n\t\tfor (const line of lines) {\n\t\t\tconst trimmed = line.trim();\n\t\t\tconst h2Match = H2_RE.exec(trimmed);\n\n\t\t\tif (h2Match?.[1] !== undefined) {\n\t\t\t\t// Finalize previous chunk if one exists\n\t\t\t\tif (current !== undefined) {\n\t\t\t\t\tconst id = extractChunkIdFromHeading(current.heading) ?? sequentialId;\n\t\t\t\t\tchunks.push(finalizeChunk(current, id));\n\t\t\t\t}\n\n\t\t\t\tsequentialId++;\n\t\t\t\tcurrent = {\n\t\t\t\t\theading: h2Match[1],\n\t\t\t\t\ttasks: [],\n\t\t\t\t\tdependsOn: [],\n\t\t\t\t\testSessions: undefined,\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only process lines if we're inside a chunk\n\t\t\tif (current === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tprocessChunkLine(trimmed, current);\n\t\t}\n\n\t\t// Finalize the last chunk\n\t\tif (current !== undefined) {\n\t\t\tconst id = extractChunkIdFromHeading(current.heading) ?? sequentialId;\n\t\t\tchunks.push(finalizeChunk(current, id));\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\t/**\n\t * Detect potential chunk boundaries in a PLAN.md file.\n\t *\n\t * Returns suggested split points with confidence scores:\n\t * - `## ` heading → confidence 1.0\n\t * - `# ` heading → confidence 0.7\n\t * - `---` horizontal rule (outside frontmatter) → confidence 0.5\n\t * - `### ` or deeper heading → confidence 0.3\n\t *\n\t * @param content - The raw markdown content to analyze.\n\t * @returns An array of boundary results sorted by line number.\n\t * @throws {ParseError} If the content is empty.\n\t */\n\tdetectBoundaries(content: string): BoundaryResult[] {\n\t\tif (content.trim().length === 0) {\n\t\t\tthrow new ParseError({\n\t\t\t\tmessage: \"Plan content is empty\",\n\t\t\t\tfile: \"PLAN.md\",\n\t\t\t});\n\t\t}\n\n\t\tconst lines = content.split(\"\\n\");\n\t\tconst frontmatterEnd = findFrontmatterEnd(lines);\n\t\tconst boundaries: BoundaryResult[] = [];\n\t\tlet suggestedChunkId = 0;\n\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (line === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst trimmed = line.trim();\n\n\t\t\tif (isInsideFrontmatter(i, frontmatterEnd)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst boundary = classifyBoundaryLine(trimmed, i + 1);\n\t\t\tif (boundary !== undefined) {\n\t\t\t\tsuggestedChunkId++;\n\t\t\t\tboundaries.push({ ...boundary, suggestedChunkId });\n\t\t\t}\n\t\t}\n\n\t\treturn boundaries;\n\t},\n\n\t/**\n\t * Serialize a {@link PlanChunk} to a PLAN_N.md file format.\n\t *\n\t * Writes YAML frontmatter (required by {@link PlanChunkManager}) followed\n\t * by a human-readable markdown body. The `---` delimiters are read back\n\t * by `FrontmatterParser`; the body is for human reference only.\n\t *\n\t * @param chunk - The plan chunk to serialize.\n\t * @returns A markdown string with frontmatter representing the chunk.\n\t */\n\ttoMarkdown(chunk: PlanChunk): string {\n\t\tconst lines: string[] = [];\n\n\t\t// --- YAML frontmatter (required by PlanChunkManager / FrontmatterParser) ---\n\t\tlines.push(\"---\");\n\t\tlines.push(`chunk_id: ${chunk.chunk_id}`);\n\t\tlines.push(`title: ${JSON.stringify(chunk.title)}`);\n\t\tlines.push(`depends_on: [${chunk.depends_on.join(\", \")}]`);\n\t\tif (chunk.est_sessions !== undefined) {\n\t\t\tlines.push(`est_sessions: ${chunk.est_sessions}`);\n\t\t}\n\t\tif (chunk.tasks.length > 0) {\n\t\t\tlines.push(\"tasks:\");\n\t\t\tfor (const task of chunk.tasks) {\n\t\t\t\tlines.push(` - text: ${JSON.stringify(task.text)}`);\n\t\t\t\tlines.push(` status: ${task.status}`);\n\t\t\t\tif (task.added_at !== undefined) {\n\t\t\t\t\tlines.push(` added_at: ${JSON.stringify(task.added_at)}`);\n\t\t\t\t}\n\t\t\t\tif (task.completed_at !== undefined) {\n\t\t\t\t\tlines.push(` completed_at: ${JSON.stringify(task.completed_at)}`);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tlines.push(\"tasks: []\");\n\t\t}\n\t\tlines.push(\"---\");\n\t\tlines.push(\"\");\n\n\t\t// --- Human-readable body ---\n\t\tlines.push(`## Chunk ${chunk.chunk_id} — ${chunk.title}`);\n\t\tlines.push(\"\");\n\n\t\tif (chunk.depends_on.length > 0 || chunk.est_sessions !== undefined) {\n\t\t\tif (chunk.depends_on.length > 0) {\n\t\t\t\tconst label = chunk.depends_on.length === 1 ? \"Chunk\" : \"Chunks\";\n\t\t\t\tlines.push(`> Depends on: ${label} ${chunk.depends_on.join(\", \")}`);\n\t\t\t}\n\t\t\tif (chunk.est_sessions !== undefined) {\n\t\t\t\tlines.push(`> Est. sessions: ${chunk.est_sessions}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tif (chunk.tasks.length > 0) {\n\t\t\tlines.push(\"### Tasks\");\n\t\t\tlines.push(\"\");\n\t\t\tfor (const task of chunk.tasks) {\n\t\t\t\tlines.push(formatTask(task));\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\treturn lines.join(\"\\n\");\n\t},\n} as const;\n\n// ---------------------------------------------------------------------------\n// Private helpers used by the public API\n// ---------------------------------------------------------------------------\n\n/**\n * Process a single non-heading line within the current chunk accumulator.\n *\n * Looks for tasks, dependencies, and session estimates.\n *\n * @param trimmed - The trimmed line content.\n * @param acc - The current chunk accumulator to mutate.\n */\nfunction processChunkLine(trimmed: string, acc: ChunkAccumulator): void {\n\tconst task = parseTaskLine(trimmed);\n\tif (task !== undefined) {\n\t\tacc.tasks.push(task);\n\t\treturn;\n\t}\n\n\t// Only look for metadata if we haven't found it yet\n\tif (acc.dependsOn.length === 0) {\n\t\tconst deps = parseDependencies(trimmed);\n\t\tif (deps.length > 0) {\n\t\t\tacc.dependsOn = [...deps];\n\t\t}\n\t}\n\n\tif (acc.estSessions === undefined) {\n\t\tacc.estSessions = parseEstSessions(trimmed);\n\t}\n}\n\n/**\n * Classify a line as a potential chunk boundary.\n *\n * @param trimmed - The trimmed line content.\n * @param lineNumber - The 1-indexed line number.\n * @returns A partial {@link BoundaryResult} without `suggestedChunkId`, or `undefined`.\n */\nfunction classifyBoundaryLine(\n\ttrimmed: string,\n\tlineNumber: number,\n): Omit<BoundaryResult, \"suggestedChunkId\"> | undefined {\n\tconst h2Match = H2_RE.exec(trimmed);\n\tif (h2Match?.[1] !== undefined) {\n\t\treturn { lineNumber, heading: h2Match[1], confidence: 1.0 };\n\t}\n\n\tconst h1Match = H1_RE.exec(trimmed);\n\tif (h1Match?.[1] !== undefined) {\n\t\treturn { lineNumber, heading: h1Match[1], confidence: 0.7 };\n\t}\n\n\tif (HR_RE.test(trimmed)) {\n\t\treturn { lineNumber, heading: \"\", confidence: 0.5 };\n\t}\n\n\tconst h3Match = H3_PLUS_RE.exec(trimmed);\n\tif (h3Match?.[1] !== undefined) {\n\t\treturn { lineNumber, heading: h3Match[1], confidence: 0.3 };\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Format a single {@link Task} as a markdown checkbox line.\n *\n * @param task - The task to format.\n * @returns A markdown line like `- [ ] Task text`.\n */\nfunction formatTask(task: Task): string {\n\tswitch (task.status) {\n\t\tcase TaskStatus.DONE:\n\t\t\treturn `- [x] ${task.text}`;\n\t\tcase TaskStatus.IN_PROGRESS:\n\t\t\treturn `- [-] ${task.text}`;\n\t\tcase TaskStatus.TODO:\n\t\t\treturn `- [ ] ${task.text}`;\n\t}\n}\n","/**\n * Walks a directory tree while respecting `.gitignore` patterns.\n *\n * Uses Node's built-in `fs.readdirSync` with `{ recursive: true }` (Node 20+)\n * instead of external glob libraries to minimize dependencies.\n *\n * @packageDocumentation\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { CliError } from \"@dev-session/security\";\nimport type { TokenCounterInstance } from \"../counters/token-counter.js\";\nimport { TokenCounter } from \"../counters/token-counter.js\";\nimport type {\n\tDirectoryGroup,\n\tTokenCountResult,\n\tWalkedFile,\n\tWalkOptions,\n} from \"../schemas/index.js\";\n\n/** Directories that are always ignored regardless of .gitignore. */\nconst ALWAYS_IGNORED_DIRS = new Set([\"node_modules\", \".git\", \"dist\", \"build\", \".session\"]);\n\n/**\n * Reads and parses a `.gitignore` file into an array of non-empty, non-comment patterns.\n *\n * @param root - The project root directory containing the `.gitignore`.\n * @returns An array of gitignore pattern strings.\n */\nfunction readGitignorePatterns(root: string): readonly string[] {\n\tconst gitignorePath = path.join(root, \".gitignore\");\n\ttry {\n\t\tconst content = fs.readFileSync(gitignorePath, \"utf-8\");\n\t\treturn content\n\t\t\t.split(\"\\n\")\n\t\t\t.map((line) => line.trim())\n\t\t\t.filter((line) => line.length > 0 && !line.startsWith(\"#\"));\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n/**\n * Checks whether a relative file path matches any of the gitignore patterns.\n *\n * Uses simple string matching for common patterns:\n * - `dir/` → path starts with `dir/` or contains `/dir/`\n * - `*.ext` → path ends with `.ext`\n * - Literal names → exact segment match\n *\n * @param relativePath - The relative file path to check.\n * @param patterns - The gitignore patterns to match against.\n * @returns `true` if the path should be ignored.\n */\nfunction matchesGitignore(relativePath: string, patterns: readonly string[]): boolean {\n\tfor (const pattern of patterns) {\n\t\tif (matchesSinglePattern(relativePath, pattern)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Checks whether a relative path matches a single gitignore pattern.\n *\n * @param relativePath - The relative file path.\n * @param pattern - A single gitignore pattern.\n * @returns `true` if the path matches the pattern.\n */\nfunction matchesSinglePattern(relativePath: string, pattern: string): boolean {\n\t// Negation patterns — skip them in v1\n\tif (pattern.startsWith(\"!\")) {\n\t\treturn false;\n\t}\n\n\t// Directory pattern (ends with /)\n\tif (pattern.endsWith(\"/\")) {\n\t\tconst dir = pattern.slice(0, -1);\n\t\treturn (\n\t\t\trelativePath.startsWith(`${dir}/`) ||\n\t\t\trelativePath.includes(`/${dir}/`) ||\n\t\t\trelativePath === dir\n\t\t);\n\t}\n\n\t// Extension wildcard (e.g., *.log)\n\tif (pattern.startsWith(\"*.\")) {\n\t\tconst ext = pattern.slice(1); // includes the dot\n\t\treturn relativePath.endsWith(ext);\n\t}\n\n\t// Wildcard prefix with extension (e.g., **/*.ext)\n\tif (pattern.startsWith(\"**/\")) {\n\t\tconst subPattern = pattern.slice(3);\n\t\tif (subPattern.startsWith(\"*.\")) {\n\t\t\tconst ext = subPattern.slice(1);\n\t\t\treturn relativePath.endsWith(ext);\n\t\t}\n\t\treturn relativePath === subPattern || relativePath.endsWith(`/${subPattern}`);\n\t}\n\n\t// Literal match — could be a file or directory name\n\tconst segments = relativePath.split(\"/\");\n\treturn segments.includes(pattern);\n}\n\n/**\n * Checks whether a relative path has any segment in the always-ignored set.\n *\n * @param relativePath - The relative path to check.\n * @returns `true` if any segment is in the always-ignored list.\n */\nfunction isAlwaysIgnored(relativePath: string): boolean {\n\tconst segments = relativePath.split(path.sep);\n\treturn segments.some((seg) => ALWAYS_IGNORED_DIRS.has(seg));\n}\n\n/**\n * Checks whether a file path has a depth within the allowed max.\n *\n * @param relativePath - The relative file path.\n * @param maxDepth - The maximum allowed depth (undefined = no limit).\n * @returns `true` if the path is within the depth limit.\n */\nfunction isWithinDepth(relativePath: string, maxDepth: number | undefined): boolean {\n\tif (maxDepth === undefined) {\n\t\treturn true;\n\t}\n\tconst depth = relativePath.split(path.sep).length;\n\treturn depth <= maxDepth;\n}\n\n/**\n * Checks whether a file has an allowed extension.\n *\n * @param relativePath - The relative file path.\n * @param extensions - Allowed extensions (empty = all allowed).\n * @returns `true` if the file extension is allowed.\n */\nfunction hasAllowedExtension(\n\trelativePath: string,\n\textensions: readonly string[] | undefined,\n): boolean {\n\tif (extensions === undefined || extensions.length === 0) {\n\t\treturn true;\n\t}\n\tconst ext = path.extname(relativePath);\n\treturn extensions.includes(ext);\n}\n\n/**\n * Walks a directory tree respecting `.gitignore` and built-in ignore rules.\n *\n * Groups files by directory, estimates token costs, and supports filtering\n * by depth, extension, and custom ignore patterns.\n */\nexport const GitignoreAwareWalker = {\n\t/**\n\t * Walks the directory tree starting from `root`.\n\t *\n\t * @param root - The absolute path to the project root.\n\t * @param options - Optional walk configuration.\n\t * @returns An array of discovered files, sorted by relative path.\n\t * @throws {CliError} If the root directory does not exist.\n\t */\n\twalk(root: string, options?: WalkOptions): WalkedFile[] {\n\t\tassertDirectoryExists(root);\n\n\t\tconst gitignorePatterns = readGitignorePatterns(root);\n\t\tconst extraIgnore = options?.ignore ?? [];\n\t\tconst allIgnorePatterns = [...gitignorePatterns, ...extraIgnore];\n\n\t\tconst entries = readDirectoryEntries(root);\n\t\tconst files: WalkedFile[] = [];\n\n\t\tfor (const entry of entries) {\n\t\t\tconst parentDir = getDirentParentPath(entry);\n\t\t\tconst entryPath = path.join(parentDir, entry.name);\n\t\t\tconst relativePath = path.relative(root, entryPath).split(path.sep).join(\"/\");\n\n\t\t\tif (!entry.isFile()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isAlwaysIgnored(relativePath)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (matchesGitignore(relativePath, allIgnorePatterns)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!isWithinDepth(relativePath, options?.maxDepth)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!hasAllowedExtension(relativePath, options?.extensions)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst sizeBytes = getFileSize(entryPath);\n\t\t\tfiles.push({\n\t\t\t\trelativePath,\n\t\t\t\tabsolutePath: entryPath,\n\t\t\t\tsizeBytes,\n\t\t\t});\n\t\t}\n\n\t\tfiles.sort((a, b) => a.relativePath.localeCompare(b.relativePath));\n\t\treturn files;\n\t},\n\n\t/**\n\t * Groups files by their parent directory.\n\t *\n\t * @param files - The files to group.\n\t * @returns An array of directory groups, sorted by directory path.\n\t */\n\tgroupByDirectory(files: readonly WalkedFile[]): DirectoryGroup[] {\n\t\tconst groupMap = new Map<string, WalkedFile[]>();\n\n\t\tfor (const file of files) {\n\t\t\tconst dir = path.dirname(file.relativePath);\n\t\t\tlet group = groupMap.get(dir);\n\t\t\tif (group === undefined) {\n\t\t\t\tgroup = [];\n\t\t\t\tgroupMap.set(dir, group);\n\t\t\t}\n\t\t\tgroup.push(file);\n\t\t}\n\n\t\tconst groups: DirectoryGroup[] = [];\n\t\tfor (const [directory, dirFiles] of groupMap) {\n\t\t\tconst totalSizeBytes = dirFiles.reduce((sum, f) => sum + f.sizeBytes, 0);\n\t\t\tgroups.push({ directory, files: dirFiles, totalSizeBytes });\n\t\t}\n\n\t\tgroups.sort((a, b) => a.directory.localeCompare(b.directory));\n\t\treturn groups;\n\t},\n\n\t/**\n\t * Estimates the token cost for a file based on its size.\n\t *\n\t * Uses the heuristic of ~1 token per 4 bytes (for English text / code).\n\t * Delegates to {@link TokenCounter.heuristicCountFromBytes} for the actual\n\t * calculation so the heuristic constant is defined in one place.\n\t *\n\t * @param file - The file to estimate.\n\t * @returns The estimated number of tokens.\n\t */\n\testimateTokenCost(file: WalkedFile): number {\n\t\treturn TokenCounter.heuristicCountFromBytes(file.sizeBytes);\n\t},\n\n\t/**\n\t * Measures token cost for a file using a {@link TokenCounterInstance}.\n\t *\n\t * When an external (accurate) counter is configured on the instance,\n\t * this returns real tokenizer counts. Otherwise falls back to the\n\t * character-based heuristic. The result includes an `accurate` flag\n\t * so consumers know whether to trust the number.\n\t *\n\t * @param file - The walked file to measure.\n\t * @param counter - A token counter instance (from {@link TokenCounter.create}).\n\t * @returns A promise resolving to a {@link TokenCountResult}.\n\t */\n\tasync measureTokenCost(\n\t\tfile: WalkedFile,\n\t\tcounter: TokenCounterInstance,\n\t): Promise<TokenCountResult> {\n\t\tif (!counter.hasExternalCounter) {\n\t\t\t// Fast path: skip file read, use byte-based heuristic\n\t\t\treturn {\n\t\t\t\ttokens: TokenCounter.heuristicCountFromBytes(file.sizeBytes),\n\t\t\t\taccurate: false,\n\t\t\t};\n\t\t}\n\t\t// External counter needs the file content — delegate to countFile\n\t\t// We cast absolutePath since walker already resolved it from the filesystem\n\t\tconst filePath = file.absolutePath as import(\"@dev-session/security\").ValidatedPath;\n\t\treturn counter.countFile(filePath);\n\t},\n} as const;\n\n/**\n * Extracts the parent directory path from a Dirent entry.\n *\n * Node 21+ uses `parentPath`, older Node 20 uses `path`.\n *\n * @param entry - The directory entry.\n * @returns The parent directory path.\n */\nfunction getDirentParentPath(entry: fs.Dirent): string {\n\t// Node 21+ has parentPath, Node 20 has path on Dirent\n\tconst dirent = entry as unknown as Record<string, unknown>;\n\tconst parentPath = dirent.parentPath ?? dirent.path;\n\tif (typeof parentPath === \"string\") {\n\t\treturn parentPath;\n\t}\n\treturn \"\";\n}\n\n/**\n * Asserts that the root directory exists.\n *\n * @param root - The directory path to check.\n * @throws {CliError} If the directory does not exist.\n */\nfunction assertDirectoryExists(root: string): void {\n\tif (!fs.existsSync(root)) {\n\t\tthrow new CliError({\n\t\t\tmessage: `Directory does not exist: ${path.relative(process.cwd(), root) || \".\"}`,\n\t\t\tsuggestion: \"Check the path and try again.\",\n\t\t});\n\t}\n}\n\n/**\n * Reads all entries from a directory recursively.\n *\n * @param root - The directory to read.\n * @returns An array of directory entries.\n */\nfunction readDirectoryEntries(root: string): fs.Dirent[] {\n\ttry {\n\t\treturn fs.readdirSync(root, {\n\t\t\twithFileTypes: true,\n\t\t\trecursive: true,\n\t\t});\n\t} catch (cause: unknown) {\n\t\tthrow new CliError({\n\t\t\tmessage: `Failed to read directory: ${path.relative(process.cwd(), root) || \".\"}`,\n\t\t\tsuggestion: \"Check file permissions.\",\n\t\t\tcause,\n\t\t});\n\t}\n}\n\n/**\n * Gets the size of a file in bytes, returning 0 if the stat fails.\n *\n * @param filePath - The absolute path to the file.\n * @returns The file size in bytes.\n */\nfunction getFileSize(filePath: string): number {\n\ttry {\n\t\tconst stat = fs.statSync(filePath);\n\t\treturn stat.size;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n","/**\n * Adapter IO helpers — provides safe read/write functions for adapter contexts.\n *\n * These functions bridge the gap between the adapter interface (which can't\n * depend on @dev-session/security) and the CLI layer (which owns AtomicWriter\n * and PathValidator).\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport type { AdapterReadFile, AdapterWriteFile } from \"@dev-session/core\";\nimport { AtomicWriter, PathValidator } from \"@dev-session/security\";\n\n/**\n * Creates an {@link AdapterWriteFile} function backed by AtomicWriter.\n *\n * The returned function resolves relative paths against `projectRoot`\n * using PathValidator, then writes atomically via AtomicWriter.\n *\n * @param projectRoot - Absolute path to the project root.\n * @returns A write function safe for use in adapter contexts.\n */\nexport function createAdapterWriteFile(projectRoot: string): AdapterWriteFile {\n\treturn (relativePath: string, content: string): void => {\n\t\tconst validated = PathValidator.safeResolvePath(relativePath, projectRoot);\n\t\tAtomicWriter.writeFile(validated, content, { skipGuard: true });\n\t};\n}\n\n/**\n * Creates an {@link AdapterReadFile} function that reads from the project root.\n *\n * The returned function resolves relative paths against `projectRoot`\n * using PathValidator. Returns `undefined` if the file does not exist.\n *\n * @param projectRoot - Absolute path to the project root.\n * @returns A read function safe for use in adapter contexts.\n */\nexport function createAdapterReadFile(projectRoot: string): AdapterReadFile {\n\treturn (relativePath: string): string | undefined => {\n\t\ttry {\n\t\t\tconst validated = PathValidator.safeResolvePath(relativePath, projectRoot);\n\t\t\treturn fs.readFileSync(validated, \"utf-8\");\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t};\n}\n","/**\n * Global error handler for the dev-session CLI.\n *\n * Catches typed errors (CliError, ParseError, SecurityError) and formats\n * them for terminal output. Unrecognized errors get a generic message.\n *\n * @module\n */\n\nimport { log } from \"@clack/prompts\";\nimport { isCliError, isParseError, isSecurityError } from \"@dev-session/security\";\n\n/**\n * Format and display an error in the terminal, then exit with the\n * appropriate code.\n *\n * @param error - The caught error (typed or unknown)\n * @param opts - Options controlling exit behavior\n * @param opts.exit - Whether to call process.exit (default: true). Set to false in tests.\n * @returns The exit code that was (or would be) used\n */\nexport function handleError(error: unknown, opts: { exit?: boolean } = {}): number {\n\tconst shouldExit = opts.exit !== false;\n\n\tif (isSecurityError(error)) {\n\t\tlog.error(`Security violation: ${error.message}`);\n\t\tlog.warn(`Threat type: ${error.threat}`);\n\t\tconst code = 3;\n\t\tif (shouldExit) {\n\t\t\tprocess.exit(code);\n\t\t}\n\t\treturn code;\n\t}\n\n\tif (isParseError(error)) {\n\t\tconst location = error.file\n\t\t\t? error.line !== undefined\n\t\t\t\t? `${error.file}:${error.line}`\n\t\t\t\t: error.file\n\t\t\t: \"unknown file\";\n\t\tlog.error(`Parse error in ${location}: ${error.message}`);\n\t\tconst code = 2;\n\t\tif (shouldExit) {\n\t\t\tprocess.exit(code);\n\t\t}\n\t\treturn code;\n\t}\n\n\tif (isCliError(error)) {\n\t\tlog.error(error.message);\n\t\tif (error.suggestion) {\n\t\t\tlog.info(`Suggestion: ${error.suggestion}`);\n\t\t}\n\t\tconst code = 1;\n\t\tif (shouldExit) {\n\t\t\tprocess.exit(code);\n\t\t}\n\t\treturn code;\n\t}\n\n\t// Unknown error — generic handling, never leak internals\n\tif (error instanceof Error) {\n\t\tlog.error(`Unexpected error: ${error.message}`);\n\t} else {\n\t\tlog.error(\"An unexpected error occurred.\");\n\t}\n\n\tconst code = 1;\n\tif (shouldExit) {\n\t\tprocess.exit(code);\n\t}\n\treturn code;\n}\n","/**\n * Claude Code bootstrap formatter.\n *\n * Produces NEXT_PROMPT.md content optimized for Claude Code's context model:\n * - File references use `@path/to/file` mention syntax\n * - Excludes are phrased as \"Do NOT read\" (Claude Code terminology)\n * - References CLAUDE.md as the session instructions file\n *\n * Shares structural sections with {@link PlainTextFormatter} via\n * shared formatter utilities from `@dev-session/core`.\n *\n * @packageDocumentation\n */\n\nimport type { BootstrapContext, BootstrapFormatter, FileIndexEntry } from \"@dev-session/core\";\nimport {\n\tDEFAULT_MAX_NEXT_TASKS,\n\tDEFAULT_MAX_NOTES,\n\tDEFAULT_MAX_PROMPT_LINES,\n\tformatBudgetLine,\n\tformatChunkProgress,\n\tformatCompletedChunksSummary,\n\tgetPendingTasks,\n\ttrimToMaxLines,\n} from \"@dev-session/core\";\n\n/** Maximum files to show before truncating. */\nconst MAX_FILES_TO_SHOW = 6;\n\n/**\n * Claude Code bootstrap formatter.\n *\n * Uses `@` file mention syntax that Claude Code understands natively.\n * When Claude Code processes `@path/to/file`, it automatically loads\n * that file into context.\n */\nexport const ClaudeBootstrapFormatter: BootstrapFormatter = {\n\tname: \"claude\",\n\n\t/**\n\t * Formats file paths with Claude Code's `@`-mention syntax.\n\t *\n\t * @param files - The file index entries to format.\n\t * @returns Formatted string with `@`-prefixed file references.\n\t */\n\tformatFilesToLoad(files: readonly FileIndexEntry[]): string {\n\t\tif (files.length === 0) {\n\t\t\treturn \"(none)\";\n\t\t}\n\n\t\tconst shown = files.slice(0, MAX_FILES_TO_SHOW).map((f) => `@${f.filepath}`);\n\t\tconst remaining = files.length - shown.length;\n\t\tconst suffix = remaining > 0 ? `, +${String(remaining)} more` : \"\";\n\t\treturn shown.join(\", \") + suffix;\n\t},\n\n\t/**\n\t * Formats exclude patterns as a \"Do NOT read\" instruction.\n\t *\n\t * Uses \"read\" rather than \"load\" to match Claude Code's terminology.\n\t *\n\t * @param patterns - The glob patterns or paths to exclude.\n\t * @returns Formatted exclude instruction string.\n\t */\n\tformatExcludes(patterns: readonly string[]): string {\n\t\tif (patterns.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn `Do NOT read: ${patterns.join(\", \")}`;\n\t},\n\n\t/**\n\t * Generates the full Claude Code-optimized bootstrap prompt.\n\t *\n\t * @param context - The full bootstrap context data.\n\t * @returns The NEXT_PROMPT.md content string with `@`-mentions.\n\t */\n\tgeneratePrompt(context: BootstrapContext): string {\n\t\tconst { state, chunk, chunkFiles, alwaysIncludeFiles, budget, excludePatterns, projectName } =\n\t\t\tcontext;\n\n\t\tconst lines: string[] = [];\n\n\t\t// -- Header section (3 lines) --\n\t\tlines.push(`Project: ${projectName}`);\n\t\tlines.push(`Active chunk: ${String(chunk.chunk_id)} — ${chunk.title}`);\n\t\tlines.push(formatBudgetLine(budget));\n\n\t\t// -- Context section (up to 4 lines) --\n\t\tconst allFiles = [...alwaysIncludeFiles, ...chunkFiles];\n\t\tlines.push(`Load: ${this.formatFilesToLoad(allFiles)}`);\n\n\t\tconst excludeStr = this.formatExcludes(excludePatterns);\n\t\tif (excludeStr.length > 0) {\n\t\t\tlines.push(excludeStr);\n\t\t}\n\n\t\t// -- Resume section (up to 5 lines) --\n\t\tconst completedSummary = formatCompletedChunksSummary(state);\n\t\tconst progress = formatChunkProgress(chunk);\n\t\tconst resumeParts: string[] = [progress];\n\t\tif (completedSummary.length > 0) {\n\t\t\tresumeParts.push(completedSummary);\n\t\t}\n\t\tlines.push(`Resume: ${resumeParts.join(\" \")}`);\n\n\t\tif (state.last_worked_files.length > 0) {\n\t\t\tconst lastFiles = state.last_worked_files.slice(0, 3).map((f) => `@${f}`);\n\t\t\tlines.push(`Last touched: ${lastFiles.join(\", \")}`);\n\t\t}\n\n\t\t// -- Next tasks section (up to 5 lines) --\n\t\tconst pending = getPendingTasks(chunk);\n\t\tif (pending.length > 0) {\n\t\t\tlines.push(\"Next:\");\n\t\t\tconst shown = pending.slice(0, DEFAULT_MAX_NEXT_TASKS);\n\t\t\tfor (const task of shown) {\n\t\t\t\tconst prefix = task.status === \"in-progress\" ? \"[WIP]\" : \"[ ]\";\n\t\t\t\tlines.push(` ${prefix} ${task.text}`);\n\t\t\t}\n\t\t\tconst remaining = pending.length - shown.length;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(` (+${String(remaining)} more tasks)`);\n\t\t\t}\n\t\t}\n\n\t\t// -- Notes section (up to 3 lines) --\n\t\tif (state.notes.length > 0) {\n\t\t\tconst notesToShow = state.notes.slice(0, DEFAULT_MAX_NOTES);\n\t\t\tfor (const note of notesToShow) {\n\t\t\t\tlines.push(`Note: ${note}`);\n\t\t\t}\n\t\t}\n\n\t\t// Trim to max lines\n\t\tconst trimmed = trimToMaxLines(lines, DEFAULT_MAX_PROMPT_LINES);\n\t\treturn `${trimmed.join(\"\\n\")}\\n`;\n\t},\n} as const;\n","/**\n * Claude Code adapter — full lifecycle adapter for Claude Code integration.\n *\n * Wraps {@link ClaudeBootstrapFormatter} with lifecycle hooks that:\n * - Generate a dev-session section in CLAUDE.md during init\n * - Read `.claude/MEMORY.md` and inject relevant context into session notes\n * - Update CLAUDE.md session section on session end\n *\n * @packageDocumentation\n */\n\nimport type {\n\tAdapter,\n\tAdapterConfig,\n\tAdapterSetupContext,\n\tAdapterSetupResult,\n\tSessionLifecycleContext,\n\tSessionState,\n\tTransformStateContext,\n} from \"@dev-session/core\";\nimport { ClaudeBootstrapFormatter } from \"./claude-bootstrap-formatter.js\";\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Maximum lines to read from .claude/MEMORY.md. */\nconst MAX_MEMORY_LINES = 200;\n\n/** Marker comments that delimit the dev-session section in CLAUDE.md. */\nconst SECTION_START = \"<!-- dev-session:start -->\";\nconst SECTION_END = \"<!-- dev-session:end -->\";\n\n/** Path to Claude Code's memory index file. */\nconst MEMORY_PATH = \".claude/MEMORY.md\";\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\n/** Static metadata for the Claude Code adapter. */\nconst CLAUDE_CONFIG: AdapterConfig = {\n\tname: \"claude\",\n\tdisplay_name: \"Claude Code\",\n\tdetect_files: [\"CLAUDE.md\", \".claude\"],\n\toutput_files: [\"CLAUDE.md\"],\n\tconfig_version: 1,\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Generates the dev-session section content for CLAUDE.md.\n *\n * @param projectName - The project name.\n * @param sessionDir - Relative path to the session directory.\n * @returns The section content (without markers).\n */\nfunction generateSessionSection(_projectName: string, sessionDir: string): string {\n\tconst lines = [\n\t\t\"\",\n\t\t\"## dev-session\",\n\t\t\"\",\n\t\t`This project uses [dev-session](https://github.com/anthropics/dev-session) to manage AI coding sessions.`,\n\t\t\"\",\n\t\t\"### Session workflow\",\n\t\t\"\",\n\t\t`**Start:** Read \\`${sessionDir}/SESSION_STATE.md\\` → note active chunk → load only files tagged to that chunk in \\`FILE_INDEX.md\\` → confirm before writing code.`,\n\t\t\"\",\n\t\t`**End:** Update \\`SESSION_STATE.md\\` (mark tasks done), update \\`FILE_INDEX.md\\` (add new files), rewrite \\`NEXT_PROMPT.md\\` (≤15 lines, self-contained). See \\`${sessionDir}/ROUTINES.md\\` for the full routine. Do not skip this.`,\n\t\t\"\",\n\t];\n\treturn lines.join(\"\\n\");\n}\n\n/**\n * Inserts or replaces the dev-session section in CLAUDE.md content.\n *\n * If the section markers exist, replaces the content between them.\n * Otherwise, appends the section at the end.\n *\n * @param existing - The existing CLAUDE.md content (or empty string).\n * @param sectionContent - The new section content.\n * @returns The updated CLAUDE.md content.\n */\nfunction upsertSection(existing: string, sectionContent: string): string {\n\tconst startIdx = existing.indexOf(SECTION_START);\n\tconst endIdx = existing.indexOf(SECTION_END);\n\n\tconst wrapped = `${SECTION_START}\\n${sectionContent}\\n${SECTION_END}`;\n\n\tif (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n\t\t// Replace existing section\n\t\tconst before = existing.slice(0, startIdx);\n\t\tconst after = existing.slice(endIdx + SECTION_END.length);\n\t\treturn `${before}${wrapped}${after}`;\n\t}\n\n\t// Append to end\n\tconst separator = existing.length > 0 && !existing.endsWith(\"\\n\") ? \"\\n\" : \"\";\n\tconst extraNewline = existing.length > 0 ? \"\\n\" : \"\";\n\treturn `${existing}${separator}${extraNewline}${wrapped}\\n`;\n}\n\n/**\n * Extracts summary lines from .claude/MEMORY.md content.\n *\n * Reads up to {@link MAX_MEMORY_LINES} and returns non-empty, non-heading lines\n * that look like memory index entries (lines starting with `- `).\n *\n * @param content - The raw MEMORY.md content.\n * @returns Array of memory summary strings.\n */\nfunction extractMemorySummaries(content: string): readonly string[] {\n\tconst lines = content.split(\"\\n\").slice(0, MAX_MEMORY_LINES);\n\tconst summaries: string[] = [];\n\n\tfor (const line of lines) {\n\t\tconst trimmed = line.trim();\n\t\t// Memory index entries are markdown list items: \"- [Title](file.md) — description\"\n\t\tif (trimmed.startsWith(\"- \")) {\n\t\t\tsummaries.push(trimmed.slice(2).trim());\n\t\t}\n\t}\n\n\treturn summaries;\n}\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\n/**\n * Claude Code adapter.\n *\n * Integrates dev-session with Claude Code by:\n * - Adding a session workflow section to CLAUDE.md during `setup`\n * - Reading `.claude/MEMORY.md` summaries into session notes via `transformState`\n * - Updating the CLAUDE.md session section on `onSessionEnd`\n */\nexport const ClaudeAdapter: Adapter = {\n\tconfig: CLAUDE_CONFIG,\n\tformatter: ClaudeBootstrapFormatter,\n\n\t/**\n\t * Generates or updates the dev-session section in CLAUDE.md.\n\t *\n\t * @param context - Setup context with project paths and detection info.\n\t * @returns Result describing what was written.\n\t */\n\tasync setup(context: AdapterSetupContext): Promise<AdapterSetupResult> {\n\t\tconst projectName = context.projectInfo.project_name ?? \"project\";\n\t\tconst sessionDir = \".session\";\n\n\t\tconst existing = context.readFile(\"CLAUDE.md\") ?? \"\";\n\t\tconst section = generateSessionSection(projectName, sessionDir);\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(\"CLAUDE.md\", updated);\n\n\t\tconst verb = existing.length > 0 ? \"Updated\" : \"Created\";\n\t\treturn {\n\t\t\tfilesWritten: [\"CLAUDE.md\"],\n\t\t\tsummary: `${verb} CLAUDE.md with dev-session workflow section`,\n\t\t};\n\t},\n\n\t/**\n\t * Reads .claude/MEMORY.md and injects memory summaries as session notes.\n\t *\n\t * Memory entries are prefixed with `[memory]` to distinguish them from\n\t * user-added notes. Only the first {@link MAX_MEMORY_LINES} lines are read.\n\t *\n\t * @param state - Current session state.\n\t * @param context - Transform context with project paths.\n\t * @returns State with memory summaries appended to notes.\n\t */\n\ttransformState(state: SessionState, context: TransformStateContext): SessionState {\n\t\tconst memoryContent = context.readFile(MEMORY_PATH);\n\t\tif (memoryContent === undefined) {\n\t\t\treturn state;\n\t\t}\n\n\t\tconst summaries = extractMemorySummaries(memoryContent);\n\t\tif (summaries.length === 0) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid duplicating memory notes if already injected\n\t\tconst existingMemoryNotes = state.notes.filter((n) => n.startsWith(\"[memory] \"));\n\t\tif (existingMemoryNotes.length > 0) {\n\t\t\treturn state;\n\t\t}\n\n\t\tconst memoryNotes = summaries.slice(0, 5).map((s) => `[memory] ${s}`);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tnotes: [...state.notes, ...memoryNotes],\n\t\t};\n\t},\n\n\t/**\n\t * Called at session start — currently a no-op for Claude Code.\n\t *\n\t * Future: could validate CLAUDE.md section exists and warn if missing.\n\t *\n\t * @param _context - Session lifecycle context.\n\t */\n\tasync onSessionStart(_context: SessionLifecycleContext): Promise<void> {\n\t\t// No-op — Claude Code reads CLAUDE.md automatically\n\t},\n\n\t/**\n\t * Updates the CLAUDE.md dev-session section with current session state.\n\t *\n\t * @param context - Session lifecycle context with current state.\n\t */\n\tasync onSessionEnd(context: SessionLifecycleContext): Promise<void> {\n\t\tconst existing = context.readFile(\"CLAUDE.md\");\n\t\tif (existing === undefined) {\n\t\t\t// No CLAUDE.md to update — skip silently\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectName = context.chunk.title;\n\t\tconst section = generateSessionSection(projectName, \".session\");\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(\"CLAUDE.md\", updated);\n\t},\n};\n\n// Exported for testing\nexport {\n\textractMemorySummaries,\n\tgenerateSessionSection,\n\tMEMORY_PATH,\n\tSECTION_END,\n\tSECTION_START,\n\tupsertSection,\n};\n","/**\n * Cursor bootstrap formatter.\n *\n * Produces NEXT_PROMPT.md content optimized for Cursor's context model:\n * - File references use plain paths (Cursor resolves from workspace root)\n * - Excludes are phrased as \"Ignore\" (matches .cursorrules convention)\n * - References .cursorrules as the session instructions file\n * - Compact format optimized for Cursor's context window\n *\n * @packageDocumentation\n */\n\nimport type { BootstrapContext, BootstrapFormatter, FileIndexEntry } from \"@dev-session/core\";\nimport {\n\tDEFAULT_MAX_NEXT_TASKS,\n\tDEFAULT_MAX_NOTES,\n\tDEFAULT_MAX_PROMPT_LINES,\n\tformatBudgetLine,\n\tformatChunkProgress,\n\tformatCompletedChunksSummary,\n\tgetPendingTasks,\n\ttrimToMaxLines,\n} from \"@dev-session/core\";\n\n/** Maximum files to show before truncating. */\nconst MAX_FILES_TO_SHOW = 6;\n\n/**\n * Cursor bootstrap formatter.\n *\n * Produces structured prompts aligned with Cursor's .cursorrules\n * conventions. Uses \"Ignore\" for excludes, matching the directive style\n * commonly used in .cursorrules files.\n */\nexport const CursorBootstrapFormatter: BootstrapFormatter = {\n\tname: \"cursor\",\n\n\t/**\n\t * Formats file paths as plain comma-separated paths.\n\t *\n\t * Cursor resolves file paths from the workspace root. No special\n\t * prefix syntax is needed.\n\t *\n\t * @param files - The file index entries to format.\n\t * @returns Formatted string of file paths.\n\t */\n\tformatFilesToLoad(files: readonly FileIndexEntry[]): string {\n\t\tif (files.length === 0) {\n\t\t\treturn \"(none)\";\n\t\t}\n\n\t\tconst shown = files.slice(0, MAX_FILES_TO_SHOW).map((f) => f.filepath);\n\t\tconst remaining = files.length - shown.length;\n\t\tconst suffix = remaining > 0 ? `, +${String(remaining)} more` : \"\";\n\t\treturn shown.join(\", \") + suffix;\n\t},\n\n\t/**\n\t * Formats exclude patterns using \"Ignore\" directive.\n\t *\n\t * Uses \"Ignore\" phrasing to align with Cursor's .cursorrules conventions.\n\t *\n\t * @param patterns - The glob patterns or paths to exclude.\n\t * @returns Formatted exclude instruction string.\n\t */\n\tformatExcludes(patterns: readonly string[]): string {\n\t\tif (patterns.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn `Ignore: ${patterns.join(\", \")}`;\n\t},\n\n\t/**\n\t * Generates the full Cursor-optimized bootstrap prompt.\n\t *\n\t * @param context - The full bootstrap context data.\n\t * @returns The NEXT_PROMPT.md content string.\n\t */\n\tgeneratePrompt(context: BootstrapContext): string {\n\t\tconst { state, chunk, chunkFiles, alwaysIncludeFiles, budget, excludePatterns, projectName } =\n\t\t\tcontext;\n\n\t\tconst lines: string[] = [];\n\n\t\t// -- Header section (3 lines) --\n\t\tlines.push(`Project: ${projectName}`);\n\t\tlines.push(`Active chunk: ${String(chunk.chunk_id)} — ${chunk.title}`);\n\t\tlines.push(formatBudgetLine(budget));\n\n\t\t// -- Context section (up to 4 lines) --\n\t\tconst allFiles = [...alwaysIncludeFiles, ...chunkFiles];\n\t\tlines.push(`Load: ${this.formatFilesToLoad(allFiles)}`);\n\n\t\tconst excludeStr = this.formatExcludes(excludePatterns);\n\t\tif (excludeStr.length > 0) {\n\t\t\tlines.push(excludeStr);\n\t\t}\n\n\t\t// -- Resume section (up to 5 lines) --\n\t\tconst completedSummary = formatCompletedChunksSummary(state);\n\t\tconst progress = formatChunkProgress(chunk);\n\t\tconst resumeParts: string[] = [progress];\n\t\tif (completedSummary.length > 0) {\n\t\t\tresumeParts.push(completedSummary);\n\t\t}\n\t\tlines.push(`Resume: ${resumeParts.join(\" \")}`);\n\n\t\tif (state.last_worked_files.length > 0) {\n\t\t\tconst lastFiles = state.last_worked_files.slice(0, 3).join(\", \");\n\t\t\tlines.push(`Last touched: ${lastFiles}`);\n\t\t}\n\n\t\t// -- Next tasks section (up to 5 lines) --\n\t\tconst pending = getPendingTasks(chunk);\n\t\tif (pending.length > 0) {\n\t\t\tlines.push(\"Next:\");\n\t\t\tconst shown = pending.slice(0, DEFAULT_MAX_NEXT_TASKS);\n\t\t\tfor (const task of shown) {\n\t\t\t\tconst prefix = task.status === \"in-progress\" ? \"[WIP]\" : \"[ ]\";\n\t\t\t\tlines.push(` ${prefix} ${task.text}`);\n\t\t\t}\n\t\t\tconst remaining = pending.length - shown.length;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(` (+${String(remaining)} more tasks)`);\n\t\t\t}\n\t\t}\n\n\t\t// -- Notes section (up to 3 lines) --\n\t\tif (state.notes.length > 0) {\n\t\t\tconst notesToShow = state.notes.slice(0, DEFAULT_MAX_NOTES);\n\t\t\tfor (const note of notesToShow) {\n\t\t\t\tlines.push(`Note: ${note}`);\n\t\t\t}\n\t\t}\n\n\t\t// Trim to max lines\n\t\tconst trimmed = trimToMaxLines(lines, DEFAULT_MAX_PROMPT_LINES);\n\t\treturn `${trimmed.join(\"\\n\")}\\n`;\n\t},\n} as const;\n","/**\n * Cursor adapter — full lifecycle adapter for Cursor integration.\n *\n * Wraps {@link CursorBootstrapFormatter} with lifecycle hooks that:\n * - Generate a dev-session section in .cursorrules during init\n * - Update .cursorrules session section on session end\n *\n * @packageDocumentation\n */\n\nimport type {\n\tAdapter,\n\tAdapterConfig,\n\tAdapterSetupContext,\n\tAdapterSetupResult,\n\tSessionLifecycleContext,\n\tSessionState,\n\tTransformStateContext,\n} from \"@dev-session/core\";\nimport { CursorBootstrapFormatter } from \"./cursor-bootstrap-formatter.js\";\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Marker comments that delimit the dev-session section in .cursorrules. */\nconst SECTION_START = \"# dev-session:start\";\nconst SECTION_END = \"# dev-session:end\";\n\n/** The .cursorrules file path. */\nconst CURSORRULES_PATH = \".cursorrules\";\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\n/** Static metadata for the Cursor adapter. */\nconst CURSOR_CONFIG: AdapterConfig = {\n\tname: \"cursor\",\n\tdisplay_name: \"Cursor\",\n\tdetect_files: [\".cursor\", \".cursorrules\"],\n\toutput_files: [\".cursorrules\"],\n\tconfig_version: 1,\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Generates the dev-session section content for .cursorrules.\n *\n * Uses comment-style markers (# prefix) since .cursorrules is plain text,\n * not markdown.\n *\n * @param projectName - The project name.\n * @param sessionDir - Relative path to the session directory.\n * @returns The section content (without markers).\n */\nfunction generateSessionSection(_projectName: string, sessionDir: string): string {\n\tconst lines = [\n\t\t\"\",\n\t\t\"## dev-session\",\n\t\t\"\",\n\t\t\"This project uses dev-session to manage AI coding sessions.\",\n\t\t\"\",\n\t\t\"### Session workflow\",\n\t\t\"\",\n\t\t`Start: Read ${sessionDir}/SESSION_STATE.md to find the active chunk, then load only the files tagged to that chunk in FILE_INDEX.md. Confirm before writing code.`,\n\t\t\"\",\n\t\t`End: Update SESSION_STATE.md (mark tasks done), update FILE_INDEX.md (add new files), rewrite NEXT_PROMPT.md (max 15 lines). See ${sessionDir}/ROUTINES.md for the full routine.`,\n\t\t\"\",\n\t\t`Ignore: ${sessionDir}/DONE_LOG.md, ${sessionDir}/PLAN_*.md (except active chunk)`,\n\t\t\"\",\n\t];\n\treturn lines.join(\"\\n\");\n}\n\n/**\n * Inserts or replaces the dev-session section in .cursorrules content.\n *\n * @param existing - The existing .cursorrules content (or empty string).\n * @param sectionContent - The new section content.\n * @returns The updated .cursorrules content.\n */\nfunction upsertSection(existing: string, sectionContent: string): string {\n\tconst startIdx = existing.indexOf(SECTION_START);\n\tconst endIdx = existing.indexOf(SECTION_END);\n\n\tconst wrapped = `${SECTION_START}\\n${sectionContent}\\n${SECTION_END}`;\n\n\tif (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n\t\tconst before = existing.slice(0, startIdx);\n\t\tconst after = existing.slice(endIdx + SECTION_END.length);\n\t\treturn `${before}${wrapped}${after}`;\n\t}\n\n\tconst separator = existing.length > 0 && !existing.endsWith(\"\\n\") ? \"\\n\" : \"\";\n\tconst extraNewline = existing.length > 0 ? \"\\n\" : \"\";\n\treturn `${existing}${separator}${extraNewline}${wrapped}\\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\n/**\n * Cursor adapter.\n *\n * Integrates dev-session with Cursor by managing a .cursorrules section\n * with session workflow instructions and ignore directives.\n */\nexport const CursorAdapter: Adapter = {\n\tconfig: CURSOR_CONFIG,\n\tformatter: CursorBootstrapFormatter,\n\n\t/**\n\t * Generates or updates the dev-session section in .cursorrules.\n\t *\n\t * @param context - Setup context with project paths and detection info.\n\t * @returns Result describing what was written.\n\t */\n\tasync setup(context: AdapterSetupContext): Promise<AdapterSetupResult> {\n\t\tconst projectName = context.projectInfo.project_name ?? \"project\";\n\t\tconst sessionDir = \".session\";\n\n\t\tconst existing = context.readFile(CURSORRULES_PATH) ?? \"\";\n\t\tconst section = generateSessionSection(projectName, sessionDir);\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(CURSORRULES_PATH, updated);\n\n\t\tconst verb = existing.length > 0 ? \"Updated\" : \"Created\";\n\t\treturn {\n\t\t\tfilesWritten: [CURSORRULES_PATH],\n\t\t\tsummary: `${verb} .cursorrules with dev-session workflow section`,\n\t\t};\n\t},\n\n\t/**\n\t * No-op for Cursor — session state format works as-is.\n\t *\n\t * @param state - Current session state.\n\t * @param _context - Transform context.\n\t * @returns Unchanged state.\n\t */\n\ttransformState(state: SessionState, _context: TransformStateContext): SessionState {\n\t\treturn state;\n\t},\n\n\t/**\n\t * Called at session start — no-op for Cursor.\n\t *\n\t * @param _context - Session lifecycle context.\n\t */\n\tasync onSessionStart(_context: SessionLifecycleContext): Promise<void> {\n\t\t// No-op — Cursor reads .cursorrules automatically\n\t},\n\n\t/**\n\t * Updates the .cursorrules dev-session section with current state.\n\t *\n\t * @param context - Session lifecycle context.\n\t */\n\tasync onSessionEnd(context: SessionLifecycleContext): Promise<void> {\n\t\tconst existing = context.readFile(CURSORRULES_PATH);\n\t\tif (existing === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectName = context.chunk.title;\n\t\tconst section = generateSessionSection(projectName, \".session\");\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(CURSORRULES_PATH, updated);\n\t},\n};\n\n// Exported for testing\nexport { CURSORRULES_PATH, generateSessionSection, SECTION_END, SECTION_START, upsertSection };\n","/**\n * opencode bootstrap formatter.\n *\n * Produces NEXT_PROMPT.md content optimized for opencode's context model:\n * - File references use plain paths (opencode loads via AGENTS.md context)\n * - Excludes are phrased as \"Exclude\" (opencode convention)\n * - References AGENTS.md as the session instructions file\n * - Includes a \"Config: AGENTS.md\" line so the tool knows where rules live\n *\n * @packageDocumentation\n */\n\nimport type { BootstrapContext, BootstrapFormatter, FileIndexEntry } from \"@dev-session/core\";\nimport {\n\tDEFAULT_MAX_NEXT_TASKS,\n\tDEFAULT_MAX_NOTES,\n\tDEFAULT_MAX_PROMPT_LINES,\n\tformatBudgetLine,\n\tformatChunkProgress,\n\tformatCompletedChunksSummary,\n\tgetPendingTasks,\n\ttrimToMaxLines,\n} from \"@dev-session/core\";\n\n/** Maximum files to show before truncating. */\nconst MAX_FILES_TO_SHOW = 6;\n\n/**\n * opencode bootstrap formatter.\n *\n * Produces structured prompts that align with opencode's AGENTS.md\n * context loading conventions. File references are plain paths since\n * opencode reads AGENTS.md for context directives.\n */\nexport const OpencodeBootstrapFormatter: BootstrapFormatter = {\n\tname: \"opencode\",\n\n\t/**\n\t * Formats file paths as plain comma-separated paths.\n\t *\n\t * opencode uses AGENTS.md for context loading — file references\n\t * are plain paths that the tool resolves from the workspace root.\n\t *\n\t * @param files - The file index entries to format.\n\t * @returns Formatted string of file paths.\n\t */\n\tformatFilesToLoad(files: readonly FileIndexEntry[]): string {\n\t\tif (files.length === 0) {\n\t\t\treturn \"(none)\";\n\t\t}\n\n\t\tconst shown = files.slice(0, MAX_FILES_TO_SHOW).map((f) => f.filepath);\n\t\tconst remaining = files.length - shown.length;\n\t\tconst suffix = remaining > 0 ? `, +${String(remaining)} more` : \"\";\n\t\treturn shown.join(\", \") + suffix;\n\t},\n\n\t/**\n\t * Formats exclude patterns using \"Exclude\" directive.\n\t *\n\t * Uses \"Exclude\" phrasing to align with opencode's AGENTS.md conventions.\n\t *\n\t * @param patterns - The glob patterns or paths to exclude.\n\t * @returns Formatted exclude instruction string.\n\t */\n\tformatExcludes(patterns: readonly string[]): string {\n\t\tif (patterns.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn `Exclude: ${patterns.join(\", \")}`;\n\t},\n\n\t/**\n\t * Generates the full opencode-optimized bootstrap prompt.\n\t *\n\t * Includes a \"Config: AGENTS.md\" line so the tool can locate\n\t * session rules and instructions.\n\t *\n\t * @param context - The full bootstrap context data.\n\t * @returns The NEXT_PROMPT.md content string.\n\t */\n\tgeneratePrompt(context: BootstrapContext): string {\n\t\tconst { state, chunk, chunkFiles, alwaysIncludeFiles, budget, excludePatterns, projectName } =\n\t\t\tcontext;\n\n\t\tconst lines: string[] = [];\n\n\t\t// -- Header section (3 lines) --\n\t\tlines.push(`Project: ${projectName}`);\n\t\tlines.push(`Active chunk: ${String(chunk.chunk_id)} — ${chunk.title}`);\n\t\tlines.push(formatBudgetLine(budget));\n\n\t\t// -- Context section (up to 4 lines) --\n\t\tconst allFiles = [...alwaysIncludeFiles, ...chunkFiles];\n\t\tlines.push(`Load: ${this.formatFilesToLoad(allFiles)}`);\n\n\t\tconst excludeStr = this.formatExcludes(excludePatterns);\n\t\tif (excludeStr.length > 0) {\n\t\t\tlines.push(excludeStr);\n\t\t}\n\n\t\t// -- Resume section (up to 5 lines) --\n\t\tconst completedSummary = formatCompletedChunksSummary(state);\n\t\tconst progress = formatChunkProgress(chunk);\n\t\tconst resumeParts: string[] = [progress];\n\t\tif (completedSummary.length > 0) {\n\t\t\tresumeParts.push(completedSummary);\n\t\t}\n\t\tlines.push(`Resume: ${resumeParts.join(\" \")}`);\n\n\t\tif (state.last_worked_files.length > 0) {\n\t\t\tconst lastFiles = state.last_worked_files.slice(0, 3).join(\", \");\n\t\t\tlines.push(`Last touched: ${lastFiles}`);\n\t\t}\n\n\t\t// -- Next tasks section (up to 5 lines) --\n\t\tconst pending = getPendingTasks(chunk);\n\t\tif (pending.length > 0) {\n\t\t\tlines.push(\"Next:\");\n\t\t\tconst shown = pending.slice(0, DEFAULT_MAX_NEXT_TASKS);\n\t\t\tfor (const task of shown) {\n\t\t\t\tconst prefix = task.status === \"in-progress\" ? \"[WIP]\" : \"[ ]\";\n\t\t\t\tlines.push(` ${prefix} ${task.text}`);\n\t\t\t}\n\t\t\tconst remaining = pending.length - shown.length;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(` (+${String(remaining)} more tasks)`);\n\t\t\t}\n\t\t}\n\n\t\t// -- Notes section (up to 3 lines) --\n\t\tif (state.notes.length > 0) {\n\t\t\tconst notesToShow = state.notes.slice(0, DEFAULT_MAX_NOTES);\n\t\t\tfor (const note of notesToShow) {\n\t\t\t\tlines.push(`Note: ${note}`);\n\t\t\t}\n\t\t}\n\n\t\t// Trim to max lines\n\t\tconst trimmed = trimToMaxLines(lines, DEFAULT_MAX_PROMPT_LINES);\n\t\treturn `${trimmed.join(\"\\n\")}\\n`;\n\t},\n} as const;\n","/**\n * opencode adapter — full lifecycle adapter for opencode integration.\n *\n * Wraps {@link OpencodeBootstrapFormatter} with lifecycle hooks that:\n * - Generate a dev-session section in AGENTS.md during init\n * - Update AGENTS.md session section on session end\n *\n * @packageDocumentation\n */\n\nimport type {\n\tAdapter,\n\tAdapterConfig,\n\tAdapterSetupContext,\n\tAdapterSetupResult,\n\tSessionLifecycleContext,\n\tSessionState,\n\tTransformStateContext,\n} from \"@dev-session/core\";\nimport { OpencodeBootstrapFormatter } from \"./opencode-bootstrap-formatter.js\";\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Marker comments that delimit the dev-session section in AGENTS.md. */\nconst SECTION_START = \"<!-- dev-session:start -->\";\nconst SECTION_END = \"<!-- dev-session:end -->\";\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\n/** Static metadata for the opencode adapter. */\nconst OPENCODE_CONFIG: AdapterConfig = {\n\tname: \"opencode\",\n\tdisplay_name: \"opencode\",\n\tdetect_files: [\"AGENTS.md\", \"opencode.json\"],\n\toutput_files: [\"AGENTS.md\"],\n\tconfig_version: 1,\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Generates the dev-session section content for AGENTS.md.\n *\n * @param projectName - The project name.\n * @param sessionDir - Relative path to the session directory.\n * @returns The section content (without markers).\n */\nfunction generateSessionSection(_projectName: string, sessionDir: string): string {\n\tconst lines = [\n\t\t\"\",\n\t\t\"## dev-session\",\n\t\t\"\",\n\t\t`This project uses dev-session to manage AI coding sessions.`,\n\t\t\"\",\n\t\t\"### Session workflow\",\n\t\t\"\",\n\t\t`**Start:** Read \\`${sessionDir}/SESSION_STATE.md\\` to find the active chunk, then load only the files tagged to that chunk in \\`FILE_INDEX.md\\`. Confirm before writing code.`,\n\t\t\"\",\n\t\t`**End:** Update \\`SESSION_STATE.md\\` (mark tasks done), update \\`FILE_INDEX.md\\` (add new files), rewrite \\`NEXT_PROMPT.md\\` (max 15 lines). See \\`${sessionDir}/ROUTINES.md\\` for the full routine.`,\n\t\t\"\",\n\t\t`Exclude: ${sessionDir}/DONE_LOG.md, ${sessionDir}/PLAN_*.md (except active chunk)`,\n\t\t\"\",\n\t];\n\treturn lines.join(\"\\n\");\n}\n\n/**\n * Inserts or replaces the dev-session section in AGENTS.md content.\n *\n * @param existing - The existing AGENTS.md content (or empty string).\n * @param sectionContent - The new section content.\n * @returns The updated AGENTS.md content.\n */\nfunction upsertSection(existing: string, sectionContent: string): string {\n\tconst startIdx = existing.indexOf(SECTION_START);\n\tconst endIdx = existing.indexOf(SECTION_END);\n\n\tconst wrapped = `${SECTION_START}\\n${sectionContent}\\n${SECTION_END}`;\n\n\tif (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n\t\tconst before = existing.slice(0, startIdx);\n\t\tconst after = existing.slice(endIdx + SECTION_END.length);\n\t\treturn `${before}${wrapped}${after}`;\n\t}\n\n\tconst separator = existing.length > 0 && !existing.endsWith(\"\\n\") ? \"\\n\" : \"\";\n\tconst extraNewline = existing.length > 0 ? \"\\n\" : \"\";\n\treturn `${existing}${separator}${extraNewline}${wrapped}\\n`;\n}\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\n/**\n * opencode adapter.\n *\n * Integrates dev-session with opencode by managing an AGENTS.md section\n * with session workflow instructions and exclude directives.\n */\nexport const OpencodeAdapter: Adapter = {\n\tconfig: OPENCODE_CONFIG,\n\tformatter: OpencodeBootstrapFormatter,\n\n\t/**\n\t * Generates or updates the dev-session section in AGENTS.md.\n\t *\n\t * @param context - Setup context with project paths and detection info.\n\t * @returns Result describing what was written.\n\t */\n\tasync setup(context: AdapterSetupContext): Promise<AdapterSetupResult> {\n\t\tconst projectName = context.projectInfo.project_name ?? \"project\";\n\t\tconst sessionDir = \".session\";\n\n\t\tconst existing = context.readFile(\"AGENTS.md\") ?? \"\";\n\t\tconst section = generateSessionSection(projectName, sessionDir);\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(\"AGENTS.md\", updated);\n\n\t\tconst verb = existing.length > 0 ? \"Updated\" : \"Created\";\n\t\treturn {\n\t\t\tfilesWritten: [\"AGENTS.md\"],\n\t\t\tsummary: `${verb} AGENTS.md with dev-session workflow section`,\n\t\t};\n\t},\n\n\t/**\n\t * No-op for opencode — session state format works as-is.\n\t *\n\t * @param state - Current session state.\n\t * @param _context - Transform context.\n\t * @returns Unchanged state.\n\t */\n\ttransformState(state: SessionState, _context: TransformStateContext): SessionState {\n\t\treturn state;\n\t},\n\n\t/**\n\t * Called at session start — no-op for opencode.\n\t *\n\t * @param _context - Session lifecycle context.\n\t */\n\tasync onSessionStart(_context: SessionLifecycleContext): Promise<void> {\n\t\t// No-op — opencode reads AGENTS.md automatically\n\t},\n\n\t/**\n\t * Updates the AGENTS.md dev-session section with current state.\n\t *\n\t * @param context - Session lifecycle context.\n\t */\n\tasync onSessionEnd(context: SessionLifecycleContext): Promise<void> {\n\t\tconst existing = context.readFile(\"AGENTS.md\");\n\t\tif (existing === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectName = context.chunk.title;\n\t\tconst section = generateSessionSection(projectName, \".session\");\n\t\tconst updated = upsertSection(existing, section);\n\n\t\tcontext.writeFile(\"AGENTS.md\", updated);\n\t},\n};\n\n// Exported for testing\nexport { generateSessionSection, SECTION_END, SECTION_START, upsertSection };\n","/**\n * Adapter registry — resolves a detected tool to its adapter or formatter.\n *\n * Maps {@link DetectedToolValue} identifiers to the corresponding\n * {@link Adapter} implementation. Falls back to a minimal adapter wrapping\n * {@link PlainTextFormatter} for unknown tools.\n *\n * @packageDocumentation\n */\n\nimport type { Adapter, BootstrapFormatter, DetectedToolValue } from \"@dev-session/core\";\nimport { DetectedTool, PlainTextFormatter } from \"@dev-session/core\";\nimport { ClaudeAdapter } from \"./claude-adapter.js\";\nimport { CursorAdapter } from \"./cursor-adapter.js\";\nimport { OpencodeAdapter } from \"./opencode-adapter.js\";\n\n/**\n * Minimal fallback adapter for unknown tools.\n *\n * Uses {@link PlainTextFormatter} and has no lifecycle hooks.\n */\nconst FALLBACK_ADAPTER: Adapter = {\n\tconfig: {\n\t\tname: \"plain\",\n\t\tdisplay_name: \"Plain Text (fallback)\",\n\t\tdetect_files: [],\n\t\toutput_files: [],\n\t\tconfig_version: 1,\n\t},\n\tformatter: PlainTextFormatter,\n};\n\n/**\n * Internal mapping of tool identifiers to adapter instances.\n *\n * Uses `Object.create(null)` per project security conventions to avoid\n * prototype pollution on the lookup table.\n */\nconst ADAPTER_MAP: Record<string, Adapter> = Object.assign(\n\tObject.create(null) as Record<string, Adapter>,\n\t{\n\t\t[DetectedTool.CLAUDE]: ClaudeAdapter,\n\t\t[DetectedTool.OPENCODE]: OpencodeAdapter,\n\t\t[DetectedTool.CURSOR]: CursorAdapter,\n\t\t[DetectedTool.UNKNOWN]: FALLBACK_ADAPTER,\n\t},\n);\n\n/**\n * Resolves a detected tool identifier to the full lifecycle adapter.\n *\n * Falls back to a minimal adapter wrapping {@link PlainTextFormatter}\n * if the tool is unknown or not recognized.\n *\n * @param tool - The detected tool identifier from {@link ProjectDetector}.\n * @returns The matching {@link Adapter} implementation.\n *\n * @example\n * ```typescript\n * import { DetectedTool } from \"@dev-session/core\";\n * import { getAdapterForTool } from \"@dev-session/adapters\";\n *\n * const adapter = getAdapterForTool(DetectedTool.CLAUDE);\n * // adapter.config.name === \"claude\"\n * // adapter.formatter.name === \"claude\"\n * ```\n */\nexport function getAdapterForTool(tool: DetectedToolValue): Adapter {\n\tconst adapter: Adapter | undefined = ADAPTER_MAP[tool];\n\treturn adapter ?? FALLBACK_ADAPTER;\n}\n\n/**\n * Resolves a detected tool identifier to the appropriate bootstrap formatter.\n *\n * Convenience wrapper around {@link getAdapterForTool} for code that only\n * needs the formatter, not the full adapter lifecycle.\n *\n * @param tool - The detected tool identifier from {@link ProjectDetector}.\n * @returns The matching {@link BootstrapFormatter} implementation.\n *\n * @example\n * ```typescript\n * import { DetectedTool } from \"@dev-session/core\";\n * import { getFormatterForTool } from \"@dev-session/adapters\";\n *\n * const formatter = getFormatterForTool(DetectedTool.CLAUDE);\n * // formatter.name === \"claude\"\n * ```\n */\nexport function getFormatterForTool(tool: DetectedToolValue): BootstrapFormatter {\n\treturn getAdapterForTool(tool).formatter;\n}\n\n/**\n * Returns all registered adapter names.\n *\n * Useful for listing supported tools in help text or diagnostics.\n *\n * @returns Array of registered tool identifiers.\n */\nexport function getRegisteredTools(): readonly string[] {\n\treturn Object.keys(ADAPTER_MAP);\n}\n","/**\n * Adapter resolution utility.\n *\n * Resolves the adapter to use based on: explicit --adapter flag → auto-detect → fallback.\n *\n * @module\n */\n\nimport { getAdapterForTool } from \"@dev-session/adapters\";\nimport type { Adapter, DetectedToolValue } from \"@dev-session/core\";\nimport { DetectedTool, ProjectDetector } from \"@dev-session/core\";\nimport { CliError } from \"@dev-session/security\";\n\n/** Valid adapter names that can be passed via --adapter flag. */\nconst VALID_ADAPTER_NAMES = new Set([\"claude\", \"opencode\", \"cursor\"]);\n\n/**\n * Resolves the adapter to use for the current project.\n *\n * Resolution order:\n * 1. Explicit `--adapter` flag (if provided and valid)\n * 2. Auto-detect from project files via ProjectDetector\n * 3. Fallback to plain text (unknown tool)\n *\n * @param cwd - Working directory to scan.\n * @param adapterFlag - Optional explicit adapter name from --adapter flag.\n * @returns The resolved adapter and detected tool name.\n * @throws {CliError} If the --adapter flag value is not recognized.\n */\nexport function resolveAdapter(\n\tcwd: string,\n\tadapterFlag?: string,\n): { adapter: Adapter; tool: DetectedToolValue; source: \"flag\" | \"detect\" | \"fallback\" } {\n\t// 1. Explicit flag\n\tif (adapterFlag !== undefined) {\n\t\tif (!VALID_ADAPTER_NAMES.has(adapterFlag)) {\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: `Unknown adapter: \"${adapterFlag}\"`,\n\t\t\t\tsuggestion: `Valid adapters: ${[...VALID_ADAPTER_NAMES].join(\", \")}`,\n\t\t\t});\n\t\t}\n\n\t\tconst tool = adapterFlag as DetectedToolValue;\n\t\treturn { adapter: getAdapterForTool(tool), tool, source: \"flag\" };\n\t}\n\n\t// 2. Auto-detect\n\tconst detected = ProjectDetector.detect(cwd).tool;\n\tif (detected !== DetectedTool.UNKNOWN) {\n\t\treturn { adapter: getAdapterForTool(detected), tool: detected, source: \"detect\" };\n\t}\n\n\t// 3. Fallback\n\treturn {\n\t\tadapter: getAdapterForTool(DetectedTool.UNKNOWN),\n\t\ttool: DetectedTool.UNKNOWN,\n\t\tsource: \"fallback\",\n\t};\n}\n","/**\n * `dev-session advance` command.\n *\n * Archives the current chunk, compacts session state, advances to the\n * next chunk, and regenerates NEXT_PROMPT.md. Warns if not all tasks in\n * the active chunk are done, prompting for confirmation to force-advance.\n *\n * Business logic lives in @dev-session/core — this module handles CLI\n * prompts, formatting, and orchestration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { cancel, confirm, isCancel, log } from \"@clack/prompts\";\nimport {\n\ttype BootstrapContext,\n\tContextBudgetCalculator,\n\tFileIndexManager,\n\tNextPromptWriter,\n\ttype PlanChunk,\n\tPlanChunkManager,\n\tSessionStateManager,\n\tTaskStatus,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { createAdapterReadFile } from \"../utils/adapter-io.js\";\nimport { handleError } from \"../utils/error-handler.js\";\nimport { resolveAdapter } from \"../utils/resolve-adapter.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options passed from Commander to the advance action. */\nexport interface AdvanceOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Skip prompts and force-advance even with incomplete tasks. */\n\treadonly yes: boolean;\n\t/** Show detailed output. */\n\treadonly verbose: boolean;\n\t/** Explicit adapter override (from --adapter flag). */\n\treadonly adapter?: string;\n}\n\n/** Result returned after an advance run. */\nexport interface AdvanceResult {\n\t/** The chunk ID that was archived. */\n\treadonly archivedChunkId: number;\n\t/** The new active chunk ID. */\n\treadonly newChunkId: number;\n\t/** Title of the new active chunk. */\n\treadonly newChunkTitle: string;\n\t/** Number of tasks remaining in the new chunk. */\n\treadonly tasksRemaining: number;\n\t/** Whether a force-advance was needed (incomplete tasks). */\n\treadonly forceAdvanced: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the advance command.\n *\n * @param options - Resolved CLI options\n * @returns Advance result summary\n * @throws CliError if no session is found, user cancels, or no next chunk\n */\nexport async function runAdvance(options: AdvanceOptions): Promise<AdvanceResult> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\t// Load current state\n\tlet state = SessionStateManager.load(sessionDir);\n\tconst currentChunk = PlanChunkManager.loadActive(sessionDir, state);\n\tconst allChunks = PlanChunkManager.loadAll(sessionDir);\n\tconst allEntries = FileIndexManager.load(sessionDir);\n\n\tconst currentChunkId = state.active_chunk;\n\n\t// -----------------------------------------------------------------------\n\t// Step 1: Check task completion\n\t// -----------------------------------------------------------------------\n\tconst isComplete = PlanChunkManager.isComplete(currentChunk);\n\tlet forceAdvanced = false;\n\n\tif (!isComplete) {\n\t\tconst doneCount = currentChunk.tasks.filter((t) => t.status === TaskStatus.DONE).length;\n\t\tconst totalCount = currentChunk.tasks.length;\n\n\t\tlog.warn(\n\t\t\t`Chunk ${String(currentChunkId)} has incomplete tasks: ${String(doneCount)}/${String(totalCount)} done`,\n\t\t);\n\n\t\tif (options.yes) {\n\t\t\tlog.warn(\"Force-advancing in --yes mode.\");\n\t\t\tforceAdvanced = true;\n\t\t} else {\n\t\t\tconst forceResult = await confirm({\n\t\t\t\tmessage: \"Force advance with incomplete tasks?\",\n\t\t\t});\n\n\t\t\tif (isCancel(forceResult) || !forceResult) {\n\t\t\t\tcancel(\"Advance cancelled.\");\n\t\t\t\tthrow new CliError({\n\t\t\t\t\tmessage: \"Advance cancelled — complete tasks first or use --yes to force.\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tforceAdvanced = true;\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 2: Verify next chunk exists\n\t// -----------------------------------------------------------------------\n\tconst nextChunkId = currentChunkId + 1;\n\tconst nextChunkExists = allChunks.some((c) => c.chunk_id === nextChunkId);\n\n\tif (!nextChunkExists) {\n\t\tthrow new CliError({\n\t\t\tmessage: `No PLAN_${String(nextChunkId)}.md found — cannot advance beyond the last chunk.`,\n\t\t\tsuggestion: \"All chunks are complete. Consider running `dev-session status` to review.\",\n\t\t});\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 3: Archive the completed chunk\n\t// -----------------------------------------------------------------------\n\tPlanChunkManager.archive(sessionDir, currentChunk);\n\n\tif (options.verbose) {\n\t\tlog.info(`Archived chunk ${String(currentChunkId)} to DONE_LOG.md`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 4: Compact session state\n\t// -----------------------------------------------------------------------\n\tstate = SessionStateManager.compact(state);\n\n\tif (options.verbose) {\n\t\tlog.info(\"Compacted session state.\");\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 5: Advance to next chunk\n\t// -----------------------------------------------------------------------\n\tstate = PlanChunkManager.advance(state);\n\tSessionStateManager.save(sessionDir, state);\n\n\t// -----------------------------------------------------------------------\n\t// Step 6: Load the new chunk and regenerate NEXT_PROMPT.md\n\t// -----------------------------------------------------------------------\n\tconst newChunk = PlanChunkManager.loadActive(sessionDir, state);\n\tconst alwaysInclude = FileIndexManager.alwaysInclude(allEntries);\n\tconst chunkFiles = FileIndexManager.queryByChunk(allEntries, state.active_chunk);\n\n\tconst budget = ContextBudgetCalculator.estimate(state, newChunk, chunkFiles, alwaysInclude);\n\n\tconst excludePatterns = buildExcludePatterns(state.active_chunk, allChunks);\n\tconst projectName = detectProjectName(options.cwd);\n\n\t// Resolve adapter (flag → detect → fallback)\n\tconst { adapter, tool: detectedTool, source } = resolveAdapter(options.cwd, options.adapter);\n\n\tif (options.verbose) {\n\t\tlog.info(`Using ${adapter.config.display_name} adapter (${source}: ${detectedTool})`);\n\t}\n\n\t// Run transformState hook if the adapter provides one\n\tif (adapter.transformState) {\n\t\tconst readFile = createAdapterReadFile(options.cwd);\n\t\tstate = adapter.transformState(state, {\n\t\t\tprojectRoot: options.cwd,\n\t\t\tsessionDir,\n\t\t\treadFile,\n\t\t});\n\t}\n\n\tconst bootstrapContext: BootstrapContext = {\n\t\tstate,\n\t\tchunk: newChunk,\n\t\tchunkFiles,\n\t\talwaysIncludeFiles: alwaysInclude,\n\t\tbudget,\n\t\texcludePatterns,\n\t\tprojectName,\n\t};\n\n\tconst promptContent = NextPromptWriter.generateWithFormatter(adapter.formatter, bootstrapContext);\n\n\tNextPromptWriter.write(sessionDir, promptContent);\n\n\t// -----------------------------------------------------------------------\n\t// Step 7: Display result\n\t// -----------------------------------------------------------------------\n\tconst tasksRemaining = newChunk.tasks.filter((t) => t.status !== TaskStatus.DONE).length;\n\n\tlog.success(\n\t\t`Advanced to PLAN_${String(newChunk.chunk_id)}.md. ${String(tasksRemaining)} task${tasksRemaining === 1 ? \"\" : \"s\"} remaining in this chunk.`,\n\t);\n\n\tlog.info(ContextBudgetCalculator.formatSummary(budget));\n\n\treturn {\n\t\tarchivedChunkId: currentChunkId,\n\t\tnewChunkId: newChunk.chunk_id,\n\t\tnewChunkTitle: newChunk.title,\n\t\ttasksRemaining,\n\t\tforceAdvanced,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Detect project name from package.json.\n *\n * @param cwd - Working directory\n * @returns Project name or directory basename\n */\nfunction detectProjectName(cwd: string): string {\n\ttry {\n\t\tconst pkgPath = path.join(cwd, \"package.json\");\n\t\tconst raw = fs.readFileSync(pkgPath, \"utf-8\");\n\t\tconst pkg: unknown = JSON.parse(raw);\n\t\tif (\n\t\t\ttypeof pkg === \"object\" &&\n\t\t\tpkg !== null &&\n\t\t\t\"name\" in pkg &&\n\t\t\ttypeof (pkg as Record<string, unknown>).name === \"string\"\n\t\t) {\n\t\t\treturn (pkg as Record<string, unknown>).name as string;\n\t\t}\n\t} catch {\n\t\t// No package.json or invalid JSON\n\t}\n\treturn path.basename(cwd);\n}\n\n/**\n * Build exclude patterns for NEXT_PROMPT generation.\n *\n * @param activeChunkId - The currently active chunk ID\n * @param chunks - All available chunks\n * @returns Array of exclude pattern strings\n */\nfunction buildExcludePatterns(\n\tactiveChunkId: number,\n\tchunks: readonly PlanChunk[],\n): readonly string[] {\n\tconst patterns: string[] = [\"**/__tests__/**\", \"**/dist/**\", \"**/node_modules/**\"];\n\n\tfor (const chunk of chunks) {\n\t\tif (chunk.chunk_id !== activeChunkId) {\n\t\t\tpatterns.push(`.session/PLAN_${String(chunk.chunk_id)}.md`);\n\t\t}\n\t}\n\n\treturn patterns;\n}\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws CliError if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n/**\n * Register the `advance` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerAdvanceCommand(program: Command): void {\n\tprogram\n\t\t.command(\"advance\")\n\t\t.description(\"Archive current chunk and advance to the next one\")\n\t\t.action(async () => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t\tadapter?: string;\n\t\t\t}>();\n\n\t\t\tconst advanceOptions: AdvanceOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tyes: opts.yes,\n\t\t\t\tverbose: opts.verbose,\n\t\t\t\t...(opts.adapter !== undefined ? { adapter: opts.adapter } : {}),\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runAdvance(advanceOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session export` command.\n *\n * Exports the current session state back to external AI tool config files —\n * the inverse of `dev-session import`:\n *\n * - `--to claude` Writes the active chunk's tasks, notes, and file list\n * into CLAUDE.md inside `<!-- dev-session:start/end -->` markers.\n * - `--to cursor` Writes the active chunk's FILE_INDEX entries as glob patterns\n * into `.cursor/rules/dev-session.mdc`.\n *\n * Business logic for index/state management lives in `@dev-session/core`.\n * This module handles I/O and Commander registration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { intro, log, outro, spinner } from \"@clack/prompts\";\nimport { type FileIndexEntry, FileIndexManager, SessionStateManager } from \"@dev-session/core\";\nimport { AtomicWriter, CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\n\nimport { handleError } from \"../utils/error-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Marker comments that delimit the dev-session section in CLAUDE.md. */\nconst CLAUDE_SECTION_START = \"<!-- dev-session:start -->\";\nconst CLAUDE_SECTION_END = \"<!-- dev-session:end -->\";\n\n/** Path where the cursor rule is written (relative to project root). */\nconst CURSOR_MDC_PATH = \".cursor/rules/dev-session.mdc\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Supported export target identifiers. */\nexport type ExportTarget = \"claude\" | \"cursor\";\n\n/** Options for the export command. */\nexport interface ExportOptions {\n\t/** Working directory (project root). */\n\treadonly cwd: string;\n\t/** Target to export to. */\n\treadonly to: ExportTarget;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n\t/** Log writes without touching the filesystem. */\n\treadonly dryRun: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Command implementation\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the export command.\n *\n * @param options - Resolved CLI options\n * @throws {CliError} if .session/ is not found or target is unsupported\n */\nexport async function runExport(options: ExportOptions): Promise<void> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\tintro(`dev-session export --to ${options.to}`);\n\n\tswitch (options.to) {\n\t\tcase \"claude\":\n\t\t\tawait exportToClaude(sessionDir, options);\n\t\t\tbreak;\n\t\tcase \"cursor\":\n\t\t\tawait exportToCursor(sessionDir, options);\n\t\t\tbreak;\n\t\tdefault: {\n\t\t\tconst _exhaustive: never = options.to;\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: `Unsupported export target: ${String(_exhaustive)}`,\n\t\t\t\tsuggestion: \"Use --to claude or --to cursor\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// --to claude\n// ---------------------------------------------------------------------------\n\n/**\n * Export current session state into CLAUDE.md.\n *\n * Reads SESSION_STATE.md (active chunk, tasks, notes) and FILE_INDEX.md\n * (files for the active chunk), builds a summary section, and upserts it\n * into CLAUDE.md between the `<!-- dev-session:start/end -->` markers.\n *\n * @param sessionDir - Validated path to .session/\n * @param options - CLI options\n */\nasync function exportToClaude(sessionDir: ValidatedPath, options: ExportOptions): Promise<void> {\n\tconst claudePath = path.join(options.cwd, \"CLAUDE.md\");\n\n\tconst s = spinner();\n\ts.start(\"Reading session state...\");\n\n\tconst state = SessionStateManager.load(sessionDir);\n\tconst entries = FileIndexManager.load(sessionDir);\n\n\tconst activeFiles = FileIndexManager.queryByChunk(entries, state.active_chunk);\n\tconst alwaysFiles = FileIndexManager.alwaysInclude(entries);\n\n\ts.stop(\n\t\t`Chunk ${String(state.active_chunk)} — ${String(activeFiles.length)} files, ${String(state.notes.length)} notes.`,\n\t);\n\n\tconst sectionContent = buildClaudeSection(state.active_chunk, state, activeFiles, alwaysFiles);\n\n\tconst existing = fs.existsSync(claudePath) ? fs.readFileSync(claudePath, \"utf-8\") : \"\";\n\tconst updated = upsertClaudeSection(existing, sectionContent);\n\n\tif (options.verbose) {\n\t\tlog.message(\"Section content:\");\n\t\tlog.message(sectionContent);\n\t}\n\n\tif (!options.dryRun) {\n\t\tconst validatedPath = PathValidator.safeResolvePath(\"CLAUDE.md\", options.cwd);\n\t\tAtomicWriter.writeFile(validatedPath, updated);\n\t}\n\n\tconst verb = existing.length > 0 ? \"Updated\" : \"Created\";\n\tlog.success(\n\t\t`${verb} CLAUDE.md with dev-session section (chunk ${String(state.active_chunk)})${options.dryRun ? \" (dry run)\" : \"\"}.`,\n\t);\n\toutro(\"Export to CLAUDE.md complete.\");\n}\n\n/**\n * Build the dev-session section content for CLAUDE.md.\n *\n * @param chunkId - The active chunk number\n * @param state - Current session state\n * @param activeFiles - FILE_INDEX entries for the active chunk\n * @param alwaysFiles - FILE_INDEX entries always included\n * @returns The section content string (without markers)\n */\nfunction buildClaudeSection(\n\tchunkId: number,\n\tstate: { tasks: ReadonlyArray<{ text: string; status: string }>; notes: readonly string[] },\n\tactiveFiles: readonly FileIndexEntry[],\n\talwaysFiles: readonly FileIndexEntry[],\n): string {\n\tconst lines: string[] = [\"\", `## Active Chunk: ${String(chunkId)}`, \"\"];\n\n\t// Task progress\n\tconst done = state.tasks.filter((t) => t.status === \"done\").length;\n\tconst total = state.tasks.length;\n\tif (total > 0) {\n\t\tlines.push(`**Progress:** ${String(done)}/${String(total)} tasks complete`, \"\");\n\t\tlines.push(\"### Tasks\", \"\");\n\t\tfor (const task of state.tasks) {\n\t\t\tconst checkbox = task.status === \"done\" ? \"[x]\" : \"[ ]\";\n\t\t\tlines.push(`- ${checkbox} ${task.text}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\t// Notes\n\tif (state.notes.length > 0) {\n\t\tlines.push(\"### Notes\", \"\");\n\t\tfor (const note of state.notes) {\n\t\t\tlines.push(`- ${note}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\t// Files to load\n\tconst filesToLoad = [\n\t\t...alwaysFiles.map((e) => e.filepath),\n\t\t...activeFiles.map((e) => e.filepath),\n\t];\n\t// Deduplicate (always-include files may also appear in activeFiles)\n\tconst uniqueFiles = [...new Set(filesToLoad)];\n\n\tif (uniqueFiles.length > 0) {\n\t\tlines.push(\"### Files to load for this chunk\", \"\");\n\t\tfor (const f of uniqueFiles) {\n\t\t\tlines.push(`- \\`${f}\\``);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\n/**\n * Insert or replace the dev-session section in CLAUDE.md content.\n *\n * @param existing - Existing CLAUDE.md content (may be empty)\n * @param sectionContent - The new section content (without markers)\n * @returns Updated CLAUDE.md content\n */\nfunction upsertClaudeSection(existing: string, sectionContent: string): string {\n\tconst startIdx = existing.indexOf(CLAUDE_SECTION_START);\n\tconst endIdx = existing.indexOf(CLAUDE_SECTION_END);\n\n\tconst wrapped = `${CLAUDE_SECTION_START}\\n${sectionContent}\\n${CLAUDE_SECTION_END}`;\n\n\tif (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n\t\tconst before = existing.slice(0, startIdx);\n\t\tconst after = existing.slice(endIdx + CLAUDE_SECTION_END.length);\n\t\treturn `${before}${wrapped}${after}`;\n\t}\n\n\tconst separator = existing.length > 0 && !existing.endsWith(\"\\n\") ? \"\\n\" : \"\";\n\tconst extraNewline = existing.length > 0 ? \"\\n\" : \"\";\n\treturn `${existing}${separator}${extraNewline}${wrapped}\\n`;\n}\n\n// ---------------------------------------------------------------------------\n// --to cursor\n// ---------------------------------------------------------------------------\n\n/**\n * Export current session FILE_INDEX as a Cursor rule file.\n *\n * Reads FILE_INDEX entries for the active chunk and writes them as\n * glob patterns into `.cursor/rules/dev-session.mdc`.\n *\n * @param sessionDir - Validated path to .session/\n * @param options - CLI options\n */\nasync function exportToCursor(sessionDir: ValidatedPath, options: ExportOptions): Promise<void> {\n\tconst s = spinner();\n\ts.start(\"Reading session state...\");\n\n\tconst state = SessionStateManager.load(sessionDir);\n\tconst entries = FileIndexManager.load(sessionDir);\n\tconst activeFiles = FileIndexManager.queryByChunk(entries, state.active_chunk);\n\tconst alwaysFiles = FileIndexManager.alwaysInclude(entries);\n\n\ts.stop(`Chunk ${String(state.active_chunk)} — ${String(activeFiles.length)} files in index.`);\n\n\tif (activeFiles.length === 0 && alwaysFiles.length === 0) {\n\t\tlog.warn(\"No files in FILE_INDEX for the active chunk — nothing to export.\");\n\t\toutro(\"Export complete (nothing written).\");\n\t\treturn;\n\t}\n\n\tconst mdcContent = buildMdcContent(state.active_chunk, activeFiles, alwaysFiles);\n\n\tif (options.verbose) {\n\t\tlog.message(\"Generated .mdc content:\");\n\t\tlog.message(mdcContent);\n\t}\n\n\tif (!options.dryRun) {\n\t\tconst rulesDir = path.join(options.cwd, \".cursor\", \"rules\");\n\t\tif (!fs.existsSync(rulesDir)) {\n\t\t\tfs.mkdirSync(rulesDir, { recursive: true });\n\t\t}\n\t\tconst validatedPath = PathValidator.safeResolvePath(CURSOR_MDC_PATH, options.cwd);\n\t\tAtomicWriter.writeFile(validatedPath, mdcContent);\n\t}\n\n\tconst totalFiles = new Set([\n\t\t...alwaysFiles.map((e) => e.filepath),\n\t\t...activeFiles.map((e) => e.filepath),\n\t]).size;\n\n\tlog.success(\n\t\t`Written ${String(totalFiles)} glob pattern${totalFiles === 1 ? \"\" : \"s\"} to ${CURSOR_MDC_PATH}${options.dryRun ? \" (dry run)\" : \"\"}.`,\n\t);\n\toutro(\"Export to Cursor rules complete.\");\n}\n\n/**\n * Build the content for the `.cursor/rules/dev-session.mdc` file.\n *\n * Generates a Cursor rule file with frontmatter glob patterns for all\n * active chunk files and always-include files.\n *\n * @param chunkId - The active chunk number\n * @param activeFiles - FILE_INDEX entries for the active chunk\n * @param alwaysFiles - FILE_INDEX entries always included\n * @returns The .mdc file content string\n */\nfunction buildMdcContent(\n\tchunkId: number,\n\tactiveFiles: readonly FileIndexEntry[],\n\talwaysFiles: readonly FileIndexEntry[],\n): string {\n\tconst allFiles = [...alwaysFiles.map((e) => e.filepath), ...activeFiles.map((e) => e.filepath)];\n\tconst uniqueFiles = [...new Set(allFiles)];\n\n\tconst globsInline = uniqueFiles.map((f) => `\"${f}\"`).join(\", \");\n\tconst frontmatter = [\n\t\t\"---\",\n\t\t`description: dev-session active chunk ${String(chunkId)} file index`,\n\t\t`globs: [${globsInline}]`,\n\t\t\"alwaysApply: false\",\n\t\t\"---\",\n\t].join(\"\\n\");\n\n\tconst body = [\n\t\t\"\",\n\t\t`# dev-session — Chunk ${String(chunkId)} context`,\n\t\t\"\",\n\t\t\"Load these files at the start of your session. They are the files\",\n\t\t`tagged to active chunk ${String(chunkId)} in FILE_INDEX.md.`,\n\t\t\"\",\n\t\t\"## Always include\",\n\t\t\"\",\n\t\t...alwaysFiles.map((e) => `- \\`${e.filepath}\\` — ${e.purpose}`),\n\t\t\"\",\n\t\t`## Chunk ${String(chunkId)} files`,\n\t\t\"\",\n\t\t...activeFiles.map((e) => `- \\`${e.filepath}\\` — ${e.purpose}`),\n\t\t\"\",\n\t].join(\"\\n\");\n\n\treturn `${frontmatter}\\n${body}`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws {CliError} if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n// ---------------------------------------------------------------------------\n// Commander registration\n// ---------------------------------------------------------------------------\n\n/**\n * Register the `export` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerExportCommand(program: Command): void {\n\tprogram\n\t\t.command(\"export\")\n\t\t.description(\"Export session state back to external AI tool config files\")\n\t\t.requiredOption(\"--to <target>\", \"Target to export to: claude | cursor\")\n\t\t.action(async (cmdOptions: { to: string }) => {\n\t\t\ttry {\n\t\t\t\tconst opts = program.opts<{\n\t\t\t\t\tcwd: string;\n\t\t\t\t\tverbose: boolean;\n\t\t\t\t\tdryRun: boolean;\n\t\t\t\t}>();\n\n\t\t\t\tconst target = cmdOptions.to;\n\t\t\t\tif (target !== \"claude\" && target !== \"cursor\") {\n\t\t\t\t\tthrow new CliError({\n\t\t\t\t\t\tmessage: `Unknown export target: ${target}`,\n\t\t\t\t\t\tsuggestion: \"Use --to claude or --to cursor\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst exportOptions: ExportOptions = {\n\t\t\t\t\tcwd: opts.cwd,\n\t\t\t\t\tto: target as ExportTarget,\n\t\t\t\t\tverbose: opts.verbose,\n\t\t\t\t\tdryRun: opts.dryRun,\n\t\t\t\t};\n\n\t\t\t\tawait runExport(exportOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session health` command.\n *\n * Audits the full `.session/` directory and reports issues at three\n * severity levels: ERROR, WARNING, INFO. With `--fix`, automatically\n * remediates fixable issues (currently: removing stale FILE_INDEX entries).\n *\n * Business logic (HealthChecker) lives in `@dev-session/core`.\n * This module handles CLI display and Commander registration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { confirm, intro, isCancel, log, outro, spinner } from \"@clack/prompts\";\nimport {\n\ttype FileIndexEntry,\n\tFileIndexManager,\n\tHealthChecker,\n\ttype HealthReport,\n\tHealthSeverity,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\n\nimport { handleError } from \"../utils/error-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options for the health command. */\nexport interface HealthOptions {\n\t/** Working directory (project root). */\n\treadonly cwd: string;\n\t/** Automatically fix fixable issues. */\n\treadonly fix: boolean;\n\t/** Skip confirmation prompts. */\n\treadonly yes: boolean;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n\t/** Output machine-readable JSON. */\n\treadonly json: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Command implementation\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the health command.\n *\n * @param options - Resolved CLI options\n * @throws {CliError} if .session/ is not found\n */\nexport async function runHealth(options: HealthOptions): Promise<void> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\tif (!options.json) {\n\t\tintro(\"dev-session health\");\n\t}\n\n\tconst s = spinner();\n\tif (!options.json) s.start(\"Auditing session...\");\n\n\tconst report = HealthChecker.audit(sessionDir);\n\n\tif (!options.json) {\n\t\ts.stop(\n\t\t\treport.healthy\n\t\t\t\t? `All ${String(report.checksRun)} checks passed.`\n\t\t\t\t: `Audit complete — ${String(report.errorCount)} error${report.errorCount === 1 ? \"\" : \"s\"}, ${String(report.warningCount)} warning${report.warningCount === 1 ? \"\" : \"s\"}.`,\n\t\t);\n\t}\n\n\tif (options.json) {\n\t\tconst jsonOutput = buildJsonOutput(report);\n\t\tprocess.stdout.write(`${JSON.stringify(jsonOutput, null, 2)}\\n`);\n\t\tif (!report.healthy) {\n\t\t\tprocess.exitCode = 1;\n\t\t}\n\t\treturn;\n\t}\n\n\tdisplayReport(report, options.verbose);\n\n\tif (options.fix && report.issues.some((i) => i.fixable)) {\n\t\tawait applyFixes(sessionDir, report, options);\n\t} else if (!report.healthy) {\n\t\tif (report.issues.some((i) => i.fixable)) {\n\t\t\tlog.info(\"Run `dev-session health --fix` to auto-remediate fixable issues.\");\n\t\t}\n\t\toutro(\"Health check complete.\");\n\t\tthrow new CliError({\n\t\t\tmessage: `Session unhealthy: ${String(report.errorCount)} error${report.errorCount === 1 ? \"\" : \"s\"}, ${String(report.warningCount)} warning${report.warningCount === 1 ? \"\" : \"s\"}`,\n\t\t});\n\t} else {\n\t\toutro(\"Session is healthy.\");\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Display\n// ---------------------------------------------------------------------------\n\n/**\n * Display the health report to the terminal.\n *\n * @param report - The health report to display\n * @param verbose - Whether to show verbose output\n */\nfunction displayReport(report: HealthReport, verbose: boolean): void {\n\tif (report.healthy) {\n\t\tlog.success(`Session is healthy. ${String(report.checksRun)} checks passed, no issues found.`);\n\t\treturn;\n\t}\n\n\tfor (const issue of report.issues) {\n\t\tconst prefix = `[${issue.code}]${issue.fixable ? \" (fixable)\" : \"\"}`;\n\t\tswitch (issue.severity) {\n\t\t\tcase HealthSeverity.ERROR:\n\t\t\t\tlog.error(`${prefix} ${issue.message}`);\n\t\t\t\tbreak;\n\t\t\tcase HealthSeverity.WARNING:\n\t\t\t\tlog.warn(`${prefix} ${issue.message}`);\n\t\t\t\tbreak;\n\t\t\tcase HealthSeverity.INFO:\n\t\t\t\tlog.info(`${prefix} ${issue.message}`);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (verbose) {\n\t\tlog.info(\n\t\t\t`Checks run: ${String(report.checksRun)} | Errors: ${String(report.errorCount)} | Warnings: ${String(report.warningCount)} | Info: ${String(report.infoCount)}`,\n\t\t);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Fixes\n// ---------------------------------------------------------------------------\n\n/**\n * Apply auto-fixes for fixable issues.\n *\n * Currently handles:\n * - `STALE_INDEX_ENTRIES`: removes stale FILE_INDEX entries after confirmation\n *\n * @param sessionDir - Validated path to .session/\n * @param report - The health report\n * @param options - CLI options (for --yes and verbosity)\n */\nasync function applyFixes(\n\tsessionDir: ValidatedPath,\n\treport: HealthReport,\n\toptions: HealthOptions,\n): Promise<void> {\n\tlet fixCount = 0;\n\n\tif (report.staleEntries.length > 0) {\n\t\tfixCount += await fixStaleEntries(sessionDir, report.staleEntries, options);\n\t}\n\n\tif (fixCount > 0) {\n\t\toutro(`Fixed ${String(fixCount)} issue${fixCount === 1 ? \"\" : \"s\"}.`);\n\t} else {\n\t\toutro(\"No fixes applied.\");\n\t}\n}\n\n/**\n * Remove stale FILE_INDEX entries with optional confirmation.\n *\n * @param sessionDir - Validated path to .session/\n * @param staleEntries - The stale entries to remove\n * @param options - CLI options\n * @returns Number of fixes applied (0 or 1)\n */\nasync function fixStaleEntries(\n\tsessionDir: ValidatedPath,\n\tstaleEntries: readonly FileIndexEntry[],\n\toptions: HealthOptions,\n): Promise<number> {\n\tlet shouldFix: boolean;\n\n\tif (options.yes) {\n\t\tshouldFix = true;\n\t} else {\n\t\tconst result = await confirm({\n\t\t\tmessage: `Remove ${String(staleEntries.length)} stale FILE_INDEX entr${staleEntries.length === 1 ? \"y\" : \"ies\"}?`,\n\t\t});\n\t\tshouldFix = !isCancel(result) && result === true;\n\t}\n\n\tif (!shouldFix) return 0;\n\n\tconst allEntries = FileIndexManager.load(sessionDir);\n\tconst staleSet = new Set(staleEntries.map((e) => e.filepath));\n\tconst cleaned = allEntries.filter((e) => !staleSet.has(e.filepath));\n\tFileIndexManager.save(sessionDir, cleaned);\n\n\tlog.success(\n\t\t`Removed ${String(staleEntries.length)} stale entr${staleEntries.length === 1 ? \"y\" : \"ies\"} from FILE_INDEX.md.`,\n\t);\n\treturn 1;\n}\n\n// ---------------------------------------------------------------------------\n// JSON output\n// ---------------------------------------------------------------------------\n\n/**\n * Build a JSON-serializable health output object.\n *\n * @param report - The health report\n * @returns Plain object suitable for JSON.stringify\n */\nfunction buildJsonOutput(report: HealthReport): Record<string, unknown> {\n\treturn {\n\t\thealthy: report.healthy,\n\t\tchecks_run: report.checksRun,\n\t\terror_count: report.errorCount,\n\t\twarning_count: report.warningCount,\n\t\tinfo_count: report.infoCount,\n\t\tissues: report.issues.map((i) => ({\n\t\t\tseverity: i.severity,\n\t\t\tcode: i.code,\n\t\t\tmessage: i.message,\n\t\t\tfixable: i.fixable,\n\t\t})),\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws {CliError} if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n// ---------------------------------------------------------------------------\n// Commander registration\n// ---------------------------------------------------------------------------\n\n/**\n * Register the `health` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerHealthCommand(program: Command): void {\n\tprogram\n\t\t.command(\"health\")\n\t\t.description(\"Audit session health and optionally auto-fix issues\")\n\t\t.option(\"--fix\", \"Auto-remediate fixable issues (stale index entries, etc.)\", false)\n\t\t.option(\"--json\", \"Output machine-readable JSON\", false)\n\t\t.action(async (cmdOptions: { fix?: boolean; json?: boolean }) => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t}>();\n\n\t\t\tconst healthOptions: HealthOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tfix: cmdOptions.fix ?? false,\n\t\t\t\tyes: opts.yes,\n\t\t\t\tverbose: opts.verbose,\n\t\t\t\tjson: cmdOptions.json ?? false,\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runHealth(healthOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session import` command.\n *\n * Imports context from external rule files into the dev-session session:\n *\n * - `--from claude` Parses `CLAUDE.md` H2 sections into SESSION_STATE notes.\n * - `--from cursor` Parses `.cursor/rules/*.mdc` glob patterns into FILE_INDEX entries.\n *\n * Business logic for index/state management lives in `@dev-session/core`.\n * This module handles I/O, frontmatter parsing, and Commander registration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { intro, log, outro, spinner } from \"@clack/prompts\";\nimport {\n\ttype FileIndexEntry,\n\tFileIndexManager,\n\tGitignoreAwareWalker,\n\tSessionStateManager,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\n\nimport { handleError } from \"../utils/error-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Supported import source identifiers. */\nexport type ImportSource = \"claude\" | \"cursor\";\n\n/** Options for the import command. */\nexport interface ImportOptions {\n\t/** Working directory (project root). */\n\treadonly cwd: string;\n\t/** Source to import from. */\n\treadonly from: ImportSource;\n\t/** Skip prompts and use defaults. */\n\treadonly yes: boolean;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n\t/** Log writes without touching the filesystem. */\n\treadonly dryRun: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Command implementation\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the import command.\n *\n * @param options - Resolved CLI options\n * @throws {CliError} if .session/ is not found or source is unsupported\n */\nexport async function runImport(options: ImportOptions): Promise<void> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\tintro(`dev-session import --from ${options.from}`);\n\n\tswitch (options.from) {\n\t\tcase \"claude\":\n\t\t\tawait importFromClaude(sessionDir, options);\n\t\t\tbreak;\n\t\tcase \"cursor\":\n\t\t\tawait importFromCursor(sessionDir, options);\n\t\t\tbreak;\n\t\tdefault: {\n\t\t\tconst _exhaustive: never = options.from;\n\t\t\tthrow new CliError({\n\t\t\t\tmessage: `Unsupported import source: ${String(_exhaustive)}`,\n\t\t\t\tsuggestion: \"Use --from claude or --from cursor\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// --from claude\n// ---------------------------------------------------------------------------\n\n/**\n * Parse CLAUDE.md H2 sections and add them as notes in SESSION_STATE.md.\n *\n * Each H2 section title + first 120 chars of its content becomes a note.\n * Already-imported notes (same prefix) are deduplicated.\n *\n * @param sessionDir - Validated path to .session/\n * @param options - CLI options\n */\nasync function importFromClaude(sessionDir: ValidatedPath, options: ImportOptions): Promise<void> {\n\tconst claudePath = path.join(options.cwd, \"CLAUDE.md\");\n\n\tif (!fs.existsSync(claudePath)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"CLAUDE.md not found in project root\",\n\t\t\tsuggestion: \"Ensure CLAUDE.md exists before running import --from claude\",\n\t\t});\n\t}\n\n\tconst s = spinner();\n\ts.start(\"Parsing CLAUDE.md...\");\n\n\tconst content = fs.readFileSync(claudePath, \"utf-8\");\n\tconst sections = extractH2Sections(content);\n\n\ts.stop(\n\t\t`Found ${String(sections.length)} section${sections.length === 1 ? \"\" : \"s\"} in CLAUDE.md.`,\n\t);\n\n\tif (sections.length === 0) {\n\t\tlog.warn(\"No H2 sections found in CLAUDE.md — nothing to import.\");\n\t\toutro(\"Import complete (nothing added).\");\n\t\treturn;\n\t}\n\n\tconst state = SessionStateManager.load(sessionDir);\n\tconst notes = buildClaudeNotes(sections);\n\n\t// Deduplicate against existing notes\n\tconst existingNoteTexts = new Set(state.notes);\n\tconst newNotes = notes.filter((n) => !existingNoteTexts.has(n));\n\n\tif (newNotes.length === 0) {\n\t\tlog.info(\"All sections already imported — no new notes added.\");\n\t\toutro(\"Import complete (no changes).\");\n\t\treturn;\n\t}\n\n\tif (options.verbose) {\n\t\tfor (const note of newNotes) {\n\t\t\tlog.message(` + ${note}`);\n\t\t}\n\t}\n\n\tif (!options.dryRun) {\n\t\tconst updated = { ...state, notes: [...state.notes, ...newNotes] };\n\t\tSessionStateManager.save(sessionDir, updated);\n\t}\n\n\tlog.success(\n\t\t`Added ${String(newNotes.length)} note${newNotes.length === 1 ? \"\" : \"s\"} to SESSION_STATE.md${options.dryRun ? \" (dry run)\" : \"\"}.`,\n\t);\n\toutro(\"Import from CLAUDE.md complete.\");\n}\n\n/**\n * Extract H2 sections from markdown content.\n *\n * @param content - Raw markdown string\n * @returns Array of `{ title, excerpt }` objects\n */\nfunction extractH2Sections(content: string): Array<{ title: string; excerpt: string }> {\n\tconst lines = content.split(\"\\n\");\n\tconst sections: Array<{ title: string; excerpt: string }> = [];\n\tlet currentTitle: string | null = null;\n\tconst currentBody: string[] = [];\n\n\tconst flush = (): void => {\n\t\tif (currentTitle === null) return;\n\t\tconst excerpt = currentBody.join(\" \").replace(/\\s+/g, \" \").trim().slice(0, 120);\n\t\tsections.push({ title: currentTitle, excerpt });\n\t\tcurrentBody.length = 0;\n\t};\n\n\tfor (const line of lines) {\n\t\tif (line.startsWith(\"## \")) {\n\t\t\tflush();\n\t\t\tcurrentTitle = line.replace(/^##\\s+/, \"\").trim();\n\t\t} else if (currentTitle !== null && line.trim() !== \"\" && !line.startsWith(\"#\")) {\n\t\t\tcurrentBody.push(line.trim());\n\t\t}\n\t}\n\tflush();\n\n\treturn sections;\n}\n\n/**\n * Build note strings from CLAUDE.md sections.\n *\n * @param sections - Parsed H2 sections\n * @returns Array of note strings to add to SESSION_STATE\n */\nfunction buildClaudeNotes(sections: ReadonlyArray<{ title: string; excerpt: string }>): string[] {\n\treturn sections.map(({ title, excerpt }) => {\n\t\tconst base = `CLAUDE.md: ${title}`;\n\t\treturn excerpt.length > 0 ? `${base} — ${excerpt}` : base;\n\t});\n}\n\n// ---------------------------------------------------------------------------\n// --from cursor\n// ---------------------------------------------------------------------------\n\n/**\n * Parse `.cursor/rules/*.mdc` glob patterns and add matching files\n * to FILE_INDEX tagged to the active chunk.\n *\n * @param sessionDir - Validated path to .session/\n * @param options - CLI options\n */\nasync function importFromCursor(sessionDir: ValidatedPath, options: ImportOptions): Promise<void> {\n\tconst rulesDir = path.join(options.cwd, \".cursor\", \"rules\");\n\n\tif (!fs.existsSync(rulesDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \".cursor/rules/ directory not found\",\n\t\t\tsuggestion: \"Ensure Cursor rules exist before running import --from cursor\",\n\t\t});\n\t}\n\n\tconst s = spinner();\n\ts.start(\"Reading Cursor rules...\");\n\n\tconst mdcFiles = fs\n\t\t.readdirSync(rulesDir)\n\t\t.filter((f) => f.endsWith(\".mdc\"))\n\t\t.map((f) => path.join(rulesDir, f));\n\n\ts.stop(`Found ${String(mdcFiles.length)} rule file${mdcFiles.length === 1 ? \"\" : \"s\"}.`);\n\n\tif (mdcFiles.length === 0) {\n\t\tlog.warn(\"No .mdc files found in .cursor/rules/ — nothing to import.\");\n\t\toutro(\"Import complete (nothing added).\");\n\t\treturn;\n\t}\n\n\t// Pre-walk all project files once for efficiency\n\ts.start(\"Scanning codebase...\");\n\tconst walkedFiles = GitignoreAwareWalker.walk(options.cwd).map((f) => f.relativePath);\n\ts.stop(`Scanned ${String(walkedFiles.length)} files.`);\n\n\tconst state = SessionStateManager.load(sessionDir);\n\tconst activeChunk = state.active_chunk;\n\tconst entries = FileIndexManager.load(sessionDir);\n\tlet addedCount = 0;\n\tlet updatedEntries = [...entries];\n\n\tfor (const mdcPath of mdcFiles) {\n\t\tconst result = processMdcFile(\n\t\t\tmdcPath,\n\t\t\tactiveChunk,\n\t\t\tupdatedEntries,\n\t\t\twalkedFiles,\n\t\t\toptions.verbose,\n\t\t);\n\t\tupdatedEntries = result.entries;\n\t\taddedCount += result.added;\n\t}\n\n\tif (addedCount === 0) {\n\t\tlog.info(\"All matched files already in FILE_INDEX — no new entries added.\");\n\t\toutro(\"Import complete (no changes).\");\n\t\treturn;\n\t}\n\n\tif (!options.dryRun) {\n\t\tFileIndexManager.save(sessionDir, updatedEntries);\n\t}\n\n\tlog.success(\n\t\t`Added ${String(addedCount)} file${addedCount === 1 ? \"\" : \"s\"} to FILE_INDEX.md (chunk ${String(activeChunk)})${options.dryRun ? \" (dry run)\" : \"\"}.`,\n\t);\n\toutro(\"Import from Cursor rules complete.\");\n}\n\n/**\n * Process a single .mdc file: expand its globs and merge into the entries list.\n *\n * Uses {@link GitignoreAwareWalker} to enumerate files, then filters by\n * the glob patterns from the .mdc frontmatter.\n *\n * @param mdcPath - Absolute path to the .mdc file\n * @param activeChunk - Chunk to tag new entries to\n * @param entries - Current FILE_INDEX entries\n * @param allFiles - All codebase files (pre-walked for efficiency)\n * @param verbose - Whether to log per-file additions\n * @returns Updated entries and count of new additions\n */\nfunction processMdcFile(\n\tmdcPath: string,\n\tactiveChunk: number,\n\tentries: FileIndexEntry[],\n\tallFiles: readonly string[],\n\tverbose: boolean,\n): { entries: FileIndexEntry[]; added: number } {\n\tconst raw = fs.readFileSync(mdcPath, \"utf-8\");\n\tconst parsed = parseMdcFrontmatter(raw, path.basename(mdcPath));\n\n\tif (parsed === null || parsed.globs === undefined) {\n\t\treturn { entries, added: 0 };\n\t}\n\n\tconst patterns = Array.isArray(parsed.globs) ? parsed.globs : [parsed.globs];\n\tconst ruleDescription = parsed.description ?? path.basename(mdcPath, \".mdc\");\n\tlet added = 0;\n\tlet updatedEntries = entries;\n\n\tfor (const pattern of patterns) {\n\t\tconst regex = globToRegex(pattern);\n\t\tfor (const relPath of allFiles) {\n\t\t\tif (!regex.test(relPath)) continue;\n\n\t\t\tconst existingIdx = updatedEntries.findIndex((e) => e.filepath === relPath);\n\t\t\tif (existingIdx !== -1) continue;\n\n\t\t\tconst newEntry: FileIndexEntry = {\n\t\t\t\tfilepath: relPath,\n\t\t\t\tchunk_tags: [activeChunk],\n\t\t\t\tpurpose: `Cursor rule: ${ruleDescription}`,\n\t\t\t};\n\t\t\tupdatedEntries = [...updatedEntries, newEntry];\n\t\t\tif (verbose) log.message(` + ${relPath}`);\n\t\t\tadded++;\n\t\t}\n\t}\n\n\treturn { entries: updatedEntries, added };\n}\n\n/**\n * Convert a glob pattern string to a RegExp.\n *\n * Handles the key cases for cursor rule globs:\n * - `src/**\\/\\*.ts` → matches `src/index.ts` AND `src/foo/index.ts`\n * - `**\\/\\*.ts` → matches `*.ts` anywhere\n * - `*` → matches any non-slash segment\n *\n * Uses string placeholders so that regex `?` quantifiers we introduce\n * are not accidentally overwritten by glob `?` expansion.\n *\n * @param pattern - Glob pattern (e.g. `src/**\\/*.ts`)\n * @returns Compiled RegExp\n */\nfunction globToRegex(pattern: string): RegExp {\n\t// Normalize path separators to forward slash\n\tconst normalized = pattern.replace(/\\\\/g, \"/\");\n\t// Escape regex special chars except * (do NOT escape ?)\n\tconst escaped = normalized.replace(/[.+^${}()|[\\]]/g, \"\\\\$&\");\n\t// Use opaque string placeholders (not control chars) to preserve\n\t// regex quantifiers we introduce — these strings can't appear in globs.\n\tconst withGlobs = escaped\n\t\t.split(\"/**/\")\n\t\t.join(\"__GLOB_MID__\") // /**/ → placeholder\n\t\t.replace(/^\\*\\*\\//, \"__GLOB_PRE__\") // **/ at start → placeholder\n\t\t.replace(/\\/\\*\\*$/, \"__GLOB_SFX__\") // /** at end → placeholder\n\t\t.replace(/\\*\\*/g, \".*\") // remaining ** → .*\n\t\t.replace(/\\*/g, \"[^/]*\") // * → [^/]*\n\t\t.replace(/\\?/g, \"[^/]\") // ? → any single non-slash char\n\t\t.split(\"__GLOB_MID__\")\n\t\t.join(\"/(?:.*/)?\") // restore mid → optional segments\n\t\t.replace(/__GLOB_PRE__/g, \"(?:.*/)?\") // restore leading → optional prefix\n\t\t.replace(/__GLOB_SFX__/g, \"/.*\"); // restore trailing → match rest\n\treturn new RegExp(`^${withGlobs}$`);\n}\n\n/**\n * Parse the frontmatter from a .mdc file content string.\n *\n * Extracts `description` and `globs` fields using lightweight line-by-line\n * parsing. Does not use a full YAML parser — cursor rule files use simple\n * string and array values that do not require one.\n *\n * @param content - Raw file content\n * @param _filename - Unused; kept for call-site readability\n * @returns Parsed frontmatter or null if frontmatter is absent/malformed\n */\nfunction parseMdcFrontmatter(\n\tcontent: string,\n\t_filename: string,\n): { description?: string; globs?: string | string[] } | null {\n\tif (!content.startsWith(\"---\")) return null;\n\n\tconst endIdx = content.indexOf(\"\\n---\", 3);\n\tif (endIdx === -1) return null;\n\n\tconst yamlBlock = content.slice(4, endIdx);\n\treturn extractMdcFields(yamlBlock);\n}\n\n/**\n * Extract `description` and `globs` from raw YAML frontmatter text.\n *\n * @param yaml - Raw YAML block (no delimiters)\n * @returns Extracted fields or null if none found\n */\nfunction extractMdcFields(\n\tyaml: string,\n): { description?: string; globs?: string | string[] } | null {\n\tconst result: { description?: string; globs?: string | string[] } = {};\n\n\tfor (const line of yaml.split(\"\\n\")) {\n\t\tconst colonIdx = line.indexOf(\":\");\n\t\tif (colonIdx === -1) continue;\n\n\t\tconst key = line.slice(0, colonIdx).trim();\n\t\tconst rawValue = line.slice(colonIdx + 1).trim();\n\n\t\tif (key === \"description\") {\n\t\t\tresult.description = stripQuotes(rawValue);\n\t\t} else if (key === \"globs\") {\n\t\t\tresult.globs = parseGlobsValue(rawValue);\n\t\t}\n\t}\n\n\treturn Object.keys(result).length > 0 ? result : null;\n}\n\n/**\n * Parse a YAML globs value, which may be a single string or inline array.\n *\n * @param inline - The value portion of the `globs:` line\n * @returns A string or array of strings\n */\nfunction parseGlobsValue(inline: string): string | string[] {\n\tif (inline.startsWith(\"[\")) {\n\t\t// Inline array: [\"*.ts\", \"*.tsx\"]\n\t\treturn inline\n\t\t\t.slice(1, inline.lastIndexOf(\"]\"))\n\t\t\t.split(\",\")\n\t\t\t.map((s) => stripQuotes(s.trim()))\n\t\t\t.filter((s) => s.length > 0);\n\t}\n\treturn stripQuotes(inline);\n}\n\n/**\n * Remove surrounding single or double quotes from a YAML scalar value.\n *\n * @param value - The raw scalar string\n * @returns The unquoted string\n */\nfunction stripQuotes(value: string): string {\n\tif (\n\t\t(value.startsWith('\"') && value.endsWith('\"')) ||\n\t\t(value.startsWith(\"'\") && value.endsWith(\"'\"))\n\t) {\n\t\treturn value.slice(1, -1);\n\t}\n\treturn value;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws {CliError} if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n// ---------------------------------------------------------------------------\n// Commander registration\n// ---------------------------------------------------------------------------\n\n/**\n * Register the `import` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerImportCommand(program: Command): void {\n\tprogram\n\t\t.command(\"import\")\n\t\t.description(\"Import context from external rule files into the session\")\n\t\t.requiredOption(\"--from <source>\", \"Source to import from: claude | cursor\")\n\t\t.action(async (cmdOptions: { from: string }) => {\n\t\t\ttry {\n\t\t\t\tconst opts = program.opts<{\n\t\t\t\t\tcwd: string;\n\t\t\t\t\tyes: boolean;\n\t\t\t\t\tverbose: boolean;\n\t\t\t\t\tdryRun: boolean;\n\t\t\t\t}>();\n\n\t\t\t\tconst source = cmdOptions.from;\n\t\t\t\tif (source !== \"claude\" && source !== \"cursor\") {\n\t\t\t\t\tthrow new CliError({\n\t\t\t\t\t\tmessage: `Unknown import source: ${source}`,\n\t\t\t\t\t\tsuggestion: \"Use --from claude or --from cursor\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst importOptions: ImportOptions = {\n\t\t\t\t\tcwd: opts.cwd,\n\t\t\t\t\tfrom: source as ImportSource,\n\t\t\t\t\tyes: opts.yes,\n\t\t\t\t\tverbose: opts.verbose,\n\t\t\t\t\tdryRun: opts.dryRun,\n\t\t\t\t};\n\n\t\t\t\tawait runImport(importOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session index` commands: `add` and `audit`.\n *\n * - `add <filepath>` — validate and append a file to FILE_INDEX.md\n * - `audit` — detect stale entries and optionally auto-remove them\n *\n * Business logic lives in @dev-session/core — this module handles CLI\n * prompts, formatting, and Commander registration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { cancel, isCancel, log, multiselect, text } from \"@clack/prompts\";\nimport {\n\ttype AuditResult,\n\ttype FileIndexEntry,\n\tFileIndexManager,\n\tPlanChunkManager,\n\tSessionStateManager,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { handleError } from \"../utils/error-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options for the index add subcommand. */\nexport interface IndexAddOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** The file path to add. */\n\treadonly filepath: string;\n\t/** Skip prompts and use defaults. */\n\treadonly yes: boolean;\n\t/** Show detailed output. */\n\treadonly verbose: boolean;\n}\n\n/** Options for the index audit subcommand. */\nexport interface IndexAuditOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Automatically remove stale entries after confirmation. */\n\treadonly fix: boolean;\n\t/** Skip prompts (auto-confirm removals). */\n\treadonly yes: boolean;\n\t/** Show detailed output. */\n\treadonly verbose: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Public API: add\n// ---------------------------------------------------------------------------\n\n/**\n * Add a file to FILE_INDEX.md.\n *\n * @param options - Resolved CLI options\n * @throws CliError if no session, file not found, or user cancels\n */\nexport async function runIndexAdd(options: IndexAddOptions): Promise<void> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\t// Validate the file path\n\tconst absPath = path.resolve(options.cwd, options.filepath);\n\tif (!fs.existsSync(absPath)) {\n\t\tthrow new CliError({\n\t\t\tmessage: `File not found: ${options.filepath}`,\n\t\t\tsuggestion: \"Check the path and try again.\",\n\t\t});\n\t}\n\n\t// Validate it's within the project root\n\tPathValidator.safeResolvePath(options.filepath, options.cwd);\n\n\tconst relativePath = path.relative(options.cwd, absPath);\n\n\t// Load current index\n\tconst entries = FileIndexManager.load(sessionDir);\n\n\t// Check for duplicate\n\tconst existing = entries.find((e) => e.filepath === relativePath);\n\tif (existing) {\n\t\tlog.warn(`File already in index: ${relativePath}`);\n\t\tif (options.verbose) {\n\t\t\tlog.info(` Chunk tags: [${existing.chunk_tags.join(\", \")}]`);\n\t\t\tlog.info(` Purpose: ${existing.purpose}`);\n\t\t}\n\t\treturn;\n\t}\n\n\t// Prompt for chunk tags and purpose\n\tlet chunkTags: number[];\n\tlet purpose: string;\n\n\tif (options.yes) {\n\t\t// Default: tag to active chunk\n\t\tconst state = SessionStateManager.load(sessionDir);\n\t\tchunkTags = [state.active_chunk];\n\t\tpurpose = `Added via dev-session index add`;\n\t} else {\n\t\t// Load available chunks for selection\n\t\tconst allChunks = PlanChunkManager.loadAll(sessionDir);\n\t\tconst state = SessionStateManager.load(sessionDir);\n\n\t\tconst chunkOptions = [\n\t\t\t{ value: \"0\", label: \"Always include (chunk 0)\" },\n\t\t\t...allChunks.map((c) => ({\n\t\t\t\tvalue: String(c.chunk_id),\n\t\t\t\tlabel: `Chunk ${String(c.chunk_id)} — ${c.title}`,\n\t\t\t})),\n\t\t];\n\n\t\tconst chunkResult = await multiselect({\n\t\t\tmessage: `Which chunk(s) should ${relativePath} belong to?`,\n\t\t\toptions: chunkOptions,\n\t\t\trequired: true,\n\t\t\tinitialValues: [String(state.active_chunk)],\n\t\t});\n\n\t\tif (isCancel(chunkResult)) {\n\t\t\tcancel(\"Index add cancelled.\");\n\t\t\tthrow new CliError({ message: \"Index add cancelled by user.\" });\n\t\t}\n\n\t\tchunkTags = (chunkResult as string[]).map((v) => Number.parseInt(v, 10));\n\n\t\tconst purposeResult = await text({\n\t\t\tmessage: \"Purpose description:\",\n\t\t\tvalidate: (v) => (!v || v.trim().length === 0 ? \"Purpose is required\" : undefined),\n\t\t});\n\n\t\tif (isCancel(purposeResult)) {\n\t\t\tcancel(\"Index add cancelled.\");\n\t\t\tthrow new CliError({ message: \"Index add cancelled by user.\" });\n\t\t}\n\n\t\tpurpose = purposeResult as string;\n\t}\n\n\t// Build entry and add\n\tconst newEntry: FileIndexEntry = {\n\t\tfilepath: relativePath,\n\t\tchunk_tags: chunkTags,\n\t\tpurpose,\n\t};\n\n\tconst updatedEntries = FileIndexManager.add(entries, newEntry);\n\tFileIndexManager.save(sessionDir, updatedEntries);\n\n\tlog.success(`Added ${relativePath} to FILE_INDEX.md (chunks: [${chunkTags.join(\", \")}])`);\n}\n\n// ---------------------------------------------------------------------------\n// Public API: audit\n// ---------------------------------------------------------------------------\n\n/**\n * Audit FILE_INDEX.md for stale entries.\n *\n * @param options - Resolved CLI options\n * @returns The audit result\n * @throws CliError if no session found\n */\nexport async function runIndexAudit(options: IndexAuditOptions): Promise<AuditResult> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\tconst entries = FileIndexManager.load(sessionDir);\n\tconst audit = FileIndexManager.audit(entries, sessionDir);\n\n\tif (audit.healthy) {\n\t\tlog.success(`FILE_INDEX.md is healthy: ${String(entries.length)} entries, no issues found.`);\n\t\treturn audit;\n\t}\n\n\t// Display stale entries\n\tif (audit.stale.length > 0) {\n\t\tlog.warn(\n\t\t\t`Found ${String(audit.stale.length)} stale entr${audit.stale.length === 1 ? \"y\" : \"ies\"} (files deleted/moved):`,\n\t\t);\n\t\tfor (const entry of audit.stale) {\n\t\t\tlog.message(` ${entry.filepath} (chunks: [${entry.chunk_tags.join(\", \")}])`);\n\t\t}\n\t}\n\n\t// Display missing chunks\n\tif (audit.missingChunks.length > 0) {\n\t\tlog.warn(\n\t\t\t`Missing chunk files: ${audit.missingChunks.map((id) => `PLAN_${String(id)}.md`).join(\", \")}`,\n\t\t);\n\t}\n\n\t// Auto-fix stale entries\n\tif (options.fix && audit.stale.length > 0) {\n\t\tlet shouldFix: boolean;\n\n\t\tif (options.yes) {\n\t\t\tshouldFix = true;\n\t\t} else {\n\t\t\tconst { confirm, isCancel: isCancelled } = await import(\"@clack/prompts\");\n\t\t\tconst fixResult = await confirm({\n\t\t\t\tmessage: `Remove ${String(audit.stale.length)} stale entr${audit.stale.length === 1 ? \"y\" : \"ies\"}?`,\n\t\t\t});\n\n\t\t\tif (isCancelled(fixResult)) {\n\t\t\t\tshouldFix = false;\n\t\t\t} else {\n\t\t\t\tshouldFix = fixResult as boolean;\n\t\t\t}\n\t\t}\n\n\t\tif (shouldFix) {\n\t\t\tconst staleSet = new Set(audit.stale.map((e) => e.filepath));\n\t\t\tconst cleaned = entries.filter((e) => !staleSet.has(e.filepath));\n\t\t\tFileIndexManager.save(sessionDir, cleaned);\n\t\t\tlog.success(\n\t\t\t\t`Removed ${String(audit.stale.length)} stale entr${audit.stale.length === 1 ? \"y\" : \"ies\"}.`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn audit;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws CliError if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n/**\n * Register the `index` command group on a Commander program.\n *\n * Creates the `index` parent command with `add` and `audit` subcommands.\n *\n * @param program - The root Commander program\n */\nexport function registerIndexCommand(program: Command): void {\n\tconst indexCmd = program\n\t\t.command(\"index\")\n\t\t.description(\"Manage the file index (add files, audit for stale entries)\");\n\n\tindexCmd\n\t\t.command(\"add <filepath>\")\n\t\t.description(\"Add a file to FILE_INDEX.md\")\n\t\t.action(async (filepath: string) => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t}>();\n\n\t\t\ttry {\n\t\t\t\tawait runIndexAdd({\n\t\t\t\t\tcwd: opts.cwd,\n\t\t\t\t\tfilepath,\n\t\t\t\t\tyes: opts.yes,\n\t\t\t\t\tverbose: opts.verbose,\n\t\t\t\t});\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n\n\tindexCmd\n\t\t.command(\"audit\")\n\t\t.description(\"Audit FILE_INDEX.md for stale or missing entries\")\n\t\t.option(\"--fix\", \"Auto-remove stale entries after confirmation\", false)\n\t\t.action(async (cmdOptions: { fix?: boolean }) => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t}>();\n\n\t\t\ttry {\n\t\t\t\tawait runIndexAudit({\n\t\t\t\t\tcwd: opts.cwd,\n\t\t\t\t\tfix: cmdOptions.fix ?? false,\n\t\t\t\t\tyes: opts.yes,\n\t\t\t\t\tverbose: opts.verbose,\n\t\t\t\t});\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * Dry-run file write proxy.\n *\n * When `--dry-run` is active, replaces actual file writes with log output\n * showing what would be written. All methods mirror the AtomicWriter API\n * but only log — no filesystem changes.\n *\n * @module\n */\n\nimport path from \"node:path\";\nimport { log } from \"@clack/prompts\";\n\n/**\n * Log what a file write would produce without actually writing.\n *\n * @param filePath - The target file path\n * @param content - The content that would be written\n * @param cwd - The working directory (for relative path display)\n */\nexport function dryRunWrite(filePath: string, content: string, cwd: string): void {\n\tconst relative = path.relative(cwd, filePath);\n\tconst lines = content.split(\"\\n\").length;\n\tconst bytes = Buffer.byteLength(content, \"utf-8\");\n\n\tlog.info(`[dry-run] Would write: ${relative} (${lines} lines, ${bytes} bytes)`);\n}\n\n/**\n * Log what a directory creation would produce without actually creating.\n *\n * @param dirPath - The target directory path\n * @param cwd - The working directory (for relative path display)\n */\nexport function dryRunMkdir(dirPath: string, cwd: string): void {\n\tconst relative = path.relative(cwd, dirPath);\n\tlog.info(`[dry-run] Would create directory: ${relative}`);\n}\n\n/**\n * Log what a .gitignore patch would produce without actually patching.\n *\n * @param filePath - The .gitignore file path\n * @param entries - Lines that would be appended\n * @param cwd - The working directory (for relative path display)\n */\nexport function dryRunGitignorePatch(\n\tfilePath: string,\n\tentries: readonly string[],\n\tcwd: string,\n): void {\n\tconst relative = path.relative(cwd, filePath);\n\tlog.info(`[dry-run] Would append to ${relative}:`);\n\tfor (const entry of entries) {\n\t\tlog.message(` ${entry}`);\n\t}\n}\n","/**\n * Detection phase for `dev-session init`.\n *\n * Runs automatic, prompt-free detection of the project environment:\n * existing PLAN.md (with line/heading/chunk stats), CLAUDE.md / AGENTS.md\n * for adapter setup, package.json for the project name, and .session/\n * for reinitialize detection.\n *\n * All functions are synchronous (filesystem reads on startup are not\n * performance-critical). Business logic lives in @dev-session/core —\n * this module adds CLI-specific reporting on top.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ProjectInfo } from \"@dev-session/core\";\nimport { PlanParser } from \"@dev-session/core\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Statistics about an existing PLAN.md file. */\nexport interface PlanDetectionResult {\n\t/** Whether a PLAN.md file was found (root or docs/). */\n\treadonly found: boolean;\n\t/** Relative path from project root (e.g. \"PLAN.md\" or \"docs/PLAN.md\"). */\n\treadonly relativePath: string | undefined;\n\t/** Total line count of the file. */\n\treadonly lineCount: number;\n\t/** Number of h2 headings (potential chunk boundaries). */\n\treadonly headingCount: number;\n\t/** Estimated number of chunks based on boundary detection. */\n\treadonly estimatedChunks: number;\n}\n\n/** Information about detected tool-specific files (CLAUDE.md, AGENTS.md). */\nexport interface ToolFileDetectionResult {\n\t/** Whether CLAUDE.md exists. */\n\treadonly hasClaude: boolean;\n\t/** Whether AGENTS.md exists. */\n\treadonly hasAgents: boolean;\n\t/** The detected tool from ProjectDetector (claude | opencode | cursor | unknown). */\n\treadonly detectedTool: string;\n}\n\n/** Information from package.json (if present). */\nexport interface PackageDetectionResult {\n\t/** Whether package.json exists. */\n\treadonly found: boolean;\n\t/** The project name from package.json, or undefined. */\n\treadonly projectName: string | undefined;\n}\n\n/** Information about an existing .session/ directory. */\nexport interface SessionDetectionResult {\n\t/** Whether .session/ already exists. */\n\treadonly exists: boolean;\n}\n\n/** Aggregated detection results for the entire project. */\nexport interface DetectionResult {\n\t/** PLAN.md detection. */\n\treadonly plan: PlanDetectionResult;\n\t/** Tool file detection (CLAUDE.md, AGENTS.md). */\n\treadonly toolFiles: ToolFileDetectionResult;\n\t/** package.json detection. */\n\treadonly packageJson: PackageDetectionResult;\n\t/** Existing .session/ detection. */\n\treadonly session: SessionDetectionResult;\n}\n\n// ---------------------------------------------------------------------------\n// Detection functions\n// ---------------------------------------------------------------------------\n\n/** Possible PLAN.md locations, checked in order. */\nconst PLAN_PATHS = [\"PLAN.md\", \"docs/PLAN.md\"] as const;\n\n/**\n * Detect an existing PLAN.md file and compute statistics.\n *\n * Checks both `PLAN.md` (root) and `docs/PLAN.md`. If found, reads\n * the file and uses {@link PlanParser.detectBoundaries} to count\n * h2 headings and estimate chunk count.\n *\n * @param cwd - Absolute path to the project root.\n * @returns Plan detection result with line count, heading count, and estimated chunks.\n */\nexport function detectPlanFile(cwd: string): PlanDetectionResult {\n\tfor (const relativePath of PLAN_PATHS) {\n\t\tconst fullPath = path.join(cwd, relativePath);\n\n\t\tif (!fs.existsSync(fullPath)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = fs.readFileSync(fullPath, \"utf-8\");\n\t\t} catch {\n\t\t\t// Unreadable — treat as not found\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst lineCount = content.split(\"\\n\").length;\n\n\t\tlet headingCount = 0;\n\t\tlet estimatedChunks = 0;\n\n\t\ttry {\n\t\t\tconst boundaries = PlanParser.detectBoundaries(content);\n\t\t\t// Count only high-confidence boundaries (h2 headings, confidence >= 1.0)\n\t\t\theadingCount = boundaries.filter((b) => b.confidence >= 1.0).length;\n\t\t\t// Estimated chunks = number of h2 boundaries (each becomes a chunk)\n\t\t\testimatedChunks = headingCount;\n\t\t} catch {\n\t\t\t// ParseError (empty file, etc.) — report what we can\n\t\t}\n\n\t\treturn {\n\t\t\tfound: true,\n\t\t\trelativePath,\n\t\t\tlineCount,\n\t\t\theadingCount,\n\t\t\testimatedChunks,\n\t\t};\n\t}\n\n\treturn {\n\t\tfound: false,\n\t\trelativePath: undefined,\n\t\tlineCount: 0,\n\t\theadingCount: 0,\n\t\testimatedChunks: 0,\n\t};\n}\n\n/**\n * Detect tool-specific files (CLAUDE.md, AGENTS.md).\n *\n * Uses the already-detected tool from {@link ProjectInfo} and supplements\n * it with explicit file existence checks for adapter setup notes.\n *\n * @param cwd - Absolute path to the project root.\n * @param projectInfo - The already-detected project info from ProjectDetector.\n * @returns Tool file detection result.\n */\nexport function detectToolFiles(cwd: string, projectInfo: ProjectInfo): ToolFileDetectionResult {\n\treturn {\n\t\thasClaude: fs.existsSync(path.join(cwd, \"CLAUDE.md\")),\n\t\thasAgents: fs.existsSync(path.join(cwd, \"AGENTS.md\")),\n\t\tdetectedTool: projectInfo.tool,\n\t};\n}\n\n/**\n * Detect package.json and extract the project name.\n *\n * @param projectInfo - The already-detected project info (contains project_name).\n * @returns Package detection result.\n */\nexport function detectPackageJson(projectInfo: ProjectInfo): PackageDetectionResult {\n\tconst hasPackageJson = projectInfo.existing_files.includes(\"package.json\");\n\n\treturn {\n\t\tfound: hasPackageJson,\n\t\tprojectName: projectInfo.project_name,\n\t};\n}\n\n/**\n * Detect whether a .session/ directory already exists.\n *\n * @param projectInfo - The already-detected project info.\n * @returns Session detection result.\n */\nexport function detectExistingSession(projectInfo: ProjectInfo): SessionDetectionResult {\n\treturn {\n\t\texists: projectInfo.has_existing_session,\n\t};\n}\n\n/**\n * Run the full detection phase.\n *\n * Aggregates results from all detection functions into a single\n * {@link DetectionResult}. This is the main entry point called by\n * the init command.\n *\n * @param cwd - Absolute path to the project root.\n * @param projectInfo - The already-detected project info from ProjectDetector.\n * @returns Aggregated detection results.\n */\nexport function runDetection(cwd: string, projectInfo: ProjectInfo): DetectionResult {\n\treturn {\n\t\tplan: detectPlanFile(cwd),\n\t\ttoolFiles: detectToolFiles(cwd, projectInfo),\n\t\tpackageJson: detectPackageJson(projectInfo),\n\t\tsession: detectExistingSession(projectInfo),\n\t};\n}\n","/**\n * Final writes phase for `dev-session init`.\n *\n * Writes SESSION_STATE.md, ROUTINES.md, NEXT_PROMPT.md, runs the\n * secret scanner on all written content, and offers to patch `.gitignore`.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { confirm, isCancel, log } from \"@clack/prompts\";\nimport type { BootstrapContext, FileIndexEntry, PlanChunk, SessionState } from \"@dev-session/core\";\nimport {\n\tContextBudgetCalculator,\n\tDEFAULT_CONTEXT_BUDGET,\n\tFileIndexManager,\n\tNextPromptWriter,\n\tRoutinesWriter,\n\tSessionStateManager,\n} from \"@dev-session/core\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, CliError, PathValidator, SecretScanner } from \"@dev-session/security\";\nimport { createAdapterReadFile, createAdapterWriteFile } from \"../utils/adapter-io.js\";\nimport { dryRunGitignorePatch, dryRunWrite } from \"../utils/dry-run.js\";\nimport { resolveAdapter } from \"../utils/resolve-adapter.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options for the final writes phase. */\nexport interface FinalWriteOptions {\n\treadonly cwd: string;\n\treadonly yes: boolean;\n\treadonly dryRun: boolean;\n\treadonly verbose: boolean;\n\treadonly strict: boolean;\n\t/** Explicit adapter override (from --adapter flag). */\n\treadonly adapter?: string;\n\t/** Team mode — auto-applies .gitignore and .gitattributes patches. */\n\treadonly teamMode?: boolean;\n}\n\n/** Result from the final writes phase. */\nexport interface FinalWriteResult {\n\t/** Total files written (0 in dry-run mode). */\n\treadonly filesWritten: number;\n\t/** Whether .gitignore was patched. */\n\treadonly gitignorePatched: boolean;\n\t/** Whether .gitattributes was patched (team mode only). */\n\treadonly gitattributesPatched: boolean;\n\t/** Number of secret scan warnings. */\n\treadonly secretWarnings: number;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Lines to add to .gitignore for session files. */\nconst GITIGNORE_ENTRIES = [\n\t\"\",\n\t\"# dev-session (ephemeral session state)\",\n\t\".session/SESSION_STATE.md\",\n\t\".session/NEXT_PROMPT.md\",\n\t\".session/DONE_LOG.md\",\n] as const;\n\n/** Lines to add to .gitattributes for team merge strategy. */\nconst GITATTRIBUTES_ENTRIES = [\n\t\"\",\n\t\"# dev-session (team merge strategy)\",\n\t\".session/FILE_INDEX.md merge=ours\",\n] as const;\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the final writes phase of init.\n *\n * Creates SESSION_STATE.md, ROUTINES.md, NEXT_PROMPT.md, scans for\n * secrets, and optionally patches .gitignore.\n *\n * @param sessionDir - Validated path to the `.session/` directory.\n * @param chunks - The plan chunks (from split or scaffold).\n * @param entries - The file index entries (from generate-index).\n * @param projectName - The project name for NEXT_PROMPT.\n * @param options - CLI options.\n * @returns The final write result.\n * @throws {CliError} If writes fail.\n */\nexport async function runFinalWrites(\n\tsessionDir: ValidatedPath,\n\tchunks: readonly PlanChunk[],\n\tentries: readonly FileIndexEntry[],\n\tprojectName: string,\n\toptions: FinalWriteOptions,\n): Promise<FinalWriteResult> {\n\tlet filesWritten = 0;\n\tlet secretWarnings = 0;\n\n\tconst activeChunk = chunks[0];\n\tif (!activeChunk) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No plan chunks available. Cannot create session state.\",\n\t\t\tsuggestion: \"Ensure plan splitting or scaffolding produced at least one chunk.\",\n\t\t});\n\t}\n\n\t// --- 1. Write SESSION_STATE.md ---\n\tconst sessionState = buildInitialState(activeChunk);\n\tconst stateContent = serializeSessionState(sessionState);\n\n\tsecretWarnings += scanContent(stateContent, \"SESSION_STATE.md\", options.verbose);\n\n\tif (options.dryRun) {\n\t\tdryRunWrite(path.join(sessionDir, \"SESSION_STATE.md\"), stateContent, options.cwd);\n\t} else {\n\t\tSessionStateManager.save(sessionDir, sessionState);\n\t\tfilesWritten++;\n\t}\n\n\t// --- 2. Write ROUTINES.md ---\n\tif (options.dryRun) {\n\t\tdryRunWrite(path.join(sessionDir, \"ROUTINES.md\"), \"(ROUTINES.md template)\", options.cwd);\n\t} else {\n\t\tRoutinesWriter.write(sessionDir);\n\t\tfilesWritten++;\n\t}\n\n\t// --- 3. Write NEXT_PROMPT.md ---\n\tconst chunkFiles = FileIndexManager.queryByChunk(entries, activeChunk.chunk_id);\n\tconst alwaysIncludeFiles = FileIndexManager.alwaysInclude(entries);\n\n\tconst budget = ContextBudgetCalculator.estimate(\n\t\tsessionState,\n\t\tactiveChunk,\n\t\tchunkFiles,\n\t\talwaysIncludeFiles,\n\t\tDEFAULT_CONTEXT_BUDGET,\n\t);\n\n\tconst excludePatterns = buildExcludePatterns(activeChunk.chunk_id, chunks);\n\n\t// Resolve adapter (flag → detect → fallback)\n\tconst { adapter, tool: detectedTool, source } = resolveAdapter(options.cwd, options.adapter);\n\n\tif (options.verbose) {\n\t\tlog.info(`Using ${adapter.config.display_name} adapter (${source}: ${detectedTool})`);\n\t}\n\n\t// --- 3a. Run adapter setup (generates tool-specific files like CLAUDE.md) ---\n\tif (!options.dryRun && adapter.setup) {\n\t\tconst projectInfo = {\n\t\t\ttool: detectedTool,\n\t\t\tproject_type: \"unknown\" as const,\n\t\t\texisting_files: [] as string[],\n\t\t\tproject_root: options.cwd,\n\t\t\thas_existing_session: true,\n\t\t\tproject_name: projectName,\n\t\t};\n\n\t\tconst setupResult = await adapter.setup({\n\t\t\tprojectRoot: options.cwd,\n\t\t\tsessionDir,\n\t\t\tprojectInfo,\n\t\t\tisReinit: false,\n\t\t\twriteFile: createAdapterWriteFile(options.cwd),\n\t\t\treadFile: createAdapterReadFile(options.cwd),\n\t\t});\n\n\t\tif (options.verbose) {\n\t\t\tlog.info(`Adapter setup: ${setupResult.summary}`);\n\t\t}\n\t}\n\n\tconst bootstrapContext: BootstrapContext = {\n\t\tstate: sessionState,\n\t\tchunk: activeChunk,\n\t\tchunkFiles,\n\t\talwaysIncludeFiles,\n\t\tbudget,\n\t\texcludePatterns,\n\t\tprojectName,\n\t};\n\n\tconst promptContent = NextPromptWriter.generateWithFormatter(adapter.formatter, bootstrapContext);\n\n\tsecretWarnings += scanContent(promptContent, \"NEXT_PROMPT.md\", options.verbose);\n\n\tif (options.dryRun) {\n\t\tdryRunWrite(path.join(sessionDir, \"NEXT_PROMPT.md\"), promptContent, options.cwd);\n\t} else {\n\t\tNextPromptWriter.write(sessionDir, promptContent);\n\t\tfilesWritten++;\n\t}\n\n\t// --- 4. Offer to patch .gitignore ---\n\tconst gitignorePatched = await patchGitignore(options);\n\n\t// --- 5. Patch .gitattributes in team mode ---\n\tconst gitattributesPatched = options.teamMode === true ? patchGitattributes(options) : false;\n\n\tif (!options.dryRun) {\n\t\tlog.info(`Context budget: ${ContextBudgetCalculator.formatSummary(budget)}`);\n\t}\n\n\treturn {\n\t\tfilesWritten,\n\t\tgitignorePatched,\n\t\tgitattributesPatched,\n\t\tsecretWarnings,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Build the initial session state for chunk 1.\n *\n * @param activeChunk - The first plan chunk.\n * @returns A fresh SessionState.\n */\nfunction buildInitialState(activeChunk: PlanChunk): SessionState {\n\tconst sessionId = generateSessionId();\n\tconst nowDate = new Date().toISOString().slice(0, 10);\n\tconst nowIso = new Date().toISOString();\n\n\treturn {\n\t\tactive_chunk: activeChunk.chunk_id,\n\t\tsession_id: sessionId,\n\t\tlast_updated: nowDate,\n\t\ttasks: activeChunk.tasks.map((t) => ({\n\t\t\ttext: t.text,\n\t\t\tstatus: t.status,\n\t\t\tadded_at: nowIso,\n\t\t})),\n\t\tlast_worked_files: [],\n\t\tnotes: [`Session initialized on ${nowDate}`],\n\t\tcompleted_chunks: {},\n\t};\n}\n\n/**\n * Generate a UUID v4 session ID.\n *\n * Uses Node.js crypto.randomUUID when available.\n *\n * @returns A UUID v4 string.\n */\nfunction generateSessionId(): string {\n\t// Node 20+ always has crypto.randomUUID\n\treturn crypto.randomUUID();\n}\n\n/**\n * Serialize a SessionState to YAML frontmatter format.\n *\n * This mirrors what SessionStateManager.save() writes, but returns\n * the string for scanning purposes.\n *\n * @param state - The session state.\n * @returns YAML-frontmattered markdown string.\n */\nfunction serializeSessionState(state: SessionState): string {\n\tconst lines: string[] = [\n\t\t\"---\",\n\t\t`active_chunk: ${state.active_chunk}`,\n\t\t`session_id: \"${state.session_id}\"`,\n\t\t`last_updated: \"${state.last_updated}\"`,\n\t\t\"---\",\n\t\t\"\",\n\t\t\"# Session State\",\n\t\t\"\",\n\t\t`## Active Chunk: ${state.active_chunk}`,\n\t\t\"\",\n\t];\n\n\tif (state.tasks.length > 0) {\n\t\tfor (const task of state.tasks) {\n\t\t\tconst marker = task.status === \"done\" ? \"x\" : \" \";\n\t\t\tlines.push(`- [${marker}] ${task.text}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\tif (state.notes.length > 0) {\n\t\tlines.push(\"## Notes\");\n\t\tlines.push(\"\");\n\t\tfor (const note of state.notes) {\n\t\t\tlines.push(`- ${note}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\n/**\n * Build exclude patterns for NEXT_PROMPT.\n *\n * Excludes test files, dist, and other chunk files.\n *\n * @param activeChunkId - The currently active chunk ID.\n * @param chunks - All available chunks.\n * @returns Array of exclude pattern strings.\n */\nfunction buildExcludePatterns(\n\tactiveChunkId: number,\n\tchunks: readonly PlanChunk[],\n): readonly string[] {\n\tconst patterns: string[] = [\"**/__tests__/**\", \"**/dist/**\", \"**/node_modules/**\"];\n\n\t// Exclude other chunk plan files\n\tfor (const chunk of chunks) {\n\t\tif (chunk.chunk_id !== activeChunkId) {\n\t\t\tpatterns.push(`.session/PLAN_${chunk.chunk_id}.md`);\n\t\t}\n\t}\n\n\treturn patterns;\n}\n\n/**\n * Scan content for secrets and log warnings.\n *\n * @param content - The content to scan.\n * @param filename - The filename (for logging).\n * @param verbose - Whether to log individual findings.\n * @returns Number of warnings found.\n */\nfunction scanContent(content: string, filename: string, verbose: boolean): number {\n\tconst results = SecretScanner.scan(content);\n\tif (results.length > 0) {\n\t\tlog.warn(\n\t\t\t`Secret scan found ${results.length} issue${results.length === 1 ? \"\" : \"s\"} in ${filename}`,\n\t\t);\n\t\tif (verbose) {\n\t\t\tfor (const r of results) {\n\t\t\t\tlog.message(` Line ${r.line}: ${r.pattern} (${r.redacted})`);\n\t\t\t}\n\t\t}\n\t}\n\treturn results.length;\n}\n\n/**\n * Offer to patch .gitignore with session-specific entries.\n *\n * In team mode (`options.teamMode === true`) or with `--yes`, the patch is\n * applied automatically without a confirmation prompt.\n *\n * @param options - CLI options.\n * @returns Whether the patch was applied.\n */\nasync function patchGitignore(options: FinalWriteOptions): Promise<boolean> {\n\tconst gitignorePath = path.join(options.cwd, \".gitignore\");\n\n\t// Check if entries already exist\n\tlet existingContent = \"\";\n\ttry {\n\t\texistingContent = fs.readFileSync(gitignorePath, \"utf-8\");\n\t} catch {\n\t\t// No .gitignore — we'll create one\n\t}\n\n\tconst alreadyPatched = GITIGNORE_ENTRIES.some(\n\t\t(entry) => entry.trim().length > 0 && existingContent.includes(entry),\n\t);\n\n\tif (alreadyPatched) {\n\t\tif (options.verbose) {\n\t\t\tlog.info(\".gitignore already contains dev-session entries.\");\n\t\t}\n\t\treturn false;\n\t}\n\n\tif (options.dryRun) {\n\t\tdryRunGitignorePatch(gitignorePath, [...GITIGNORE_ENTRIES], options.cwd);\n\t\treturn false;\n\t}\n\n\t// Team mode or --yes: apply automatically, no prompt\n\tlet shouldPatch: boolean;\n\tif (options.teamMode === true || options.yes) {\n\t\tshouldPatch = true;\n\t} else {\n\t\tconst result = await confirm({\n\t\t\tmessage: \"Add session files to .gitignore?\",\n\t\t});\n\n\t\tif (isCancel(result)) {\n\t\t\tshouldPatch = false;\n\t\t} else {\n\t\t\tshouldPatch = result;\n\t\t}\n\t}\n\n\tif (shouldPatch) {\n\t\tconst newContent = `${existingContent}${GITIGNORE_ENTRIES.join(\"\\n\")}\\n`;\n\t\tconst validatedPath = PathValidator.safeResolvePath(\".gitignore\", options.cwd);\n\t\tAtomicWriter.writeFile(validatedPath, newContent, { skipGuard: true });\n\t\tlog.success(\"Patched .gitignore with session entries.\");\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Patch `.gitattributes` with the FILE_INDEX.md merge strategy entry.\n *\n * Applied automatically in team mode. The patch is idempotent — a second\n * call is a no-op if the entry is already present.\n *\n * @param options - CLI options (must have teamMode === true).\n * @returns Whether the patch was applied.\n */\nfunction patchGitattributes(options: FinalWriteOptions): boolean {\n\tconst gitattributesPath = path.join(options.cwd, \".gitattributes\");\n\n\tlet existingContent = \"\";\n\ttry {\n\t\texistingContent = fs.readFileSync(gitattributesPath, \"utf-8\");\n\t} catch {\n\t\t// No .gitattributes — we'll create one\n\t}\n\n\tconst alreadyPatched = GITATTRIBUTES_ENTRIES.some(\n\t\t(entry) => entry.trim().length > 0 && existingContent.includes(entry),\n\t);\n\n\tif (alreadyPatched) {\n\t\tif (options.verbose) {\n\t\t\tlog.info(\".gitattributes already contains dev-session merge strategy.\");\n\t\t}\n\t\treturn false;\n\t}\n\n\tif (options.dryRun) {\n\t\tlog.message(\n\t\t\t` [dry-run] Would patch .gitattributes: ${GITATTRIBUTES_ENTRIES.filter((e) => e.trim()).join(\", \")}`,\n\t\t);\n\t\treturn false;\n\t}\n\n\tconst newContent = `${existingContent}${GITATTRIBUTES_ENTRIES.join(\"\\n\")}\\n`;\n\tconst validatedPath = PathValidator.safeResolvePath(\".gitattributes\", options.cwd);\n\tAtomicWriter.writeFile(validatedPath, newContent, { skipGuard: true });\n\tlog.success(\"Patched .gitattributes with FILE_INDEX.md merge=ours.\");\n\treturn true;\n}\n","/**\n * Migration path C: Auto-generate FILE_INDEX.md from codebase walk.\n *\n * Uses {@link GitignoreAwareWalker} to discover files, groups them by\n * directory, and in interactive mode prompts to tag each group to a chunk.\n * In `--yes` mode, all files are tagged to chunk 1 (the active chunk).\n *\n * @module\n */\n\nimport * as path from \"node:path\";\nimport { cancel, isCancel, log, select, spinner } from \"@clack/prompts\";\nimport type { FileIndexEntry, PlanChunk } from \"@dev-session/core\";\nimport { FileIndexManager, GitignoreAwareWalker } from \"@dev-session/core\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { CliError } from \"@dev-session/security\";\nimport { dryRunWrite } from \"../utils/dry-run.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Result from FILE_INDEX generation. */\nexport interface GenerateIndexResult {\n\t/** The generated file index entries. */\n\treadonly entries: readonly FileIndexEntry[];\n\t/** Number of files indexed. */\n\treadonly fileCount: number;\n\t/** Number of always-include files. */\n\treadonly alwaysIncludeCount: number;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Files that are always included in context regardless of chunk. */\nconst DEFAULT_ALWAYS_INCLUDE: ReadonlyArray<{\n\treadonly filepath: string;\n\treadonly purpose: string;\n}> = [\n\t{ filepath: \"CLAUDE.md\", purpose: \"AI session instructions\" },\n\t{ filepath: \"AGENTS.md\", purpose: \"AI agent instructions\" },\n\t{ filepath: \".session/SESSION_STATE.md\", purpose: \"Active chunk + task tracking\" },\n];\n\n/** Maximum number of directory groups to display interactively. */\nconst MAX_INTERACTIVE_GROUPS = 30;\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Generate FILE_INDEX.md from a codebase walk.\n *\n * @param sessionDir - Validated path to the `.session/` directory.\n * @param chunks - The available plan chunks (for tagging options).\n * @param options - CLI options controlling interactivity and writes.\n * @returns The generation result with entries and counts.\n * @throws {CliError} If the user cancels.\n */\nexport async function generateIndex(\n\tsessionDir: ValidatedPath,\n\tchunks: readonly PlanChunk[],\n\toptions: {\n\t\treadonly yes: boolean;\n\t\treadonly dryRun: boolean;\n\t\treadonly verbose: boolean;\n\t\treadonly cwd: string;\n\t\t/** Cap the total number of indexed files. Defaults to unlimited. */\n\t\treadonly maxFiles?: number;\n\t},\n): Promise<GenerateIndexResult> {\n\tconst s = spinner();\n\n\t// --- Walk codebase ---\n\ts.start(\"Scanning codebase...\");\n\tlet files = GitignoreAwareWalker.walk(options.cwd);\n\tif (options.maxFiles !== undefined && files.length > options.maxFiles) {\n\t\tlog.warn(\n\t\t\t`Found ${String(files.length)} files — capping at ${String(options.maxFiles)} (--max-files). Remaining files will not be indexed.`,\n\t\t);\n\t\tfiles = files.slice(0, options.maxFiles);\n\t}\n\tconst groups = GitignoreAwareWalker.groupByDirectory(files);\n\ts.stop(\n\t\t`Found ${files.length} file${files.length === 1 ? \"\" : \"s\"} across ${groups.length} director${groups.length === 1 ? \"y\" : \"ies\"}.`,\n\t);\n\n\t// --- Build entries ---\n\tconst entries: FileIndexEntry[] = [];\n\n\t// Add default always-include entries that exist on disk\n\tlet alwaysIncludeCount = 0;\n\tfor (const ai of DEFAULT_ALWAYS_INCLUDE) {\n\t\tconst fullPath = path.join(options.cwd, ai.filepath);\n\t\ttry {\n\t\t\tconst { statSync } = await import(\"node:fs\");\n\t\t\tif (statSync(fullPath).isFile()) {\n\t\t\t\tentries.push({\n\t\t\t\t\tfilepath: ai.filepath,\n\t\t\t\t\tchunk_tags: [0],\n\t\t\t\t\tpurpose: ai.purpose,\n\t\t\t\t});\n\t\t\t\talwaysIncludeCount++;\n\t\t\t}\n\t\t} catch {\n\t\t\t// File doesn't exist — skip\n\t\t}\n\t}\n\n\tif (options.yes) {\n\t\t// Auto mode: tag all files to chunk 1\n\t\tconst firstChunk = chunks[0];\n\t\tconst activeChunkId = firstChunk !== undefined ? firstChunk.chunk_id : 1;\n\t\tfor (const file of files) {\n\t\t\tconst tokenCost = GitignoreAwareWalker.estimateTokenCost(file);\n\t\t\tentries.push({\n\t\t\t\tfilepath: file.relativePath,\n\t\t\t\tchunk_tags: [activeChunkId],\n\t\t\t\tpurpose: inferPurpose(file.relativePath),\n\t\t\t\ttoken_cost: tokenCost,\n\t\t\t});\n\t\t}\n\t} else {\n\t\t// Interactive mode: prompt per directory group\n\t\tconst displayGroups =\n\t\t\tgroups.length > MAX_INTERACTIVE_GROUPS ? groups.slice(0, MAX_INTERACTIVE_GROUPS) : groups;\n\n\t\tif (groups.length > MAX_INTERACTIVE_GROUPS) {\n\t\t\tlog.warn(\n\t\t\t\t`Showing first ${MAX_INTERACTIVE_GROUPS} of ${groups.length} directories. Remaining files will be tagged to chunk 1.`,\n\t\t\t);\n\t\t}\n\n\t\tfor (const group of displayGroups) {\n\t\t\tconst totalTokens = group.files.reduce(\n\t\t\t\t(sum, f) => sum + GitignoreAwareWalker.estimateTokenCost(f),\n\t\t\t\t0,\n\t\t\t);\n\n\t\t\tconst chunkOptions = [\n\t\t\t\t{ value: \"skip\", label: \"Skip (don't index)\" },\n\t\t\t\t{ value: \"always\", label: \"Always include\" },\n\t\t\t\t...chunks.map((c) => ({\n\t\t\t\t\tvalue: String(c.chunk_id),\n\t\t\t\t\tlabel: `Chunk ${c.chunk_id}: ${c.title}`,\n\t\t\t\t})),\n\t\t\t];\n\n\t\t\tconst result = await select({\n\t\t\t\tmessage: `${group.directory}/ (${group.files.length} files, ~${totalTokens} tokens)`,\n\t\t\t\toptions: chunkOptions,\n\t\t\t});\n\n\t\t\tif (isCancel(result)) {\n\t\t\t\tcancel(\"Init cancelled.\");\n\t\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t\t}\n\n\t\t\tif (result === \"skip\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst chunkTag = result === \"always\" ? 0 : Number.parseInt(result as string, 10);\n\n\t\t\tfor (const file of group.files) {\n\t\t\t\tconst tokenCost = GitignoreAwareWalker.estimateTokenCost(file);\n\t\t\t\tentries.push({\n\t\t\t\t\tfilepath: file.relativePath,\n\t\t\t\t\tchunk_tags: [chunkTag],\n\t\t\t\t\tpurpose: inferPurpose(file.relativePath),\n\t\t\t\t\ttoken_cost: tokenCost,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Tag remaining groups (if truncated) to chunk 1\n\t\tif (groups.length > MAX_INTERACTIVE_GROUPS) {\n\t\t\tconst fallbackChunk = chunks[0];\n\t\t\tconst activeChunkId = fallbackChunk !== undefined ? fallbackChunk.chunk_id : 1;\n\t\t\tfor (const group of groups.slice(MAX_INTERACTIVE_GROUPS)) {\n\t\t\t\tfor (const file of group.files) {\n\t\t\t\t\tconst tokenCost = GitignoreAwareWalker.estimateTokenCost(file);\n\t\t\t\t\tentries.push({\n\t\t\t\t\t\tfilepath: file.relativePath,\n\t\t\t\t\t\tchunk_tags: [activeChunkId],\n\t\t\t\t\t\tpurpose: inferPurpose(file.relativePath),\n\t\t\t\t\t\ttoken_cost: tokenCost,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// --- Write FILE_INDEX.md ---\n\tif (options.dryRun) {\n\t\t// Build a preview string for dry-run logging\n\t\tconst preview = `FILE_INDEX.md (${entries.length} entries)`;\n\t\tconst fullPath = path.join(sessionDir, \"FILE_INDEX.md\");\n\t\tdryRunWrite(fullPath, preview, options.cwd);\n\t} else {\n\t\tFileIndexManager.save(sessionDir, entries);\n\t}\n\n\tconst indexedCount = entries.filter((e) => !e.chunk_tags.includes(0)).length;\n\tif (!options.dryRun) {\n\t\tlog.success(\n\t\t\t`Indexed ${indexedCount} file${indexedCount === 1 ? \"\" : \"s\"}. Always-include: ${alwaysIncludeCount} file${alwaysIncludeCount === 1 ? \"\" : \"s\"}.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tentries,\n\t\tfileCount: indexedCount,\n\t\talwaysIncludeCount,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Infer a short purpose description from a file path.\n *\n * @param filepath - The relative file path.\n * @returns A short purpose string.\n */\nfunction inferPurpose(filepath: string): string {\n\tconst base = path.basename(filepath);\n\tconst ext = path.extname(filepath);\n\tconst dir = path.dirname(filepath);\n\n\tif (base === \"package.json\") return \"Package manifest\";\n\tif (base === \"tsconfig.json\") return \"TypeScript config\";\n\tif (base === \"tsconfig.build.json\") return \"Build-only TypeScript config\";\n\tif (base === \"tsup.config.ts\") return \"Build config\";\n\tif (base === \"vitest.config.ts\") return \"Test config\";\n\tif (base === \"biome.json\") return \"Linter/formatter config\";\n\tif (base === \".npmrc\") return \"npm/pnpm settings\";\n\tif (base === \".nvmrc\") return \"Node version\";\n\tif (base === \".gitignore\") return \"Git ignore rules\";\n\tif (base === \"README.md\") return \"Documentation\";\n\tif (base === \"CHANGELOG.md\") return \"Change log\";\n\tif (base === \"LICENSE\") return \"License file\";\n\n\tif (base.endsWith(\".test.ts\") || base.endsWith(\".spec.ts\")) {\n\t\treturn `Tests for ${base.replace(/\\.(test|spec)\\.ts$/, \"\")}`;\n\t}\n\n\tif (ext === \".ts\" || ext === \".tsx\") {\n\t\tif (base === \"index.ts\" || base === \"index.tsx\") {\n\t\t\treturn `${dir === \".\" ? \"Root\" : dir} entry point`;\n\t\t}\n\t\treturn `${base.replace(ext, \"\")} module`;\n\t}\n\n\tif (ext === \".md\") return \"Documentation\";\n\tif (ext === \".json\") return \"Configuration\";\n\tif (ext === \".yml\" || ext === \".yaml\") return \"Configuration\";\n\n\treturn \"Project file\";\n}\n","/**\n * Migration path B: Interactive scaffolding when no existing PLAN.md is found.\n *\n * Prompts for project name, goal, and phase details, then generates\n * `PLAN_N.md` chunk files with starter task templates. All file writes\n * go through AtomicWriter for safety.\n *\n * @module\n */\n\nimport * as path from \"node:path\";\nimport { cancel, isCancel, log, text } from \"@clack/prompts\";\nimport type { PlanChunk } from \"@dev-session/core\";\nimport { PlanParser } from \"@dev-session/core\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, CliError, PathValidator } from \"@dev-session/security\";\nimport { dryRunWrite } from \"../utils/dry-run.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Result from scaffold plan generation. */\nexport interface ScaffoldPlanResult {\n\t/** The generated plan chunks. */\n\treadonly chunks: readonly PlanChunk[];\n\t/** Number of chunk files written (0 in dry-run mode). */\n\treadonly filesWritten: number;\n\t/** The project name entered by the user. */\n\treadonly projectName: string;\n}\n\n/** Phase info collected from the user. */\ninterface PhaseInput {\n\treadonly name: string;\n\treadonly goal: string;\n\treadonly estSessions: number;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_PHASE_COUNT = 3;\nconst DEFAULT_EST_SESSIONS = 2;\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Run the interactive plan scaffolding wizard.\n *\n * In `--yes` mode, generates a single phase with defaults.\n *\n * @param sessionDir - Validated path to the `.session/` directory.\n * @param options - CLI options controlling interactivity and writes.\n * @param defaultProjectName - Pre-detected project name (from package.json).\n * @returns The scaffold result with generated chunks and write count.\n * @throws {CliError} If the user cancels the wizard.\n */\nexport async function scaffoldPlan(\n\tsessionDir: ValidatedPath,\n\toptions: {\n\t\treadonly yes: boolean;\n\t\treadonly dryRun: boolean;\n\t\treadonly verbose: boolean;\n\t\treadonly cwd: string;\n\t},\n\tdefaultProjectName?: string,\n): Promise<ScaffoldPlanResult> {\n\tlet projectName: string;\n\tlet phases: readonly PhaseInput[];\n\n\tif (options.yes) {\n\t\t// Auto mode: single phase with defaults\n\t\tprojectName = defaultProjectName ?? path.basename(options.cwd);\n\t\tphases = [\n\t\t\t{\n\t\t\t\tname: \"Initial setup\",\n\t\t\t\tgoal: \"Set up the project foundation\",\n\t\t\t\testSessions: DEFAULT_EST_SESSIONS,\n\t\t\t},\n\t\t];\n\t} else {\n\t\t// Interactive mode\n\t\tconst nameResult = await text({\n\t\t\tmessage: \"Project name:\",\n\t\t\tinitialValue: defaultProjectName ?? path.basename(options.cwd),\n\t\t\tvalidate: (v) => (!v || v.trim().length === 0 ? \"Project name is required\" : undefined),\n\t\t});\n\n\t\tif (isCancel(nameResult)) {\n\t\t\tcancel(\"Init cancelled.\");\n\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t}\n\t\tprojectName = nameResult;\n\n\t\tconst phaseCountResult = await text({\n\t\t\tmessage: \"How many phases (chunks)?\",\n\t\t\tinitialValue: String(DEFAULT_PHASE_COUNT),\n\t\t\tvalidate: (v) => {\n\t\t\t\tif (!v) return \"Enter a number between 1 and 20\";\n\t\t\t\tconst n = Number.parseInt(v, 10);\n\t\t\t\tif (Number.isNaN(n) || n < 1 || n > 20) {\n\t\t\t\t\treturn \"Enter a number between 1 and 20\";\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t});\n\n\t\tif (isCancel(phaseCountResult)) {\n\t\t\tcancel(\"Init cancelled.\");\n\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t}\n\t\tconst phaseCount = Number.parseInt(phaseCountResult as string, 10);\n\n\t\tphases = await collectPhases(phaseCount);\n\t}\n\n\t// --- Generate chunks ---\n\tconst chunks = generateChunks(phases);\n\n\tif (options.verbose) {\n\t\tlog.info(`Generating ${chunks.length} chunk file${chunks.length === 1 ? \"\" : \"s\"}:`);\n\t\tfor (const chunk of chunks) {\n\t\t\tlog.message(` ${chunk.chunk_id}. ${chunk.title} (~${chunk.est_sessions ?? \"?\"} sessions)`);\n\t\t}\n\t}\n\n\t// --- Write chunk files ---\n\tlet filesWritten = 0;\n\n\tfor (const chunk of chunks) {\n\t\tconst filename = `PLAN_${chunk.chunk_id}.md`;\n\t\tconst content = PlanParser.toMarkdown(chunk);\n\n\t\tif (options.dryRun) {\n\t\t\tconst fullPath = path.join(sessionDir, filename);\n\t\t\tdryRunWrite(fullPath, content, options.cwd);\n\t\t} else {\n\t\t\tconst chunkPath = PathValidator.safeResolvePath(filename, sessionDir);\n\t\t\tAtomicWriter.writeFile(chunkPath, content);\n\t\t\tfilesWritten++;\n\t\t}\n\t}\n\n\tif (!options.dryRun) {\n\t\tlog.success(`Generated ${filesWritten} chunk file${filesWritten === 1 ? \"\" : \"s\"}.`);\n\t}\n\n\treturn { chunks, filesWritten, projectName };\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Collect phase details interactively.\n *\n * @param count - Number of phases to collect.\n * @returns Array of phase inputs from the user.\n * @throws {CliError} If the user cancels.\n */\nasync function collectPhases(count: number): Promise<readonly PhaseInput[]> {\n\tconst phases: PhaseInput[] = [];\n\n\tfor (let i = 1; i <= count; i++) {\n\t\tconst nameResult = await text({\n\t\t\tmessage: `Phase ${i} name:`,\n\t\t\tinitialValue: i === 1 ? \"Foundation & setup\" : \"\",\n\t\t\tvalidate: (v) => (!v || v.trim().length === 0 ? \"Phase name is required\" : undefined),\n\t\t});\n\n\t\tif (isCancel(nameResult)) {\n\t\t\tcancel(\"Init cancelled.\");\n\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t}\n\n\t\tconst goalResult = await text({\n\t\t\tmessage: `Phase ${i} goal (one sentence):`,\n\t\t\tvalidate: (v) => (!v || v.trim().length === 0 ? \"Goal is required\" : undefined),\n\t\t});\n\n\t\tif (isCancel(goalResult)) {\n\t\t\tcancel(\"Init cancelled.\");\n\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t}\n\n\t\tconst sessionsResult = await text({\n\t\t\tmessage: `Phase ${i} estimated sessions:`,\n\t\t\tinitialValue: String(DEFAULT_EST_SESSIONS),\n\t\t\tvalidate: (v) => {\n\t\t\t\tif (!v) return \"Enter a number between 1 and 50\";\n\t\t\t\tconst n = Number.parseInt(v, 10);\n\t\t\t\tif (Number.isNaN(n) || n < 1 || n > 50) {\n\t\t\t\t\treturn \"Enter a number between 1 and 50\";\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t});\n\n\t\tif (isCancel(sessionsResult)) {\n\t\t\tcancel(\"Init cancelled.\");\n\t\t\tthrow new CliError({ message: \"Init cancelled by user.\" });\n\t\t}\n\n\t\tphases.push({\n\t\t\tname: nameResult as string,\n\t\t\tgoal: goalResult as string,\n\t\t\testSessions: Number.parseInt(sessionsResult as string, 10),\n\t\t});\n\t}\n\n\treturn phases;\n}\n\n/**\n * Convert phase inputs into PlanChunk objects.\n *\n * Phase 1 gets starter tasks; subsequent phases get empty templates.\n *\n * @param phases - The user-provided phase inputs.\n * @returns Array of plan chunks ready for serialization.\n */\nfunction generateChunks(phases: readonly PhaseInput[]): PlanChunk[] {\n\treturn phases.map((phase, idx) => {\n\t\tconst chunkId = idx + 1;\n\t\tconst isFirst = idx === 0;\n\n\t\treturn {\n\t\t\tchunk_id: chunkId,\n\t\t\ttitle: `${phase.name}`,\n\t\t\tdepends_on: isFirst ? [] : [chunkId - 1],\n\t\t\test_sessions: phase.estSessions,\n\t\t\ttasks: isFirst\n\t\t\t\t? [\n\t\t\t\t\t\t{ text: `Set up project structure for: ${phase.goal}`, status: \"todo\" as const },\n\t\t\t\t\t\t{ text: \"Configure tooling and dependencies\", status: \"todo\" as const },\n\t\t\t\t\t\t{ text: \"Write initial tests\", status: \"todo\" as const },\n\t\t\t\t\t]\n\t\t\t\t: [{ text: phase.goal, status: \"todo\" as const }],\n\t\t};\n\t});\n}\n","/**\n * Migration path A: Split an existing PLAN.md into `.session/PLAN_N.md` chunks.\n *\n * Detects boundaries via {@link PlanParser.detectBoundaries}, displays them\n * for confirmation, then writes individual chunk files. All business logic\n * delegates to `@dev-session/core`; this module handles prompts and reporting.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { confirm, log, spinner } from \"@clack/prompts\";\nimport type { BoundaryResult, PlanChunk } from \"@dev-session/core\";\nimport { PlanParser } from \"@dev-session/core\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { AtomicWriter, CliError, PathValidator } from \"@dev-session/security\";\nimport { dryRunWrite } from \"../utils/dry-run.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Result from splitting a PLAN.md file. */\nexport interface SplitPlanResult {\n\t/** The parsed plan chunks that were (or would be) written. */\n\treadonly chunks: readonly PlanChunk[];\n\t/** Number of chunk files written (0 in dry-run mode). */\n\treadonly filesWritten: number;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Split an existing PLAN.md into individual chunk files.\n *\n * Reads the file, parses boundaries, optionally prompts for confirmation,\n * and writes `PLAN_N.md` files into the session directory.\n *\n * @param planPath - Absolute path to the existing PLAN.md file.\n * @param sessionDir - Validated path to the `.session/` directory.\n * @param options - CLI options controlling interactivity and writes.\n * @returns The split result with chunks and write count.\n * @throws {CliError} If the plan file is unreadable or produces no chunks.\n */\nexport async function splitPlan(\n\tplanPath: string,\n\tsessionDir: ValidatedPath,\n\toptions: {\n\t\treadonly yes: boolean;\n\t\treadonly dryRun: boolean;\n\t\treadonly verbose: boolean;\n\t\treadonly cwd: string;\n\t},\n): Promise<SplitPlanResult> {\n\tconst s = spinner();\n\n\t// --- Read the plan file ---\n\tlet content: string;\n\ttry {\n\t\tcontent = fs.readFileSync(planPath, \"utf-8\");\n\t} catch {\n\t\tthrow new CliError({\n\t\t\tmessage: `Cannot read plan file: ${path.relative(options.cwd, planPath)}`,\n\t\t\tsuggestion: \"Ensure the file exists and is readable.\",\n\t\t});\n\t}\n\n\t// --- Detect boundaries ---\n\ts.start(\"Analyzing plan structure...\");\n\tconst boundaries = PlanParser.detectBoundaries(content);\n\tconst highConfidence = boundaries.filter((b) => b.confidence >= 1.0);\n\ts.stop(`Found ${highConfidence.length} chunk boundaries.`);\n\n\tif (options.verbose) {\n\t\tlogBoundaries(boundaries);\n\t}\n\n\t// --- Parse into chunks ---\n\tconst chunks = PlanParser.fromMarkdown(content);\n\n\tif (chunks.length === 0) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No chunks found in PLAN.md. The file must contain ## headings.\",\n\t\t\tsuggestion: \"Add `## Chunk 1 -- ...` headings to your PLAN.md.\",\n\t\t});\n\t}\n\n\tlog.info(`Detected ${chunks.length} chunk${chunks.length === 1 ? \"\" : \"s\"}:`);\n\tfor (const chunk of chunks) {\n\t\tconst taskCount = chunk.tasks.length;\n\t\tlog.message(\n\t\t\t` ${chunk.chunk_id}. ${chunk.title} (${taskCount} task${taskCount === 1 ? \"\" : \"s\"})`,\n\t\t);\n\t}\n\n\t// --- Confirm unless --yes ---\n\tif (!options.yes) {\n\t\tconst proceed = await confirm({\n\t\t\tmessage: `Split into ${chunks.length} chunk files?`,\n\t\t});\n\n\t\tif (proceed !== true) {\n\t\t\tlog.warn(\"Aborted plan splitting.\");\n\t\t\treturn { chunks: [], filesWritten: 0 };\n\t\t}\n\t}\n\n\t// --- Write chunk files ---\n\tlet filesWritten = 0;\n\n\tfor (const chunk of chunks) {\n\t\tconst filename = `PLAN_${chunk.chunk_id}.md`;\n\t\tconst chunkContent = PlanParser.toMarkdown(chunk);\n\n\t\tif (options.dryRun) {\n\t\t\tconst fullPath = path.join(sessionDir, filename);\n\t\t\tdryRunWrite(fullPath, chunkContent, options.cwd);\n\t\t} else {\n\t\t\tconst chunkPath = PathValidator.safeResolvePath(filename, sessionDir);\n\t\t\tAtomicWriter.writeFile(chunkPath, chunkContent);\n\t\t\tfilesWritten++;\n\t\t}\n\t}\n\n\tif (!options.dryRun) {\n\t\tlog.success(\n\t\t\t`Split into ${filesWritten} chunk${filesWritten === 1 ? \"\" : \"s\"}. Active chunk: PLAN_1.md`,\n\t\t);\n\t}\n\n\treturn { chunks, filesWritten };\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Log all detected boundaries with their confidence scores.\n *\n * @param boundaries - The detected boundary results.\n */\nfunction logBoundaries(boundaries: readonly BoundaryResult[]): void {\n\tif (boundaries.length === 0) {\n\t\tlog.info(\"No boundaries detected.\");\n\t\treturn;\n\t}\n\n\tlog.info(\"Detected boundaries:\");\n\tfor (const b of boundaries) {\n\t\tconst conf = b.confidence >= 1.0 ? \"high\" : b.confidence >= 0.7 ? \"medium\" : \"low\";\n\t\tlog.message(` Line ${b.lineNumber}: \"${b.heading}\" (${conf} confidence)`);\n\t}\n}\n","/**\n * `dev-session init` command.\n *\n * Orchestrates the full init wizard: detection, migration path selection,\n * plan splitting or scaffolding, FILE_INDEX generation, and final writes.\n *\n * Business logic lives in @dev-session/core -- this module only handles\n * CLI prompts, formatting, and file write orchestration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n\tcancel,\n\tconfirm,\n\tintro,\n\tisCancel,\n\tlog,\n\tnote,\n\toutro,\n\tselect,\n\tspinner,\n} from \"@clack/prompts\";\nimport type { PlanChunk } from \"@dev-session/core\";\nimport { ProjectDetector } from \"@dev-session/core\";\nimport type { ValidatedPath } from \"@dev-session/security\";\nimport { CliError, PathValidator } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { dryRunMkdir } from \"../utils/dry-run.js\";\nimport { handleError } from \"../utils/error-handler.js\";\nimport { runDetection } from \"./detect.js\";\nimport { runFinalWrites } from \"./final-writes.js\";\nimport { generateIndex } from \"./generate-index.js\";\nimport { scaffoldPlan } from \"./scaffold-plan.js\";\nimport { splitPlan } from \"./split-plan.js\";\n\n/** Options passed from commander to the init action. */\nexport interface InitOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Skip all prompts and use defaults. */\n\treadonly yes: boolean;\n\t/** Log writes without touching the filesystem. */\n\treadonly dryRun: boolean;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n\t/** Enable strict mode (block on secret detection). */\n\treadonly strict: boolean;\n\t/** Explicit adapter override (from --adapter flag). */\n\treadonly adapter?: string;\n\t/**\n\t * Explicitly enable team mode (auto-applies .gitignore + .gitattributes).\n\t * When undefined and not --yes, the wizard prompts for team vs personal.\n\t */\n\treadonly teamMode?: boolean;\n\t/**\n\t * Cap the number of files indexed during FILE_INDEX generation.\n\t * When undefined, all discovered files are indexed.\n\t */\n\treadonly maxFiles?: number;\n}\n\n/**\n * Execute the init command.\n *\n * Exported so that other commands (e.g. `migrate`) can invoke init\n * programmatically for sub-directories.\n *\n * @param options - Resolved CLI options\n * @throws CliError if the project cannot be initialized\n */\nexport async function runInit(options: InitOptions): Promise<void> {\n\tintro(\"dev-session init\");\n\n\tconst s = spinner();\n\n\t// -----------------------------------------------------------------------\n\t// Phase 1: Detection (automatic, no prompts)\n\t// -----------------------------------------------------------------------\n\ts.start(\"Detecting project...\");\n\tconst projectInfo = ProjectDetector.detect(options.cwd);\n\ts.stop(\"Project detected.\");\n\n\tconst detection = runDetection(options.cwd, projectInfo);\n\n\tif (options.verbose) {\n\t\tlog.info(`Project root: ${options.cwd}`);\n\t\tlog.info(`Existing session: ${detection.session.exists ? \"yes\" : \"no\"}`);\n\t\tlog.info(`Detected tool: ${detection.toolFiles.detectedTool}`);\n\t\tif (detection.packageJson.projectName !== undefined) {\n\t\t\tlog.info(`Project name: ${detection.packageJson.projectName}`);\n\t\t}\n\t\tif (detection.plan.found) {\n\t\t\tlog.info(\n\t\t\t\t`PLAN.md: ${detection.plan.relativePath} (${detection.plan.lineCount} lines, ~${detection.plan.estimatedChunks} chunks)`,\n\t\t\t);\n\t\t}\n\t\tif (detection.toolFiles.hasClaude) {\n\t\t\tlog.info(\"CLAUDE.md: detected (adapter setup available)\");\n\t\t}\n\t\tif (detection.toolFiles.hasAgents) {\n\t\t\tlog.info(\"AGENTS.md: detected (adapter setup available)\");\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Phase 1b: Handle existing .session/ directory\n\t// -----------------------------------------------------------------------\n\tif (detection.session.exists) {\n\t\tif (options.yes) {\n\t\t\tlog.warn(\"Existing .session/ found. Reinitializing in --yes mode.\");\n\t\t} else {\n\t\t\tconst reinit = await confirm({\n\t\t\t\tmessage: \"A .session/ directory already exists. Reinitialize?\",\n\t\t\t});\n\n\t\t\tif (isCancel(reinit) || !reinit) {\n\t\t\t\tcancel(\"Init cancelled.\");\n\t\t\t\toutro(\"No changes made.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Phase 1c: Team vs personal mode selection\n\t// -----------------------------------------------------------------------\n\tconst teamMode = await resolveTeamMode(options);\n\n\tif (teamMode === undefined) {\n\t\tcancel(\"Init cancelled.\");\n\t\toutro(\"No changes made.\");\n\t\treturn;\n\t}\n\n\tif (options.verbose) {\n\t\tlog.info(`Mode: ${teamMode ? \"team\" : \"personal\"}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Phase 2: Ensure .session/ directory exists\n\t// -----------------------------------------------------------------------\n\tconst sessionDir = ensureSessionDir(options);\n\n\t// -----------------------------------------------------------------------\n\t// Phase 3: Plan chunks (migration path A or B)\n\t// -----------------------------------------------------------------------\n\tlet chunks: readonly PlanChunk[];\n\tlet projectName = detection.packageJson.projectName ?? path.basename(options.cwd);\n\n\tif (detection.plan.found && detection.plan.relativePath) {\n\t\t// Migration path A: split existing PLAN.md\n\t\tlog.info(\n\t\t\t`Found ${detection.plan.relativePath} (${detection.plan.lineCount} lines, ~${detection.plan.estimatedChunks} chunks)`,\n\t\t);\n\n\t\tconst planFullPath = path.join(options.cwd, detection.plan.relativePath);\n\t\tconst result = await splitPlan(planFullPath, sessionDir, options);\n\t\tchunks = result.chunks;\n\n\t\tif (chunks.length === 0) {\n\t\t\t// User aborted split — fall back to scaffold\n\t\t\tlog.info(\"Falling back to interactive scaffolding.\");\n\t\t\tconst scaffoldResult = await scaffoldPlan(sessionDir, options, projectName);\n\t\t\tchunks = scaffoldResult.chunks;\n\t\t\tprojectName = scaffoldResult.projectName;\n\t\t}\n\t} else {\n\t\t// Migration path B: interactive scaffolding\n\t\tlog.info(\"No PLAN.md found. Starting interactive setup.\");\n\t\tconst scaffoldResult = await scaffoldPlan(sessionDir, options, projectName);\n\t\tchunks = scaffoldResult.chunks;\n\t\tprojectName = scaffoldResult.projectName;\n\t}\n\n\tif (chunks.length === 0) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No plan chunks were created. Init cannot continue.\",\n\t\t\tsuggestion: \"Re-run with a PLAN.md file or answer the scaffolding prompts.\",\n\t\t});\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Phase 4: FILE_INDEX generation (migration path C)\n\t// -----------------------------------------------------------------------\n\tconst generateOpts: Parameters<typeof generateIndex>[2] = {\n\t\tyes: options.yes,\n\t\tdryRun: options.dryRun,\n\t\tverbose: options.verbose,\n\t\tcwd: options.cwd,\n\t\t...(options.maxFiles !== undefined ? { maxFiles: options.maxFiles } : {}),\n\t};\n\tconst indexResult = await generateIndex(sessionDir, chunks, generateOpts);\n\n\t// -----------------------------------------------------------------------\n\t// Phase 5: Final writes (SESSION_STATE, ROUTINES, NEXT_PROMPT, .gitignore)\n\t// -----------------------------------------------------------------------\n\tawait runFinalWrites(sessionDir, chunks, indexResult.entries, projectName, {\n\t\t...options,\n\t\tteamMode,\n\t});\n\n\t// -----------------------------------------------------------------------\n\t// Summary\n\t// -----------------------------------------------------------------------\n\tif (options.dryRun) {\n\t\toutro(\"Dry run complete. No files were written.\");\n\t} else {\n\t\tnote(\n\t\t\t[\n\t\t\t\t\"1. Paste .session/NEXT_PROMPT.md into your AI chat to begin\",\n\t\t\t\t\"2. dev-session status → task progress + context budget\",\n\t\t\t\t\"3. dev-session update → mark tasks done after each session\",\n\t\t\t\t\"4. dev-session advance → move to the next chunk when done\",\n\t\t\t].join(\"\\n\"),\n\t\t\t\"Next steps\",\n\t\t);\n\t\toutro(\n\t\t\t`Init complete. ${chunks.length} chunk${chunks.length === 1 ? \"\" : \"s\"}, ${indexResult.fileCount} indexed file${indexResult.fileCount === 1 ? \"\" : \"s\"}.`,\n\t\t);\n\t}\n}\n\n/**\n * Resolve whether to run in team mode.\n *\n * Resolution order:\n * 1. `options.teamMode === true` → team mode (from --team flag)\n * 2. `options.yes` → personal mode (default, no prompt)\n * 3. Otherwise → prompt the user\n *\n * @param options - CLI options.\n * @returns true for team mode, false for personal, undefined if cancelled.\n */\nasync function resolveTeamMode(options: InitOptions): Promise<boolean | undefined> {\n\tif (options.teamMode === true) {\n\t\treturn true;\n\t}\n\tif (options.yes) {\n\t\treturn false;\n\t}\n\n\tconst result = await select({\n\t\tmessage: \"How is this session being used?\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"personal\",\n\t\t\t\tlabel: \"Personal\",\n\t\t\t\thint: \"session files are local only\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"team\",\n\t\t\t\tlabel: \"Team\",\n\t\t\t\thint: \"auto-adds .gitignore + .gitattributes for shared repos\",\n\t\t\t},\n\t\t],\n\t});\n\n\tif (isCancel(result)) {\n\t\treturn undefined;\n\t}\n\n\treturn result === \"team\";\n}\n\n/**\n * Ensure the `.session/` directory exists.\n *\n * @param options - CLI options with cwd and dryRun.\n * @returns A ValidatedPath to the `.session/` directory.\n */\nfunction ensureSessionDir(options: InitOptions): ValidatedPath {\n\tconst sessionDir = path.join(options.cwd, \".session\");\n\n\tif (options.dryRun) {\n\t\tif (!fs.existsSync(sessionDir)) {\n\t\t\tdryRunMkdir(sessionDir, options.cwd);\n\t\t}\n\t} else {\n\t\tfs.mkdirSync(sessionDir, { recursive: true });\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", options.cwd);\n}\n\n/**\n * Register the `init` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerInitCommand(program: Command): void {\n\tconst cmd = program\n\t\t.command(\"init\")\n\t\t.description(\"Initialize dev-session in the current project\")\n\t\t.option(\"--team\", \"Enable team mode (auto-applies .gitignore + .gitattributes)\", false)\n\t\t.option(\n\t\t\t\"--max-files <n>\",\n\t\t\t\"Cap the number of files indexed (useful for large repos)\",\n\t\t\tundefined,\n\t\t);\n\n\tcmd.action(async () => {\n\t\tconst globalOpts = program.opts<{\n\t\t\tcwd: string;\n\t\t\tyes: boolean;\n\t\t\tdryRun: boolean;\n\t\t\tverbose: boolean;\n\t\t\tstrict: boolean;\n\t\t\tadapter?: string;\n\t\t}>();\n\n\t\tconst cmdOpts = cmd.opts<{ team: boolean; maxFiles?: string }>();\n\t\tconst maxFiles =\n\t\t\tcmdOpts.maxFiles !== undefined ? Number.parseInt(cmdOpts.maxFiles, 10) : undefined;\n\n\t\tconst initOptions: InitOptions = {\n\t\t\tcwd: globalOpts.cwd,\n\t\t\tyes: globalOpts.yes,\n\t\t\tdryRun: globalOpts.dryRun,\n\t\t\tverbose: globalOpts.verbose,\n\t\t\tstrict: globalOpts.strict,\n\t\t\t...(globalOpts.adapter !== undefined ? { adapter: globalOpts.adapter } : {}),\n\t\t\tteamMode: cmdOpts.team,\n\t\t\t...(maxFiles !== undefined && !Number.isNaN(maxFiles) ? { maxFiles } : {}),\n\t\t};\n\n\t\ttry {\n\t\t\tawait runInit(initOptions);\n\t\t} catch (error: unknown) {\n\t\t\thandleError(error);\n\t\t}\n\t});\n}\n","/**\n * `dev-session migrate` command.\n *\n * Detects monorepo workspace configuration (pnpm-workspace.yaml, nx.json,\n * turbo.json, package.json workspaces) and offers to initialize\n * dev-session in each workspace package that does not already have a\n * `.session/` directory.\n *\n * Business logic (MonorepoDetector) lives in @dev-session/core.\n * This module handles prompts, formatting, and orchestration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { cancel, intro, isCancel, log, multiselect, outro, spinner } from \"@clack/prompts\";\nimport type { WorkspacePackage } from \"@dev-session/core\";\nimport { MonorepoDetector } from \"@dev-session/core\";\nimport type { Command } from \"commander\";\nimport { handleError } from \"../utils/error-handler.js\";\nimport type { InitOptions } from \"./init.js\";\nimport { runInit } from \"./init.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options for the migrate command. */\nexport interface MigrateOptions {\n\t/** Working directory (project root). */\n\treadonly cwd: string;\n\t/** Skip all prompts and init all packages. */\n\treadonly yes: boolean;\n\t/** Log writes without touching the filesystem. */\n\treadonly dryRun: boolean;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n\t/** Enable strict mode. */\n\treadonly strict: boolean;\n\t/** Explicit adapter override. */\n\treadonly adapter?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Command implementation\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the migrate command.\n *\n * @param options - Resolved CLI options.\n * @throws {CliError} if detection or init fails.\n */\nexport async function runMigrate(options: MigrateOptions): Promise<void> {\n\tintro(\"dev-session migrate\");\n\n\tconst s = spinner();\n\n\t// --- 1. Detect monorepo ---\n\ts.start(\"Detecting monorepo workspace...\");\n\tconst info = MonorepoDetector.detect(options.cwd);\n\ts.stop(info.isMonorepo ? `Detected ${info.type} workspace.` : \"No monorepo workspace detected.\");\n\n\tif (!info.isMonorepo || info.packages.length === 0) {\n\t\tlog.warn(\n\t\t\t\"No workspace packages found. Run `dev-session init` directly in the package directories.\",\n\t\t);\n\t\toutro(\"Nothing to migrate.\");\n\t\treturn;\n\t}\n\n\tlog.info(\n\t\t`Found ${info.packages.length} workspace package${info.packages.length === 1 ? \"\" : \"s\"}:`,\n\t);\n\tfor (const pkg of info.packages) {\n\t\tconst label = pkg.name ?? pkg.relativePath;\n\t\tconst status = packageHasSession(pkg.absolutePath) ? \" (already initialized)\" : \"\";\n\t\tlog.message(` ${label}${status}`);\n\t}\n\n\t// --- 2. Filter to packages that need init ---\n\tconst needsInit = info.packages.filter((p) => !packageHasSession(p.absolutePath));\n\n\tif (needsInit.length === 0) {\n\t\tlog.success(\"All packages already have dev-session initialized.\");\n\t\toutro(\"Nothing to do.\");\n\t\treturn;\n\t}\n\n\t// --- 3. Select packages to initialize ---\n\tlet selected: readonly WorkspacePackage[];\n\n\tif (options.yes) {\n\t\tselected = needsInit;\n\t\tlog.info(\n\t\t\t`Initializing all ${needsInit.length} package${needsInit.length === 1 ? \"\" : \"s\"} (--yes mode).`,\n\t\t);\n\t} else {\n\t\tconst choices = needsInit.map((pkg) => ({\n\t\t\tvalue: pkg.relativePath,\n\t\t\tlabel: pkg.name ?? pkg.relativePath,\n\t\t\thint: pkg.relativePath,\n\t\t}));\n\n\t\tconst result = await multiselect({\n\t\t\tmessage: \"Select packages to initialize:\",\n\t\t\toptions: choices,\n\t\t\trequired: false,\n\t\t});\n\n\t\tif (isCancel(result) || !Array.isArray(result)) {\n\t\t\tcancel(\"Migration cancelled.\");\n\t\t\toutro(\"No changes made.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedPaths = new Set<string>(result);\n\t\tselected = needsInit.filter((p) => selectedPaths.has(p.relativePath));\n\t}\n\n\tif (selected.length === 0) {\n\t\toutro(\"No packages selected. Nothing to do.\");\n\t\treturn;\n\t}\n\n\t// --- 4. Init each selected package ---\n\tlet successCount = 0;\n\tlet failCount = 0;\n\n\tfor (const pkg of selected) {\n\t\tconst label = pkg.name ?? pkg.relativePath;\n\t\tlog.step(`Initializing ${label}...`);\n\n\t\tconst initOptions: InitOptions = {\n\t\t\tcwd: pkg.absolutePath,\n\t\t\tyes: options.yes,\n\t\t\tdryRun: options.dryRun,\n\t\t\tverbose: options.verbose,\n\t\t\tstrict: options.strict,\n\t\t\t...(options.adapter !== undefined ? { adapter: options.adapter } : {}),\n\t\t};\n\n\t\ttry {\n\t\t\tawait runInit(initOptions);\n\t\t\tsuccessCount++;\n\t\t} catch (error: unknown) {\n\t\t\tlog.error(`Failed to initialize ${label}: ${errorMessage(error)}`);\n\t\t\tfailCount++;\n\t\t}\n\t}\n\n\t// --- 5. Summary ---\n\tif (failCount === 0) {\n\t\toutro(\n\t\t\t`Migration complete. ${successCount} package${successCount === 1 ? \"\" : \"s\"} initialized.`,\n\t\t);\n\t} else {\n\t\toutro(`Migration done with errors. ${successCount} succeeded, ${failCount} failed.`);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Check whether a package directory already has a `.session/` directory.\n *\n * @param absolutePath - Absolute path to the package directory.\n * @returns true if `.session/` exists.\n */\nfunction packageHasSession(absolutePath: string): boolean {\n\treturn fs.existsSync(path.join(absolutePath, \".session\"));\n}\n\n/**\n * Extract a human-readable message from an unknown error.\n *\n * @param error - The caught error value.\n * @returns A string message.\n */\nfunction errorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\treturn error.message;\n\t}\n\treturn String(error);\n}\n\n// ---------------------------------------------------------------------------\n// Commander registration\n// ---------------------------------------------------------------------------\n\n/**\n * Register the `migrate` command on a Commander program.\n *\n * @param program - The root Commander program.\n */\nexport function registerMigrateCommand(program: Command): void {\n\tprogram\n\t\t.command(\"migrate\")\n\t\t.description(\"Initialize dev-session in monorepo workspace packages\")\n\t\t.action(async () => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tdryRun: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t\tstrict: boolean;\n\t\t\t\tadapter?: string;\n\t\t\t}>();\n\n\t\t\tconst migrateOptions: MigrateOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tyes: opts.yes,\n\t\t\t\tdryRun: opts.dryRun,\n\t\t\t\tverbose: opts.verbose,\n\t\t\t\tstrict: opts.strict,\n\t\t\t\t...(opts.adapter !== undefined ? { adapter: opts.adapter } : {}),\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runMigrate(migrateOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session prompt` command.\n *\n * Prints the contents of NEXT_PROMPT.md to stdout for piping or copying.\n * Supports a `--copy` flag that copies to the system clipboard using\n * platform-native commands (pbcopy on macOS, xclip/xsel on Linux,\n * clip.exe on Windows).\n *\n * @module\n */\n\nimport { execFile } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { log } from \"@clack/prompts\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { handleError } from \"../utils/error-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options passed from Commander to the prompt action. */\nexport interface PromptOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Copy prompt to system clipboard. */\n\treadonly copy: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the prompt command.\n *\n * @param options - Resolved CLI options\n * @returns The prompt content string\n * @throws CliError if no session or NEXT_PROMPT.md found\n */\nexport async function runPrompt(options: PromptOptions): Promise<string> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\tconst promptPath = path.join(sessionDir, \"NEXT_PROMPT.md\");\n\n\tif (!fs.existsSync(promptPath)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No NEXT_PROMPT.md found\",\n\t\t\tsuggestion: \"Run `dev-session init` or `dev-session update` to generate a prompt.\",\n\t\t});\n\t}\n\n\tconst content = fs.readFileSync(promptPath, \"utf-8\");\n\n\tif (options.copy) {\n\t\tconst copied = await copyToClipboard(content);\n\t\tif (copied) {\n\t\t\tlog.success(\"Copied to clipboard.\");\n\t\t} else {\n\t\t\tlog.warn(\"Could not copy to clipboard — printing to stdout instead.\");\n\t\t\tprocess.stdout.write(content);\n\t\t}\n\t} else {\n\t\tprocess.stdout.write(content);\n\t}\n\n\treturn content;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Copy text to the system clipboard using platform-native commands.\n *\n * @param text - The text to copy\n * @returns true if copied successfully, false otherwise\n */\nexport async function copyToClipboard(text: string): Promise<boolean> {\n\tconst platform = process.platform;\n\n\tlet cmd: string;\n\tlet args: readonly string[];\n\n\tif (platform === \"darwin\") {\n\t\tcmd = \"pbcopy\";\n\t\targs = [];\n\t} else if (platform === \"win32\") {\n\t\tcmd = \"clip\";\n\t\targs = [];\n\t} else {\n\t\t// Linux — try xclip first, then xsel\n\t\tcmd = \"xclip\";\n\t\targs = [\"-selection\", \"clipboard\"];\n\t}\n\n\ttry {\n\t\tconst child = execFile(cmd, args as string[]);\n\t\tif (child.stdin) {\n\t\t\tchild.stdin.write(text);\n\t\t\tchild.stdin.end();\n\t\t}\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolve();\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error(`${cmd} exited with code ${String(code)}`));\n\t\t\t\t}\n\t\t\t});\n\t\t\tchild.on(\"error\", reject);\n\t\t});\n\t\treturn true;\n\t} catch {\n\t\t// If xclip failed on Linux, try xsel\n\t\tif (platform === \"linux\" && cmd === \"xclip\") {\n\t\t\ttry {\n\t\t\t\tconst child = execFile(\"xsel\", [\"--clipboard\", \"--input\"]);\n\t\t\t\tif (child.stdin) {\n\t\t\t\t\tchild.stdin.write(text);\n\t\t\t\t\tchild.stdin.end();\n\t\t\t\t}\n\t\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\t\t\tif (code === 0) {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treject(new Error(`xsel exited with code ${String(code)}`));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tchild.on(\"error\", reject);\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws CliError if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n/**\n * Register the `prompt` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerPromptCommand(program: Command): void {\n\tprogram\n\t\t.command(\"prompt\")\n\t\t.description(\"Print NEXT_PROMPT.md to stdout (for piping or copying)\")\n\t\t.option(\"--copy\", \"Copy to system clipboard\", false)\n\t\t.action(async (cmdOptions: { copy?: boolean }) => {\n\t\t\tconst opts = program.opts<{ cwd: string }>();\n\n\t\t\tconst promptOptions: PromptOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tcopy: cmdOptions.copy ?? false,\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runPrompt(promptOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session status` command.\n *\n * Reads the session state, active plan chunk, and file index to display\n * a rich status overview: task completion percentage, context budget\n * breakdown, health warnings, and optional JSON output.\n *\n * Business logic lives in @dev-session/core — this module handles CLI\n * display formatting and Commander registration.\n *\n * @module\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { log } from \"@clack/prompts\";\nimport {\n\ttype ContextBudget,\n\tContextBudgetCalculator,\n\ttype FileIndexEntry,\n\tFileIndexManager,\n\tMAX_PROMPT_LINES,\n\tNextPromptWriter,\n\ttype PlanChunk,\n\tPlanChunkManager,\n\ttype SessionState,\n\tSessionStateManager,\n\ttype Task,\n\tTaskStatus,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { handleError } from \"../utils/error-handler.js\";\n\n/** Options passed from Commander to the status action. */\nexport interface StatusOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Output machine-readable JSON. */\n\treadonly json: boolean;\n\t/** Show verbose output. */\n\treadonly verbose: boolean;\n}\n\n/** JSON-serializable status output for --json flag. */\nexport interface StatusJson {\n\treadonly active_chunk: number;\n\treadonly chunk_title: string;\n\treadonly session_id: string;\n\treadonly last_updated: string;\n\treadonly tasks: {\n\t\treadonly total: number;\n\t\treadonly done: number;\n\t\treadonly in_progress: number;\n\t\treadonly todo: number;\n\t\treadonly percent_complete: number;\n\t};\n\treadonly files: {\n\t\treadonly always_include: number;\n\t\treadonly indexed: number;\n\t\treadonly context: number;\n\t};\n\treadonly budget: {\n\t\treadonly total_tokens: number;\n\t\treadonly budget_cap: number;\n\t\treadonly over_budget: boolean;\n\t\treadonly accurate: boolean;\n\t};\n\treadonly warnings: readonly string[];\n\treadonly days_since_last_session: number | null;\n}\n\n/**\n * Compute warnings for the current session state.\n *\n * @param state - The current session state\n * @param chunk - The active plan chunk\n * @param alwaysInclude - Always-include entries from the file index\n * @param promptValidation - Result of validating NEXT_PROMPT.md\n * @param budget - Computed context budget\n * @returns Array of warning strings\n */\nexport function computeWarnings(\n\t_state: SessionState,\n\tchunk: PlanChunk,\n\talwaysInclude: readonly FileIndexEntry[],\n\tpromptLineCount: number | undefined,\n\tbudget: ContextBudget,\n): readonly string[] {\n\tconst warnings: string[] = [];\n\n\tif (promptLineCount !== undefined && promptLineCount > MAX_PROMPT_LINES) {\n\t\twarnings.push(\n\t\t\t`NEXT_PROMPT.md has ${String(promptLineCount)} lines (max ${String(MAX_PROMPT_LINES)}) — consider regenerating`,\n\t\t);\n\t}\n\n\tif (alwaysInclude.length > 4) {\n\t\twarnings.push(\n\t\t\t`always-include list has ${String(alwaysInclude.length)} files — creep detected (recommend <= 4)`,\n\t\t);\n\t}\n\n\tif (budget.overBudget) {\n\t\twarnings.push(\n\t\t\t`Context budget exceeded: ~${String(budget.totalTokens)} / ${String(budget.budgetCap)} tokens — remove large files or split the chunk`,\n\t\t);\n\t}\n\n\t// Warn if all tasks are done but chunk hasn't been advanced\n\tconst allDone = chunk.tasks.length > 0 && chunk.tasks.every((t) => t.status === TaskStatus.DONE);\n\tif (allDone) {\n\t\twarnings.push(\n\t\t\t\"All tasks in active chunk are done — run `dev-session advance` to move to the next chunk\",\n\t\t);\n\t}\n\n\treturn warnings;\n}\n\n/**\n * Count days since the last session update.\n *\n * @param lastUpdated - ISO date string from SessionState\n * @returns Number of days, or null if the date is unparseable\n */\nexport function daysSinceLastSession(lastUpdated: string): number | null {\n\tconst date = new Date(lastUpdated);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn null;\n\t}\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\treturn Math.floor(diffMs / (1000 * 60 * 60 * 24));\n}\n\n/**\n * Count tasks by status.\n *\n * @param tasks - Array of tasks from state + chunk\n * @returns Counts per status category\n */\nexport function countTasks(tasks: readonly Task[]): {\n\ttotal: number;\n\tdone: number;\n\tinProgress: number;\n\ttodo: number;\n\tpercentComplete: number;\n} {\n\tlet done = 0;\n\tlet inProgress = 0;\n\tlet todo = 0;\n\n\tfor (const task of tasks) {\n\t\tswitch (task.status) {\n\t\t\tcase TaskStatus.DONE:\n\t\t\t\tdone++;\n\t\t\t\tbreak;\n\t\t\tcase TaskStatus.IN_PROGRESS:\n\t\t\t\tinProgress++;\n\t\t\t\tbreak;\n\t\t\tcase TaskStatus.TODO:\n\t\t\t\ttodo++;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst total = tasks.length;\n\tconst percentComplete = total > 0 ? Math.round((done / total) * 100) : 0;\n\n\treturn { total, done, inProgress, todo, percentComplete };\n}\n\n/**\n * Read NEXT_PROMPT.md line count, or undefined if the file doesn't exist.\n *\n * @param sessionDir - Validated path to .session/\n * @returns Line count or undefined\n */\nfunction readPromptLineCount(sessionDir: ValidatedPath): number | undefined {\n\tconst promptPath = path.join(sessionDir, \"NEXT_PROMPT.md\");\n\ttry {\n\t\tconst content = fs.readFileSync(promptPath, \"utf-8\");\n\t\tconst validation = NextPromptWriter.validate(content);\n\t\treturn validation.lineCount;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Build the full StatusJson object.\n *\n * @param state - Session state\n * @param chunk - Active plan chunk\n * @param allEntries - All file index entries\n * @param alwaysInclude - Always-include entries\n * @param chunkFiles - Files for the active chunk\n * @param budget - Context budget\n * @param warnings - Computed warnings\n * @returns StatusJson\n */\nexport function buildStatusJson(\n\tstate: SessionState,\n\tchunk: PlanChunk,\n\tallEntries: readonly FileIndexEntry[],\n\talwaysInclude: readonly FileIndexEntry[],\n\tchunkFiles: readonly FileIndexEntry[],\n\tbudget: ContextBudget,\n\twarnings: readonly string[],\n): StatusJson {\n\tconst taskCounts = countTasks(chunk.tasks);\n\n\treturn {\n\t\tactive_chunk: state.active_chunk,\n\t\tchunk_title: chunk.title,\n\t\tsession_id: state.session_id,\n\t\tlast_updated: state.last_updated,\n\t\ttasks: {\n\t\t\ttotal: taskCounts.total,\n\t\t\tdone: taskCounts.done,\n\t\t\tin_progress: taskCounts.inProgress,\n\t\t\ttodo: taskCounts.todo,\n\t\t\tpercent_complete: taskCounts.percentComplete,\n\t\t},\n\t\tfiles: {\n\t\t\talways_include: alwaysInclude.length,\n\t\t\tindexed: allEntries.length,\n\t\t\tcontext: chunkFiles.length,\n\t\t},\n\t\tbudget: {\n\t\t\ttotal_tokens: budget.totalTokens,\n\t\t\tbudget_cap: budget.budgetCap,\n\t\t\tover_budget: budget.overBudget,\n\t\t\taccurate: budget.accurate,\n\t\t},\n\t\twarnings,\n\t\tdays_since_last_session: daysSinceLastSession(state.last_updated),\n\t};\n}\n\n/**\n * Display human-readable status output.\n *\n * @param status - The computed status JSON\n * @param budget - The full context budget (for formatSummary)\n * @param verbose - Whether to show detailed output\n */\nexport function displayStatus(status: StatusJson, budget: ContextBudget, verbose: boolean): void {\n\tlog.info(`Active chunk: ${String(status.active_chunk)} — ${status.chunk_title}`);\n\tlog.info(`Session: ${status.session_id}`);\n\tlog.info(`Last updated: ${status.last_updated}`);\n\n\tconst days = status.days_since_last_session;\n\tif (days !== null) {\n\t\tconst label = days === 0 ? \"today\" : days === 1 ? \"1 day ago\" : `${String(days)} days ago`;\n\t\tlog.info(`Last session: ${label}`);\n\t}\n\n\t// Task completion\n\tconst bar = renderProgressBar(status.tasks.percent_complete, 20);\n\tlog.info(\n\t\t`Tasks: ${bar} ${String(status.tasks.percent_complete)}% (${String(status.tasks.done)}/${String(status.tasks.total)} done)`,\n\t);\n\n\tif (verbose) {\n\t\tif (status.tasks.in_progress > 0) {\n\t\t\tlog.info(` In progress: ${String(status.tasks.in_progress)}`);\n\t\t}\n\t\tif (status.tasks.todo > 0) {\n\t\t\tlog.info(` Todo: ${String(status.tasks.todo)}`);\n\t\t}\n\t}\n\n\t// Files\n\tlog.info(\n\t\t`Files: ${String(status.files.context)} in context, ${String(status.files.always_include)} always-include, ${String(status.files.indexed)} indexed`,\n\t);\n\n\t// Budget\n\tlog.info(ContextBudgetCalculator.formatSummary(budget));\n\n\t// Warnings\n\tfor (const warning of status.warnings) {\n\t\tlog.warn(warning);\n\t}\n}\n\n/**\n * Render a simple ASCII progress bar.\n *\n * @param percent - Completion percentage (0-100)\n * @param width - Bar width in characters\n * @returns Progress bar string like \"[=========> ]\"\n */\nexport function renderProgressBar(percent: number, width: number): string {\n\tconst filled = Math.round((percent / 100) * width);\n\tconst empty = width - filled;\n\tconst bar = \"=\".repeat(Math.max(0, filled - 1));\n\tconst tip = filled > 0 ? \">\" : \"\";\n\tconst space = \" \".repeat(empty);\n\treturn `[${bar}${tip}${space}]`;\n}\n\n/**\n * Execute the status command.\n *\n * @param options - Resolved CLI options\n * @throws CliError if no session is found\n */\nexport async function runStatus(options: StatusOptions): Promise<void> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\t// Load state + chunk + file index\n\tconst state = SessionStateManager.load(sessionDir);\n\tconst chunk = PlanChunkManager.loadActive(sessionDir, state);\n\tconst allEntries = FileIndexManager.load(sessionDir);\n\tconst alwaysInclude = FileIndexManager.alwaysInclude(allEntries);\n\tconst chunkFiles = FileIndexManager.queryByChunk(allEntries, state.active_chunk);\n\n\t// Compute context budget\n\tconst budget = ContextBudgetCalculator.estimate(state, chunk, chunkFiles, alwaysInclude);\n\n\t// Check NEXT_PROMPT.md health\n\tconst promptLineCount = readPromptLineCount(sessionDir);\n\n\t// Compute warnings\n\tconst warnings = computeWarnings(state, chunk, alwaysInclude, promptLineCount, budget);\n\n\t// Build status object\n\tconst status = buildStatusJson(\n\t\tstate,\n\t\tchunk,\n\t\tallEntries,\n\t\talwaysInclude,\n\t\tchunkFiles,\n\t\tbudget,\n\t\twarnings,\n\t);\n\n\tif (options.json) {\n\t\t// Machine-readable output — no ANSI, just JSON to stdout\n\t\tprocess.stdout.write(`${JSON.stringify(status, null, 2)}\\n`);\n\t\treturn;\n\t}\n\n\tdisplayStatus(status, budget, options.verbose);\n}\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws CliError if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n/**\n * Register the `status` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerStatusCommand(program: Command): void {\n\tprogram\n\t\t.command(\"status\")\n\t\t.description(\"Show session status: task progress, context budget, and health warnings\")\n\t\t.option(\"--json\", \"Output machine-readable JSON\", false)\n\t\t.action(async (_cmdOptions: { json?: boolean }) => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tverbose: boolean;\n\t\t\t}>();\n\n\t\t\tconst statusOptions: StatusOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tjson: _cmdOptions.json ?? false,\n\t\t\t\tverbose: opts.verbose,\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runStatus(statusOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * `dev-session update` command.\n *\n * Interactive task marking, note adding, \"last worked\" file updates,\n * prompt regeneration, and secret scanning. In `--yes` mode, only\n * auto-detectable updates are applied (git status for last-worked files).\n *\n * Business logic lives in @dev-session/core — this module handles CLI\n * prompts, formatting, and file write orchestration.\n *\n * @module\n */\n\nimport { execFile } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { cancel, isCancel, log, multiselect, text } from \"@clack/prompts\";\nimport {\n\ttype BootstrapContext,\n\tContextBudgetCalculator,\n\tFileIndexManager,\n\tNextPromptWriter,\n\ttype PlanChunk,\n\tPlanChunkManager,\n\tSessionStateManager,\n\ttype Task,\n\tTaskStatus,\n} from \"@dev-session/core\";\nimport { CliError, PathValidator, SecretScanner, type ValidatedPath } from \"@dev-session/security\";\nimport type { Command } from \"commander\";\nimport { createAdapterReadFile } from \"../utils/adapter-io.js\";\nimport { handleError } from \"../utils/error-handler.js\";\nimport { resolveAdapter } from \"../utils/resolve-adapter.js\";\n\nconst execFileAsync = promisify(execFile);\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Options passed from Commander to the update action. */\nexport interface UpdateOptions {\n\t/** Working directory override. */\n\treadonly cwd: string;\n\t/** Skip prompts and apply auto-detectable updates only. */\n\treadonly yes: boolean;\n\t/** Show detailed output. */\n\treadonly verbose: boolean;\n\t/** Enable strict mode (block on secret detection). */\n\treadonly strict: boolean;\n\t/** Explicit adapter override (from --adapter flag). */\n\treadonly adapter?: string;\n}\n\n/** Result returned after an update run. */\nexport interface UpdateResult {\n\t/** Number of tasks whose status was changed. */\n\treadonly tasksUpdated: number;\n\t/** Number of notes added. */\n\treadonly notesAdded: number;\n\t/** Whether the last-worked file list was changed. */\n\treadonly lastWorkedUpdated: boolean;\n\t/** Whether NEXT_PROMPT.md was regenerated. */\n\treadonly promptRegenerated: boolean;\n\t/** Number of secret scan warnings found. */\n\treadonly secretWarnings: number;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Execute the update command.\n *\n * @param options - Resolved CLI options\n * @returns Update result summary\n * @throws CliError if no session is found or user cancels\n */\nexport async function runUpdate(options: UpdateOptions): Promise<UpdateResult> {\n\tconst sessionDir = resolveSessionDir(options.cwd);\n\n\t// Load current state\n\tlet state = SessionStateManager.load(sessionDir);\n\tconst chunk = PlanChunkManager.loadActive(sessionDir, state);\n\tconst allEntries = FileIndexManager.load(sessionDir);\n\n\tlet tasksUpdated = 0;\n\tlet notesAdded = 0;\n\tlet lastWorkedUpdated = false;\n\n\t// -----------------------------------------------------------------------\n\t// Step 1: Interactive task marking\n\t// -----------------------------------------------------------------------\n\tif (!options.yes && chunk.tasks.length > 0) {\n\t\tconst taskResult = await promptTaskUpdates(chunk.tasks);\n\t\tif (taskResult.changed) {\n\t\t\t// Apply changes to state\n\t\t\tfor (const update of taskResult.updates) {\n\t\t\t\tif (update.newStatus === TaskStatus.DONE) {\n\t\t\t\t\tstate = SessionStateManager.markTaskDone(state, update.text);\n\t\t\t\t} else if (update.newStatus === TaskStatus.IN_PROGRESS) {\n\t\t\t\t\tstate = SessionStateManager.markTaskInProgress(state, update.text);\n\t\t\t\t}\n\t\t\t\ttasksUpdated++;\n\t\t\t}\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 2: Add session notes\n\t// -----------------------------------------------------------------------\n\tif (!options.yes) {\n\t\tconst noteResult = await promptAddNote();\n\t\tif (noteResult !== undefined) {\n\t\t\tstate = SessionStateManager.addNote(state, noteResult);\n\t\t\tnotesAdded++;\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 3: Update \"last worked\" files (auto-suggest from git status)\n\t// -----------------------------------------------------------------------\n\tconst gitFiles = await getGitModifiedFiles(options.cwd);\n\n\tif (gitFiles.length > 0) {\n\t\tlet selectedFiles: readonly string[];\n\n\t\tif (options.yes) {\n\t\t\tselectedFiles = gitFiles;\n\t\t} else {\n\t\t\tselectedFiles = await promptLastWorkedFiles(gitFiles, state.last_worked_files);\n\t\t}\n\n\t\tif (selectedFiles.length > 0) {\n\t\t\tstate = SessionStateManager.updateLastWorked(state, selectedFiles);\n\t\t\tlastWorkedUpdated = true;\n\t\t}\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 4: Save state\n\t// -----------------------------------------------------------------------\n\tSessionStateManager.save(sessionDir, state);\n\n\tif (options.verbose) {\n\t\tlog.info(`Tasks updated: ${String(tasksUpdated)}`);\n\t\tlog.info(`Notes added: ${String(notesAdded)}`);\n\t\tlog.info(`Last-worked files updated: ${lastWorkedUpdated ? \"yes\" : \"no\"}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 5: Regenerate NEXT_PROMPT.md\n\t// -----------------------------------------------------------------------\n\tconst alwaysInclude = FileIndexManager.alwaysInclude(allEntries);\n\tconst chunkFiles = FileIndexManager.queryByChunk(allEntries, state.active_chunk);\n\tconst allChunks = PlanChunkManager.loadAll(sessionDir);\n\n\tconst budget = ContextBudgetCalculator.estimate(state, chunk, chunkFiles, alwaysInclude);\n\n\tconst excludePatterns = buildExcludePatterns(state.active_chunk, allChunks);\n\n\tconst projectName = detectProjectName(options.cwd);\n\n\t// Resolve adapter (flag → detect → fallback)\n\tconst { adapter, tool: detectedTool, source } = resolveAdapter(options.cwd, options.adapter);\n\n\tif (options.verbose) {\n\t\tlog.info(`Using ${adapter.config.display_name} adapter (${source}: ${detectedTool})`);\n\t}\n\n\t// Run transformState hook if the adapter provides one\n\tif (adapter.transformState) {\n\t\tconst readFile = createAdapterReadFile(options.cwd);\n\t\tstate = adapter.transformState(state, {\n\t\t\tprojectRoot: options.cwd,\n\t\t\tsessionDir,\n\t\t\treadFile,\n\t\t});\n\t}\n\n\tconst bootstrapContext: BootstrapContext = {\n\t\tstate,\n\t\tchunk,\n\t\tchunkFiles,\n\t\talwaysIncludeFiles: alwaysInclude,\n\t\tbudget,\n\t\texcludePatterns,\n\t\tprojectName,\n\t};\n\n\tconst promptContent = NextPromptWriter.generateWithFormatter(adapter.formatter, bootstrapContext);\n\n\t// -----------------------------------------------------------------------\n\t// Step 6: Secret scan before writing\n\t// -----------------------------------------------------------------------\n\tlet secretWarnings = 0;\n\tsecretWarnings += scanContent(promptContent, \"NEXT_PROMPT.md\", options.verbose);\n\n\tif (secretWarnings > 0 && options.strict) {\n\t\tthrow new CliError({\n\t\t\tmessage: `Secret scan found ${String(secretWarnings)} issue${secretWarnings === 1 ? \"\" : \"s\"} — blocking write in strict mode`,\n\t\t\tsuggestion: \"Remove secrets from session state or notes, then retry.\",\n\t\t});\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Step 7: Write regenerated prompt\n\t// -----------------------------------------------------------------------\n\tNextPromptWriter.write(sessionDir, promptContent);\n\n\tlog.info(ContextBudgetCalculator.formatSummary(budget));\n\n\tif (!options.yes) {\n\t\tlog.success(\"Session updated and NEXT_PROMPT.md regenerated.\");\n\t}\n\n\treturn {\n\t\ttasksUpdated,\n\t\tnotesAdded,\n\t\tlastWorkedUpdated,\n\t\tpromptRegenerated: true,\n\t\tsecretWarnings,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Interactive prompts\n// ---------------------------------------------------------------------------\n\n/** A single task status change. */\ninterface TaskUpdate {\n\treadonly text: string;\n\treadonly newStatus: string;\n}\n\n/** Result from the task update prompt. */\ninterface TaskUpdateResult {\n\treadonly changed: boolean;\n\treadonly updates: readonly TaskUpdate[];\n}\n\n/**\n * Prompt the user to mark tasks as done.\n *\n * @param tasks - Current task list from the chunk\n * @returns Task update result\n */\nasync function promptTaskUpdates(tasks: readonly Task[]): Promise<TaskUpdateResult> {\n\tconst pendingTasks = tasks.filter((t) => t.status !== TaskStatus.DONE);\n\n\tif (pendingTasks.length === 0) {\n\t\tlog.info(\"All tasks are already done.\");\n\t\treturn { changed: false, updates: [] };\n\t}\n\n\t// Ask which tasks to mark done\n\tconst doneResult = await multiselect({\n\t\tmessage: \"Mark tasks as done (space to toggle, enter to confirm):\",\n\t\toptions: pendingTasks.map((t) => ({\n\t\t\tvalue: t.text,\n\t\t\tlabel: `[${t.status === TaskStatus.IN_PROGRESS ? \"~\" : \" \"}] ${t.text}`,\n\t\t})),\n\t\trequired: false,\n\t});\n\n\tif (isCancel(doneResult)) {\n\t\tcancel(\"Update cancelled.\");\n\t\tthrow new CliError({ message: \"Update cancelled by user.\" });\n\t}\n\n\tconst doneTexts = new Set(doneResult as string[]);\n\tconst updates: TaskUpdate[] = [];\n\n\tfor (const taskText of doneTexts) {\n\t\tupdates.push({ text: taskText, newStatus: TaskStatus.DONE });\n\t}\n\n\t// For remaining pending tasks, ask if any should be marked in-progress\n\tconst remainingPending = pendingTasks.filter(\n\t\t(t) => !doneTexts.has(t.text) && t.status === TaskStatus.TODO,\n\t);\n\n\tif (remainingPending.length > 0) {\n\t\tconst inProgressResult = await multiselect({\n\t\t\tmessage: \"Mark tasks as in-progress (optional):\",\n\t\t\toptions: remainingPending.map((t) => ({\n\t\t\t\tvalue: t.text,\n\t\t\t\tlabel: t.text,\n\t\t\t})),\n\t\t\trequired: false,\n\t\t});\n\n\t\tif (!isCancel(inProgressResult)) {\n\t\t\tfor (const taskText of inProgressResult as string[]) {\n\t\t\t\tupdates.push({ text: taskText, newStatus: TaskStatus.IN_PROGRESS });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { changed: updates.length > 0, updates };\n}\n\n/**\n * Prompt the user to add a session note.\n *\n * @returns The note text, or undefined if skipped\n */\nasync function promptAddNote(): Promise<string | undefined> {\n\tconst noteResult = await text({\n\t\tmessage: \"Add a session note (leave empty to skip):\",\n\t\tinitialValue: \"\",\n\t});\n\n\tif (isCancel(noteResult)) {\n\t\treturn undefined;\n\t}\n\n\tconst note = (noteResult as string).trim();\n\treturn note.length > 0 ? note : undefined;\n}\n\n/**\n * Prompt the user to select which git-modified files to record.\n *\n * @param gitFiles - Files modified according to git status\n * @param currentFiles - Currently tracked last-worked files\n * @returns Selected file paths\n */\nasync function promptLastWorkedFiles(\n\tgitFiles: readonly string[],\n\tcurrentFiles: readonly string[],\n): Promise<readonly string[]> {\n\tconst currentSet = new Set(currentFiles);\n\n\tconst result = await multiselect({\n\t\tmessage: \"Update last-worked files from git changes:\",\n\t\toptions: gitFiles.map((f) => {\n\t\t\tconst opt: { value: string; label: string; hint?: string } = {\n\t\t\t\tvalue: f,\n\t\t\t\tlabel: f,\n\t\t\t};\n\t\t\tif (currentSet.has(f)) {\n\t\t\t\topt.hint = \"already tracked\";\n\t\t\t}\n\t\t\treturn opt;\n\t\t}),\n\t\trequired: false,\n\t\tinitialValues: gitFiles.filter((f) => currentSet.has(f)),\n\t});\n\n\tif (isCancel(result)) {\n\t\treturn currentFiles;\n\t}\n\n\treturn result as string[];\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Get modified files from git status.\n *\n * @param cwd - Working directory\n * @returns Array of relative file paths\n */\nexport async function getGitModifiedFiles(cwd: string): Promise<readonly string[]> {\n\ttry {\n\t\tconst { stdout } = await execFileAsync(\"git\", [\"status\", \"--porcelain\", \"--short\"], { cwd });\n\n\t\treturn stdout\n\t\t\t.split(\"\\n\")\n\t\t\t.filter((line) => line.length > 0)\n\t\t\t.map((line) => line.slice(3).trim())\n\t\t\t.filter((f) => f.length > 0);\n\t} catch {\n\t\t// Not a git repo or git not available — return empty\n\t\treturn [];\n\t}\n}\n\n/**\n * Detect project name from package.json.\n *\n * @param cwd - Working directory\n * @returns Project name or directory basename\n */\nfunction detectProjectName(cwd: string): string {\n\ttry {\n\t\tconst pkgPath = path.join(cwd, \"package.json\");\n\t\tconst raw = fs.readFileSync(pkgPath, \"utf-8\");\n\t\tconst pkg: unknown = JSON.parse(raw);\n\t\tif (\n\t\t\ttypeof pkg === \"object\" &&\n\t\t\tpkg !== null &&\n\t\t\t\"name\" in pkg &&\n\t\t\ttypeof (pkg as Record<string, unknown>).name === \"string\"\n\t\t) {\n\t\t\treturn (pkg as Record<string, unknown>).name as string;\n\t\t}\n\t} catch {\n\t\t// No package.json or invalid JSON\n\t}\n\treturn path.basename(cwd);\n}\n\n/**\n * Build exclude patterns for NEXT_PROMPT generation.\n *\n * @param activeChunkId - The currently active chunk ID\n * @param chunks - All available chunks\n * @returns Array of exclude pattern strings\n */\nfunction buildExcludePatterns(\n\tactiveChunkId: number,\n\tchunks: readonly PlanChunk[],\n): readonly string[] {\n\tconst patterns: string[] = [\"**/__tests__/**\", \"**/dist/**\", \"**/node_modules/**\"];\n\n\tfor (const chunk of chunks) {\n\t\tif (chunk.chunk_id !== activeChunkId) {\n\t\t\tpatterns.push(`.session/PLAN_${String(chunk.chunk_id)}.md`);\n\t\t}\n\t}\n\n\treturn patterns;\n}\n\n/**\n * Scan content for secrets and log warnings.\n *\n * @param content - The content to scan\n * @param filename - The filename (for logging)\n * @param verbose - Whether to log individual findings\n * @returns Number of warnings found\n */\nfunction scanContent(content: string, filename: string, verbose: boolean): number {\n\tconst results = SecretScanner.scan(content);\n\tif (results.length > 0) {\n\t\tlog.warn(\n\t\t\t`Secret scan found ${String(results.length)} issue${results.length === 1 ? \"\" : \"s\"} in ${filename}`,\n\t\t);\n\t\tif (verbose) {\n\t\t\tfor (const r of results) {\n\t\t\t\tlog.message(` Line ${String(r.line)}: ${r.pattern} (${r.redacted})`);\n\t\t\t}\n\t\t}\n\t}\n\treturn results.length;\n}\n\n/**\n * Resolve and validate the .session/ directory path.\n *\n * @param cwd - Working directory\n * @returns ValidatedPath to .session/\n * @throws CliError if .session/ does not exist\n */\nfunction resolveSessionDir(cwd: string): ValidatedPath {\n\tconst sessionDir = path.join(cwd, \".session\");\n\n\tif (!fs.existsSync(sessionDir)) {\n\t\tthrow new CliError({\n\t\t\tmessage: \"No .session/ directory found\",\n\t\t\tsuggestion: \"Run `dev-session init` first to initialize the project.\",\n\t\t});\n\t}\n\n\treturn PathValidator.safeResolvePath(\".session\", cwd);\n}\n\n/**\n * Register the `update` command on a Commander program.\n *\n * @param program - The root Commander program\n */\nexport function registerUpdateCommand(program: Command): void {\n\tprogram\n\t\t.command(\"update\")\n\t\t.description(\"Interactively update task status, add notes, and regenerate the prompt\")\n\t\t.action(async () => {\n\t\t\tconst opts = program.opts<{\n\t\t\t\tcwd: string;\n\t\t\t\tyes: boolean;\n\t\t\t\tverbose: boolean;\n\t\t\t\tstrict: boolean;\n\t\t\t\tadapter?: string;\n\t\t\t}>();\n\n\t\t\tconst updateOptions: UpdateOptions = {\n\t\t\t\tcwd: opts.cwd,\n\t\t\t\tyes: opts.yes,\n\t\t\t\tverbose: opts.verbose,\n\t\t\t\tstrict: opts.strict,\n\t\t\t\t...(opts.adapter !== undefined ? { adapter: opts.adapter } : {}),\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait runUpdate(updateOptions);\n\t\t\t} catch (error: unknown) {\n\t\t\t\thandleError(error);\n\t\t\t}\n\t\t});\n}\n","/**\n * Signal handler for graceful cleanup on SIGINT/SIGTERM.\n *\n * Registers cleanup callbacks that run when the process receives an\n * interrupt or termination signal. Uses a re-entrancy guard to prevent\n * double-cleanup. Cleans up partial `.tmp` files from AtomicWriter.\n *\n * @module\n */\n\nimport { log } from \"@clack/prompts\";\n\n/** Cleanup callback type. */\ntype CleanupFn = () => void | Promise<void>;\n\n/** Registered cleanup functions. */\nconst cleanupFns: CleanupFn[] = [];\n\n/** Re-entrancy guard — prevents double cleanup. */\nlet isCleaningUp = false;\n\n/**\n * Register a cleanup function to run on signal.\n *\n * @param fn - Synchronous or async cleanup callback\n * @returns A dispose function that unregisters the callback\n */\nexport function onCleanup(fn: CleanupFn): () => void {\n\tcleanupFns.push(fn);\n\treturn () => {\n\t\tconst idx = cleanupFns.indexOf(fn);\n\t\tif (idx !== -1) {\n\t\t\tcleanupFns.splice(idx, 1);\n\t\t}\n\t};\n}\n\n/**\n * Run all registered cleanup functions.\n * Protected by a re-entrancy guard — safe to call multiple times.\n *\n * @returns Promise that resolves when all cleanup is done\n */\nasync function runCleanup(): Promise<void> {\n\tif (isCleaningUp) {\n\t\treturn;\n\t}\n\tisCleaningUp = true;\n\n\tfor (const fn of cleanupFns) {\n\t\ttry {\n\t\t\tawait fn();\n\t\t} catch {\n\t\t\t// Swallow cleanup errors — we're shutting down\n\t\t}\n\t}\n}\n\n/**\n * Install SIGINT and SIGTERM handlers.\n *\n * Should be called once at CLI startup. Handlers run cleanup functions,\n * print a cancellation message, and exit with code 130 (SIGINT) or\n * 143 (SIGTERM).\n *\n * @returns A dispose function that removes the handlers\n */\nexport function installSignalHandlers(): () => void {\n\tconst handleSignal = (signal: \"SIGINT\" | \"SIGTERM\"): void => {\n\t\tconst code = signal === \"SIGINT\" ? 130 : 143;\n\n\t\tvoid runCleanup().then(() => {\n\t\t\tlog.warn(`\\nReceived ${signal}. Cleaning up...`);\n\t\t\tprocess.exit(code);\n\t\t});\n\t};\n\n\tconst onSigint = (): void => handleSignal(\"SIGINT\");\n\tconst onSigterm = (): void => handleSignal(\"SIGTERM\");\n\n\tprocess.on(\"SIGINT\", onSigint);\n\tprocess.on(\"SIGTERM\", onSigterm);\n\n\treturn () => {\n\t\tprocess.off(\"SIGINT\", onSigint);\n\t\tprocess.off(\"SIGTERM\", onSigterm);\n\t};\n}\n\n/**\n * Reset the signal handler state. For testing only.\n *\n * @internal\n */\nexport function _resetForTesting(): void {\n\tcleanupFns.length = 0;\n\tisCleaningUp = false;\n}\n","/**\n * Commander program setup for the dev-session CLI.\n *\n * Defines the root program with global options and registers all\n * subcommands. This module owns the Commander instance — `index.ts`\n * imports and runs it.\n *\n * @module\n */\n\nimport { Command } from \"commander\";\nimport { registerAdvanceCommand } from \"./commands/advance.js\";\nimport { registerExportCommand } from \"./commands/export.js\";\nimport { registerHealthCommand } from \"./commands/health.js\";\nimport { registerImportCommand } from \"./commands/import.js\";\nimport { registerIndexCommand } from \"./commands/index-cmd.js\";\nimport { registerInitCommand } from \"./commands/init.js\";\nimport { registerMigrateCommand } from \"./commands/migrate.js\";\nimport { registerPromptCommand } from \"./commands/prompt.js\";\nimport { registerStatusCommand } from \"./commands/status.js\";\nimport { registerUpdateCommand } from \"./commands/update.js\";\nimport { handleError } from \"./utils/error-handler.js\";\nimport { installSignalHandlers } from \"./utils/signal-handler.js\";\n\n/**\n * Create and configure the Commander program.\n *\n * @returns The configured Commander program (not yet parsed)\n */\nexport function createProgram(): Command {\n\tconst program = new Command();\n\n\tprogram\n\t\t.name(\"dev-session\")\n\t\t.description(\"Self-managing context architecture for AI-assisted coding sessions\")\n\t\t.version(\"0.0.0\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-y, --yes\", \"Skip prompts and use defaults\", false)\n\t\t.option(\"--dry-run\", \"Show what would be written without writing\", false)\n\t\t.option(\"-v, --verbose\", \"Show detailed output\", false)\n\t\t.option(\"--strict\", \"Block on secret detection instead of warning\", false)\n\t\t.option(\"--adapter <name>\", \"Override adapter auto-detection (claude, opencode, cursor)\");\n\n\t// Use exitOverride so Commander throws instead of calling process.exit\n\t// directly — lets our global error handler manage exit codes.\n\tprogram.exitOverride();\n\n\t// Register subcommands\n\tregisterInitCommand(program);\n\tregisterMigrateCommand(program);\n\tregisterStatusCommand(program);\n\tregisterUpdateCommand(program);\n\tregisterAdvanceCommand(program);\n\tregisterPromptCommand(program);\n\tregisterIndexCommand(program);\n\tregisterHealthCommand(program);\n\tregisterImportCommand(program);\n\tregisterExportCommand(program);\n\n\treturn program;\n}\n\n/**\n * Parse arguments and run the CLI.\n *\n * Installs signal handlers, creates the program, parses argv,\n * and handles any uncaught errors.\n *\n * @param argv - Process arguments (defaults to process.argv)\n * @returns Promise that resolves when the command completes\n */\nexport async function run(argv?: readonly string[]): Promise<void> {\n\tconst removeHandlers = installSignalHandlers();\n\n\ttry {\n\t\tconst program = createProgram();\n\t\tawait program.parseAsync(argv as string[] | undefined);\n\t} catch (error: unknown) {\n\t\t// Commander's exitOverride throws CommanderError on --help / --version\n\t\t// with exitCode 0. Let those pass through cleanly.\n\t\tif (isCommanderExit(error, 0)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Commander parse errors (unknown option, missing arg) exit with code 1\n\t\tif (isCommanderExit(error)) {\n\t\t\t// Commander already printed the error message\n\t\t\tprocess.exit(1);\n\t\t\treturn;\n\t\t}\n\n\t\thandleError(error);\n\t} finally {\n\t\tremoveHandlers();\n\t}\n}\n\n/**\n * Check if an error is a Commander exit (thrown by exitOverride).\n *\n * @param error - The caught error\n * @param exitCode - Optional specific exit code to match\n * @returns true if the error is a Commander exit error\n */\nfunction isCommanderExit(error: unknown, exitCode?: number): boolean {\n\tif (!(error instanceof Error)) {\n\t\treturn false;\n\t}\n\t// Commander throws errors with name \"CommanderError\" when exitOverride is set\n\tif (error.name !== \"CommanderError\") {\n\t\treturn false;\n\t}\n\tif (exitCode !== undefined) {\n\t\treturn (error as Error & { exitCode?: number }).exitCode === exitCode;\n\t}\n\treturn true;\n}\n","/**\n * dev-session CLI\n *\n * Thin wrapper over @dev-session/core.\n * Parse args -> call core -> format output -> exit.\n *\n * @packageDocumentation\n */\n\nexport { createProgram, run } from \"./cli.js\";\nexport type { AdvanceOptions, AdvanceResult } from \"./commands/advance.js\";\nexport type { IndexAddOptions, IndexAuditOptions } from \"./commands/index-cmd.js\";\nexport type { InitOptions } from \"./commands/init.js\";\nexport type { PromptOptions } from \"./commands/prompt.js\";\nexport type { StatusJson, StatusOptions } from \"./commands/status.js\";\nexport type { UpdateOptions, UpdateResult } from \"./commands/update.js\";\nexport {\n\tdryRunGitignorePatch,\n\tdryRunMkdir,\n\tdryRunWrite,\n\thandleError,\n\tinstallSignalHandlers,\n\tonCleanup,\n} from \"./utils/index.js\";\n\n// Auto-run when executed directly\nconst isDirectRun = typeof process !== \"undefined\" && process.argv[1]?.includes(\"dev-session\");\nif (isDirectRun) {\n\tvoid import(\"./cli.js\").then(({ run: runCli }) => runCli());\n}\n","/**\n * CLI utility barrel export.\n *\n * @module\n */\n\nexport { createAdapterReadFile, createAdapterWriteFile } from \"./adapter-io.js\";\nexport { dryRunGitignorePatch, dryRunMkdir, dryRunWrite } from \"./dry-run.js\";\nexport { handleError } from \"./error-handler.js\";\nexport { resolveAdapter } from \"./resolve-adapter.js\";\nexport {\n\t_resetForTesting,\n\tinstallSignalHandlers,\n\tonCleanup,\n} from \"./signal-handler.js\";\n"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,aAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA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","names":["exports","module","exports","module","exports","module","isObject","extend","exports","module","extend","file","exports","module","isObject","extend","string","number","exports","module","formatError","exports","module","string","exports","module","map","exports","module","extend","exports","module","exports","module","exports","module","exports","module","exports","module","object","exports","module","object","exports","module","object","exports","module","object","exports","module","exports","module","exports","module","date","object","exports","module","exports","module","map","object","exports","module","object","exports","module","object","exports","module","object","exports","module","exports","module","object","_length","exports","module","map","string","object","exports","module","exports","module","parse","exports","module","exports","exports","module","exports","module","exports","module","file","matter","exports","module","file","sep","exports","module","file","exports","module","exports","module","fs","parse","matter","file","cached","exports","exports","process","_a","exports","module","fs","crypto","path","promisify","resolve","promise","error","file","matter","issue","path","writeFileAtomicCallback","initializer","_a","array","set","object","path","Class","_a","config","base64","base64url","hex","error","issue","path","_a","time","version","_a","inst","result","base64","r","_a","checks","checkResult","canary","result","_","url","isObject","allowsEval","results","map","left","right","keyResult","valueResult","output","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","number","error","text","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","meta","Class","_emoji","_undefined","_null","issue","codec","process","_a","meta","id","schema","registry","ctx","process","json","file","process","core_exports","_emoji","_null","_undefined","process","init_core","checks_exports","init_checks","init_core","date","datetime","duration","time","init_core","init_schemas","initializer","init_errors","init_core","issue","issues","parse","parseAsync","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","init_parse","init_core","init_errors","schemas_exports","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","cuid","cuid2","date","describe","e164","email","emoji","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","string","ulid","_undefined","uuid","_void","xid","_emoji","init_schemas","init_core","init_checks","init_parse","def","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","check","json","datetime","time","duration","issue","output","map","init_core","ZodFirstPartyTypeKind","path","zodSchema","objectSchema","version","init_checks","init_schemas","schemas_exports","checks_exports","bigint","boolean","date","number","string","init_core","init_schemas","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","core_exports","cuid","cuid2","date","decode","decodeAsync","describe","e164","email","emoji","encode","encodeAsync","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","parse","parseAsync","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","string","ulid","_undefined","uuid","_void","xid","init_core","init_schemas","init_checks","init_errors","init_parse","note","file","date","ParseError","readFileContent","FrontmatterParser","BYTES_PER_TOKEN","CliError","record","error","MAX_FILES_TO_SHOW","trimToMaxLines","fs","path","fs2","path2","z","AtomicWriter","fs","error","code","generateSessionSection","upsertSection","SECTION_START","SECTION_END","MAX_FILES_TO_SHOW","init_dist","note","formatBudgetLine","formatCompletedChunksSummary","formatChunkProgress","getPendingTasks","DEFAULT_MAX_NEXT_TASKS","DEFAULT_MAX_NOTES","trimToMaxLines","DEFAULT_MAX_PROMPT_LINES","init_dist","readFile","error","fs","path","import_prompts","init_dist","resolveSessionDir","note","error","fs","path","import_prompts","init_dist","resolveSessionDir","issue","error","fs","path","import_prompts","init_dist","resolveSessionDir","note","error","fs","path","import_prompts","init_dist","resolveSessionDir","confirm","error","fs","path","import_prompts","init_dist","relative","path","import_prompts","fs","path","init_dist","buildExcludePatterns","note","fs","path","import_prompts","init_dist","statSync","file","path","import_prompts","init_dist","path","import_prompts","init_dist","fs","path","import_prompts","init_dist","error","fs","path","import_prompts","init_dist","error","fs","path","import_prompts","init_dist","resolveSessionDir","text","resolve","error","fs","path","import_prompts","date","resolveSessionDir","error","fs","path","import_prompts","init_dist","resolveSessionDir","buildExcludePatterns","detectProjectName","readFile","scanContent","note","error","import_node_child_process","fs","path","import_prompts","init_dist","import_prompts","error"]}