kb-tool 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/parser.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-datetime.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/format-num.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-datetime-float.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-date.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-time.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/toml-parser.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-pretty-error.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-string.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-async.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-stream.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/stringify.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/toml.js","../../../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@3.14.2/node_modules/js-yaml/lib/js-yaml/common.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/exception.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/mark.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/str.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/seq.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/map.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/null.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/bool.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/int.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/float.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/json.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/core.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/merge.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/binary.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/omap.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/pairs.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/set.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/function.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/loader.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/dumper.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engines.js","../../../node_modules/.pnpm/strip-bom-string@1.0.0/node_modules/strip-bom-string/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/utils.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/defaults.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engine.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/stringify.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/excerpt.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/to-file.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/parse.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/index.js","../src/index.ts","../src/commands/init.ts","../../core/src/init.ts","../../core/src/config.ts","../../core/src/project.ts","../../core/src/db.ts","../../core/src/markdown.ts","../../core/src/indexer.ts","../../core/src/search.ts","../../core/src/source-reader.ts","../../core/src/llm.ts","../../core/src/ingest.ts","../../core/src/query.ts","../../core/src/lint.ts","../../core/src/log-parser.ts","../../core/src/index.ts","../src/commands/status.ts","../src/commands/index-cmd.ts","../src/commands/search.ts","../src/commands/ingest.ts","../src/commands/query.ts","../src/commands/log-cmd.ts","../src/commands/lint.ts","../src/commands/mcp.ts","../src/commands/agent-context.ts"],"sourcesContent":["'use strict'\nconst ParserEND = 0x110000\nclass ParserError extends Error {\n /* istanbul ignore next */\n constructor (msg, filename, linenumber) {\n super('[ParserError] ' + msg, filename, linenumber)\n this.name = 'ParserError'\n this.code = 'ParserError'\n if (Error.captureStackTrace) Error.captureStackTrace(this, ParserError)\n }\n}\nclass State {\n constructor (parser) {\n this.parser = parser\n this.buf = ''\n this.returned = null\n this.result = null\n this.resultTable = null\n this.resultArr = null\n }\n}\nclass Parser {\n constructor () {\n this.pos = 0\n this.col = 0\n this.line = 0\n this.obj = {}\n this.ctx = this.obj\n this.stack = []\n this._buf = ''\n this.char = null\n this.ii = 0\n this.state = new State(this.parseStart)\n }\n\n parse (str) {\n /* istanbul ignore next */\n if (str.length === 0 || str.length == null) return\n\n this._buf = String(str)\n this.ii = -1\n this.char = -1\n let getNext\n while (getNext === false || this.nextChar()) {\n getNext = this.runOne()\n }\n this._buf = null\n }\n nextChar () {\n if (this.char === 0x0A) {\n ++this.line\n this.col = -1\n }\n ++this.ii\n this.char = this._buf.codePointAt(this.ii)\n ++this.pos\n ++this.col\n return this.haveBuffer()\n }\n haveBuffer () {\n return this.ii < this._buf.length\n }\n runOne () {\n return this.state.parser.call(this, this.state.returned)\n }\n finish () {\n this.char = ParserEND\n let last\n do {\n last = this.state.parser\n this.runOne()\n } while (this.state.parser !== last)\n\n this.ctx = null\n this.state = null\n this._buf = null\n\n return this.obj\n }\n next (fn) {\n /* istanbul ignore next */\n if (typeof fn !== 'function') throw new ParserError('Tried to set state to non-existent state: ' + JSON.stringify(fn))\n this.state.parser = fn\n }\n goto (fn) {\n this.next(fn)\n return this.runOne()\n }\n call (fn, returnWith) {\n if (returnWith) this.next(returnWith)\n this.stack.push(this.state)\n this.state = new State(fn)\n }\n callNow (fn, returnWith) {\n this.call(fn, returnWith)\n return this.runOne()\n }\n return (value) {\n /* istanbul ignore next */\n if (this.stack.length === 0) throw this.error(new ParserError('Stack underflow'))\n if (value === undefined) value = this.state.buf\n this.state = this.stack.pop()\n this.state.returned = value\n }\n returnNow (value) {\n this.return(value)\n return this.runOne()\n }\n consume () {\n /* istanbul ignore next */\n if (this.char === ParserEND) throw this.error(new ParserError('Unexpected end-of-buffer'))\n this.state.buf += this._buf[this.ii]\n }\n error (err) {\n err.line = this.line\n err.col = this.col\n err.pos = this.pos\n return err\n }\n /* istanbul ignore next */\n parseStart () {\n throw new ParserError('Must declare a parseStart method')\n }\n}\nParser.END = ParserEND\nParser.Error = ParserError\nmodule.exports = Parser\n","'use strict'\nmodule.exports = value => {\n const date = new Date(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nmodule.exports = (d, num) => {\n num = String(num)\n while (num.length < d) num = '0' + num\n return num\n}\n","'use strict'\nconst f = require('./format-num.js')\n\nclass FloatingDateTime extends Date {\n constructor (value) {\n super(value + 'Z')\n this.isFloating = true\n }\n toISOString () {\n const date = `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n const time = `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n return `${date}T${time}`\n }\n}\n\nmodule.exports = value => {\n const date = new FloatingDateTime(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nconst f = require('./format-num.js')\nconst DateTime = global.Date\n\nclass Date extends DateTime {\n constructor (value) {\n super(value)\n this.isDate = true\n }\n toISOString () {\n return `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n }\n}\n\nmodule.exports = value => {\n const date = new Date(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nconst f = require('./format-num.js')\n\nclass Time extends Date {\n constructor (value) {\n super(`0000-01-01T${value}Z`)\n this.isTime = true\n }\n toISOString () {\n return `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n }\n}\n\nmodule.exports = value => {\n const date = new Time(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\n/* eslint-disable no-new-wrappers, no-eval, camelcase, operator-linebreak */\nmodule.exports = makeParserClass(require('./parser.js'))\nmodule.exports.makeParserClass = makeParserClass\n\nclass TomlError extends Error {\n constructor (msg) {\n super(msg)\n this.name = 'TomlError'\n /* istanbul ignore next */\n if (Error.captureStackTrace) Error.captureStackTrace(this, TomlError)\n this.fromTOML = true\n this.wrapped = null\n }\n}\nTomlError.wrap = err => {\n const terr = new TomlError(err.message)\n terr.code = err.code\n terr.wrapped = err\n return terr\n}\nmodule.exports.TomlError = TomlError\n\nconst createDateTime = require('./create-datetime.js')\nconst createDateTimeFloat = require('./create-datetime-float.js')\nconst createDate = require('./create-date.js')\nconst createTime = require('./create-time.js')\n\nconst CTRL_I = 0x09\nconst CTRL_J = 0x0A\nconst CTRL_M = 0x0D\nconst CTRL_CHAR_BOUNDARY = 0x1F // the last non-character in the latin1 region of unicode, except DEL\nconst CHAR_SP = 0x20\nconst CHAR_QUOT = 0x22\nconst CHAR_NUM = 0x23\nconst CHAR_APOS = 0x27\nconst CHAR_PLUS = 0x2B\nconst CHAR_COMMA = 0x2C\nconst CHAR_HYPHEN = 0x2D\nconst CHAR_PERIOD = 0x2E\nconst CHAR_0 = 0x30\nconst CHAR_1 = 0x31\nconst CHAR_7 = 0x37\nconst CHAR_9 = 0x39\nconst CHAR_COLON = 0x3A\nconst CHAR_EQUALS = 0x3D\nconst CHAR_A = 0x41\nconst CHAR_E = 0x45\nconst CHAR_F = 0x46\nconst CHAR_T = 0x54\nconst CHAR_U = 0x55\nconst CHAR_Z = 0x5A\nconst CHAR_LOWBAR = 0x5F\nconst CHAR_a = 0x61\nconst CHAR_b = 0x62\nconst CHAR_e = 0x65\nconst CHAR_f = 0x66\nconst CHAR_i = 0x69\nconst CHAR_l = 0x6C\nconst CHAR_n = 0x6E\nconst CHAR_o = 0x6F\nconst CHAR_r = 0x72\nconst CHAR_s = 0x73\nconst CHAR_t = 0x74\nconst CHAR_u = 0x75\nconst CHAR_x = 0x78\nconst CHAR_z = 0x7A\nconst CHAR_LCUB = 0x7B\nconst CHAR_RCUB = 0x7D\nconst CHAR_LSQB = 0x5B\nconst CHAR_BSOL = 0x5C\nconst CHAR_RSQB = 0x5D\nconst CHAR_DEL = 0x7F\nconst SURROGATE_FIRST = 0xD800\nconst SURROGATE_LAST = 0xDFFF\n\nconst escapes = {\n [CHAR_b]: '\\u0008',\n [CHAR_t]: '\\u0009',\n [CHAR_n]: '\\u000A',\n [CHAR_f]: '\\u000C',\n [CHAR_r]: '\\u000D',\n [CHAR_QUOT]: '\\u0022',\n [CHAR_BSOL]: '\\u005C'\n}\n\nfunction isDigit (cp) {\n return cp >= CHAR_0 && cp <= CHAR_9\n}\nfunction isHexit (cp) {\n return (cp >= CHAR_A && cp <= CHAR_F) || (cp >= CHAR_a && cp <= CHAR_f) || (cp >= CHAR_0 && cp <= CHAR_9)\n}\nfunction isBit (cp) {\n return cp === CHAR_1 || cp === CHAR_0\n}\nfunction isOctit (cp) {\n return (cp >= CHAR_0 && cp <= CHAR_7)\n}\nfunction isAlphaNumQuoteHyphen (cp) {\n return (cp >= CHAR_A && cp <= CHAR_Z)\n || (cp >= CHAR_a && cp <= CHAR_z)\n || (cp >= CHAR_0 && cp <= CHAR_9)\n || cp === CHAR_APOS\n || cp === CHAR_QUOT\n || cp === CHAR_LOWBAR\n || cp === CHAR_HYPHEN\n}\nfunction isAlphaNumHyphen (cp) {\n return (cp >= CHAR_A && cp <= CHAR_Z)\n || (cp >= CHAR_a && cp <= CHAR_z)\n || (cp >= CHAR_0 && cp <= CHAR_9)\n || cp === CHAR_LOWBAR\n || cp === CHAR_HYPHEN\n}\nconst _type = Symbol('type')\nconst _declared = Symbol('declared')\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst defineProperty = Object.defineProperty\nconst descriptor = {configurable: true, enumerable: true, writable: true, value: undefined}\n\nfunction hasKey (obj, key) {\n if (hasOwnProperty.call(obj, key)) return true\n if (key === '__proto__') defineProperty(obj, '__proto__', descriptor)\n return false\n}\n\nconst INLINE_TABLE = Symbol('inline-table')\nfunction InlineTable () {\n return Object.defineProperties({}, {\n [_type]: {value: INLINE_TABLE}\n })\n}\nfunction isInlineTable (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INLINE_TABLE\n}\n\nconst TABLE = Symbol('table')\nfunction Table () {\n return Object.defineProperties({}, {\n [_type]: {value: TABLE},\n [_declared]: {value: false, writable: true}\n })\n}\nfunction isTable (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === TABLE\n}\n\nconst _contentType = Symbol('content-type')\nconst INLINE_LIST = Symbol('inline-list')\nfunction InlineList (type) {\n return Object.defineProperties([], {\n [_type]: {value: INLINE_LIST},\n [_contentType]: {value: type}\n })\n}\nfunction isInlineList (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INLINE_LIST\n}\n\nconst LIST = Symbol('list')\nfunction List () {\n return Object.defineProperties([], {\n [_type]: {value: LIST}\n })\n}\nfunction isList (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === LIST\n}\n\n// in an eval, to let bundlers not slurp in a util proxy\nlet _custom\ntry {\n const utilInspect = eval(\"require('util').inspect\")\n _custom = utilInspect.custom\n} catch (_) {\n /* eval require not available in transpiled bundle */\n}\n/* istanbul ignore next */\nconst _inspect = _custom || 'inspect'\n\nclass BoxedBigInt {\n constructor (value) {\n try {\n this.value = global.BigInt.asIntN(64, value)\n } catch (_) {\n /* istanbul ignore next */\n this.value = null\n }\n Object.defineProperty(this, _type, {value: INTEGER})\n }\n isNaN () {\n return this.value === null\n }\n /* istanbul ignore next */\n toString () {\n return String(this.value)\n }\n /* istanbul ignore next */\n [_inspect] () {\n return `[BigInt: ${this.toString()}]}`\n }\n valueOf () {\n return this.value\n }\n}\n\nconst INTEGER = Symbol('integer')\nfunction Integer (value) {\n let num = Number(value)\n // -0 is a float thing, not an int thing\n if (Object.is(num, -0)) num = 0\n /* istanbul ignore else */\n if (global.BigInt && !Number.isSafeInteger(num)) {\n return new BoxedBigInt(value)\n } else {\n /* istanbul ignore next */\n return Object.defineProperties(new Number(num), {\n isNaN: {value: function () { return isNaN(this) }},\n [_type]: {value: INTEGER},\n [_inspect]: {value: () => `[Integer: ${value}]`}\n })\n }\n}\nfunction isInteger (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INTEGER\n}\n\nconst FLOAT = Symbol('float')\nfunction Float (value) {\n /* istanbul ignore next */\n return Object.defineProperties(new Number(value), {\n [_type]: {value: FLOAT},\n [_inspect]: {value: () => `[Float: ${value}]`}\n })\n}\nfunction isFloat (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === FLOAT\n}\n\nfunction tomlType (value) {\n const type = typeof value\n if (type === 'object') {\n /* istanbul ignore if */\n if (value === null) return 'null'\n if (value instanceof Date) return 'datetime'\n /* istanbul ignore else */\n if (_type in value) {\n switch (value[_type]) {\n case INLINE_TABLE: return 'inline-table'\n case INLINE_LIST: return 'inline-list'\n /* istanbul ignore next */\n case TABLE: return 'table'\n /* istanbul ignore next */\n case LIST: return 'list'\n case FLOAT: return 'float'\n case INTEGER: return 'integer'\n }\n }\n }\n return type\n}\n\nfunction makeParserClass (Parser) {\n class TOMLParser extends Parser {\n constructor () {\n super()\n this.ctx = this.obj = Table()\n }\n\n /* MATCH HELPER */\n atEndOfWord () {\n return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine()\n }\n atEndOfLine () {\n return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M\n }\n\n parseStart () {\n if (this.char === Parser.END) {\n return null\n } else if (this.char === CHAR_LSQB) {\n return this.call(this.parseTableOrList)\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else if (isAlphaNumQuoteHyphen(this.char)) {\n return this.callNow(this.parseAssignStatement)\n } else {\n throw this.error(new TomlError(`Unknown character \"${this.char}\"`))\n }\n }\n\n // HELPER, this strips any whitespace and comments to the end of the line\n // then RETURNS. Last state in a production.\n parseWhitespaceToEOL () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else if (this.char === CHAR_NUM) {\n return this.goto(this.parseComment)\n } else if (this.char === Parser.END || this.char === CTRL_J) {\n return this.return()\n } else {\n throw this.error(new TomlError('Unexpected character, expected only whitespace or comments till end of line'))\n }\n }\n\n /* ASSIGNMENT: key = value */\n parseAssignStatement () {\n return this.callNow(this.parseAssign, this.recordAssignStatement)\n }\n recordAssignStatement (kv) {\n let target = this.ctx\n let finalKey = kv.key.pop()\n for (let kw of kv.key) {\n if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n target = target[kw] = target[kw] || Table()\n }\n if (hasKey(target, finalKey)) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n // unbox our numbers\n if (isInteger(kv.value) || isFloat(kv.value)) {\n target[finalKey] = kv.value.valueOf()\n } else {\n target[finalKey] = kv.value\n }\n return this.goto(this.parseWhitespaceToEOL)\n }\n\n /* ASSSIGNMENT expression, key = value possibly inside an inline table */\n parseAssign () {\n return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n }\n recordAssignKeyword (key) {\n if (this.state.resultTable) {\n this.state.resultTable.push(key)\n } else {\n this.state.resultTable = [key]\n }\n return this.goto(this.parseAssignKeywordPreDot)\n }\n parseAssignKeywordPreDot () {\n if (this.char === CHAR_PERIOD) {\n return this.next(this.parseAssignKeywordPostDot)\n } else if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n return this.goto(this.parseAssignEqual)\n }\n }\n parseAssignKeywordPostDot () {\n if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n }\n }\n\n parseAssignEqual () {\n if (this.char === CHAR_EQUALS) {\n return this.next(this.parseAssignPreValue)\n } else {\n throw this.error(new TomlError('Invalid character, expected \"=\"'))\n }\n }\n parseAssignPreValue () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseValue, this.recordAssignValue)\n }\n }\n recordAssignValue (value) {\n return this.returnNow({key: this.state.resultTable, value: value})\n }\n\n /* COMMENTS: #...eol */\n parseComment () {\n do {\n if (this.char === Parser.END || this.char === CTRL_J) {\n return this.return()\n }\n } while (this.nextChar())\n }\n\n /* TABLES AND LISTS, [foo] and [[foo]] */\n parseTableOrList () {\n if (this.char === CHAR_LSQB) {\n this.next(this.parseList)\n } else {\n return this.goto(this.parseTable)\n }\n }\n\n /* TABLE [foo.bar.baz] */\n parseTable () {\n this.ctx = this.obj\n return this.goto(this.parseTableNext)\n }\n parseTableNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseKeyword, this.parseTableMore)\n }\n }\n parseTableMore (keyword) {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CHAR_RSQB) {\n if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n } else {\n this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table()\n this.ctx[_declared] = true\n }\n return this.next(this.parseWhitespaceToEOL)\n } else if (this.char === CHAR_PERIOD) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx = this.ctx[keyword] = Table()\n } else if (isTable(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword]\n } else if (isList(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n } else {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n return this.next(this.parseTableNext)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n\n /* LIST [[a.b.c]] */\n parseList () {\n this.ctx = this.obj\n return this.goto(this.parseListNext)\n }\n parseListNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseKeyword, this.parseListMore)\n }\n }\n parseListMore (keyword) {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CHAR_RSQB) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx[keyword] = List()\n }\n if (isInlineList(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline array\"))\n } else if (isList(this.ctx[keyword])) {\n const next = Table()\n this.ctx[keyword].push(next)\n this.ctx = next\n } else {\n throw this.error(new TomlError(\"Can't redefine an existing key\"))\n }\n return this.next(this.parseListEnd)\n } else if (this.char === CHAR_PERIOD) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx = this.ctx[keyword] = Table()\n } else if (isInlineList(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline array\"))\n } else if (isInlineTable(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline table\"))\n } else if (isList(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n } else if (isTable(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword]\n } else {\n throw this.error(new TomlError(\"Can't redefine an existing key\"))\n }\n return this.next(this.parseListNext)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n parseListEnd (keyword) {\n if (this.char === CHAR_RSQB) {\n return this.next(this.parseWhitespaceToEOL)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n\n /* VALUE string, number, boolean, inline list, inline object */\n parseValue () {\n if (this.char === Parser.END) {\n throw this.error(new TomlError('Key without value'))\n } else if (this.char === CHAR_QUOT) {\n return this.next(this.parseDoubleString)\n } if (this.char === CHAR_APOS) {\n return this.next(this.parseSingleString)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n return this.goto(this.parseNumberSign)\n } else if (this.char === CHAR_i) {\n return this.next(this.parseInf)\n } else if (this.char === CHAR_n) {\n return this.next(this.parseNan)\n } else if (isDigit(this.char)) {\n return this.goto(this.parseNumberOrDateTime)\n } else if (this.char === CHAR_t || this.char === CHAR_f) {\n return this.goto(this.parseBoolean)\n } else if (this.char === CHAR_LSQB) {\n return this.call(this.parseInlineList, this.recordValue)\n } else if (this.char === CHAR_LCUB) {\n return this.call(this.parseInlineTable, this.recordValue)\n } else {\n throw this.error(new TomlError('Unexpected character, expecting string, number, datetime, boolean, inline array or inline table'))\n }\n }\n recordValue (value) {\n return this.returnNow(value)\n }\n\n parseInf () {\n if (this.char === CHAR_n) {\n return this.next(this.parseInf2)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n }\n }\n parseInf2 () {\n if (this.char === CHAR_f) {\n if (this.state.buf === '-') {\n return this.return(-Infinity)\n } else {\n return this.return(Infinity)\n }\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n }\n }\n\n parseNan () {\n if (this.char === CHAR_a) {\n return this.next(this.parseNan2)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n }\n }\n parseNan2 () {\n if (this.char === CHAR_n) {\n return this.return(NaN)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n }\n }\n\n /* KEYS, barewords or basic, literal, or dotted */\n parseKeyword () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseBasicString)\n } else if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralString)\n } else {\n return this.goto(this.parseBareKey)\n }\n }\n\n /* KEYS: barewords */\n parseBareKey () {\n do {\n if (this.char === Parser.END) {\n throw this.error(new TomlError('Key ended without value'))\n } else if (isAlphaNumHyphen(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 0) {\n throw this.error(new TomlError('Empty bare keys are not allowed'))\n } else {\n return this.returnNow()\n }\n } while (this.nextChar())\n }\n\n /* STRINGS, single quoted (literal) */\n parseSingleString () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiStringMaybe)\n } else {\n return this.goto(this.parseLiteralString)\n }\n }\n parseLiteralString () {\n do {\n if (this.char === CHAR_APOS) {\n return this.return()\n } else if (this.atEndOfLine()) {\n throw this.error(new TomlError('Unterminated string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n parseLiteralMultiStringMaybe () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiString)\n } else {\n return this.returnNow()\n }\n }\n parseLiteralMultiString () {\n if (this.char === CTRL_M) {\n return null\n } else if (this.char === CTRL_J) {\n return this.next(this.parseLiteralMultiStringContent)\n } else {\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n parseLiteralMultiStringContent () {\n do {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiEnd)\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated multi-line string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n parseLiteralMultiEnd () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiEnd2)\n } else {\n this.state.buf += \"'\"\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n parseLiteralMultiEnd2 () {\n if (this.char === CHAR_APOS) {\n return this.return()\n } else {\n this.state.buf += \"''\"\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n\n /* STRINGS double quoted */\n parseDoubleString () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiStringMaybe)\n } else {\n return this.goto(this.parseBasicString)\n }\n }\n parseBasicString () {\n do {\n if (this.char === CHAR_BSOL) {\n return this.call(this.parseEscape, this.recordEscapeReplacement)\n } else if (this.char === CHAR_QUOT) {\n return this.return()\n } else if (this.atEndOfLine()) {\n throw this.error(new TomlError('Unterminated string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n recordEscapeReplacement (replacement) {\n this.state.buf += replacement\n return this.goto(this.parseBasicString)\n }\n parseMultiStringMaybe () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiString)\n } else {\n return this.returnNow()\n }\n }\n parseMultiString () {\n if (this.char === CTRL_M) {\n return null\n } else if (this.char === CTRL_J) {\n return this.next(this.parseMultiStringContent)\n } else {\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiStringContent () {\n do {\n if (this.char === CHAR_BSOL) {\n return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement)\n } else if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiEnd)\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated multi-line string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n errorControlCharInString () {\n let displayCode = '\\\\u00'\n if (this.char < 16) {\n displayCode += '0'\n }\n displayCode += this.char.toString(16)\n\n return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`))\n }\n recordMultiEscapeReplacement (replacement) {\n this.state.buf += replacement\n return this.goto(this.parseMultiStringContent)\n }\n parseMultiEnd () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiEnd2)\n } else {\n this.state.buf += '\"'\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiEnd2 () {\n if (this.char === CHAR_QUOT) {\n return this.return()\n } else {\n this.state.buf += '\"\"'\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiEscape () {\n if (this.char === CTRL_M || this.char === CTRL_J) {\n return this.next(this.parseMultiTrim)\n } else if (this.char === CHAR_SP || this.char === CTRL_I) {\n return this.next(this.parsePreMultiTrim)\n } else {\n return this.goto(this.parseEscape)\n }\n }\n parsePreMultiTrim () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CTRL_M || this.char === CTRL_J) {\n return this.next(this.parseMultiTrim)\n } else {\n throw this.error(new TomlError(\"Can't escape whitespace\"))\n }\n }\n parseMultiTrim () {\n // explicitly whitespace here, END should follow the same path as chars\n if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else {\n return this.returnNow()\n }\n }\n parseEscape () {\n if (this.char in escapes) {\n return this.return(escapes[this.char])\n } else if (this.char === CHAR_u) {\n return this.call(this.parseSmallUnicode, this.parseUnicodeReturn)\n } else if (this.char === CHAR_U) {\n return this.call(this.parseLargeUnicode, this.parseUnicodeReturn)\n } else {\n throw this.error(new TomlError('Unknown escape character: ' + this.char))\n }\n }\n parseUnicodeReturn (char) {\n try {\n const codePoint = parseInt(char, 16)\n if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) {\n throw this.error(new TomlError('Invalid unicode, character in range 0xD800 - 0xDFFF is reserved'))\n }\n return this.returnNow(String.fromCodePoint(codePoint))\n } catch (err) {\n throw this.error(TomlError.wrap(err))\n }\n }\n parseSmallUnicode () {\n if (!isHexit(this.char)) {\n throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n } else {\n this.consume()\n if (this.state.buf.length >= 4) return this.return()\n }\n }\n parseLargeUnicode () {\n if (!isHexit(this.char)) {\n throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n } else {\n this.consume()\n if (this.state.buf.length >= 8) return this.return()\n }\n }\n\n /* NUMBERS */\n parseNumberSign () {\n this.consume()\n return this.next(this.parseMaybeSignedInfOrNan)\n }\n parseMaybeSignedInfOrNan () {\n if (this.char === CHAR_i) {\n return this.next(this.parseInf)\n } else if (this.char === CHAR_n) {\n return this.next(this.parseNan)\n } else {\n return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart)\n }\n }\n parseNumberIntegerStart () {\n if (this.char === CHAR_0) {\n this.consume()\n return this.next(this.parseNumberIntegerExponentOrDecimal)\n } else {\n return this.goto(this.parseNumberInteger)\n }\n }\n parseNumberIntegerExponentOrDecimal () {\n if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseNumberInteger () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseNoUnder () {\n if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) {\n throw this.error(new TomlError('Unexpected character, expected digit'))\n } else if (this.atEndOfWord()) {\n throw this.error(new TomlError('Incomplete number'))\n }\n return this.returnNow()\n }\n parseNoUnderHexOctBinLiteral () {\n if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD) {\n throw this.error(new TomlError('Unexpected character, expected digit'))\n } else if (this.atEndOfWord()) {\n throw this.error(new TomlError('Incomplete number'))\n }\n return this.returnNow()\n }\n parseNumberFloat () {\n if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else {\n return this.returnNow(Float(this.state.buf))\n }\n }\n parseNumberExponentSign () {\n if (isDigit(this.char)) {\n return this.goto(this.parseNumberExponent)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.call(this.parseNoUnder, this.parseNumberExponent)\n } else {\n throw this.error(new TomlError('Unexpected character, expected -, + or digit'))\n }\n }\n parseNumberExponent () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder)\n } else {\n return this.returnNow(Float(this.state.buf))\n }\n }\n\n /* NUMBERS or DATETIMES */\n parseNumberOrDateTime () {\n if (this.char === CHAR_0) {\n this.consume()\n return this.next(this.parseNumberBaseOrDateTime)\n } else {\n return this.goto(this.parseNumberOrDateTimeOnly)\n }\n }\n parseNumberOrDateTimeOnly () {\n // note, if two zeros are in a row then it MUST be a date\n if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder, this.parseNumberInteger)\n } else if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length > 4) this.next(this.parseNumberInteger)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (this.char === CHAR_HYPHEN) {\n return this.goto(this.parseDateTime)\n } else if (this.char === CHAR_COLON) {\n return this.goto(this.parseOnlyTimeHour)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseDateTimeOnly () {\n if (this.state.buf.length < 4) {\n if (isDigit(this.char)) {\n return this.consume()\n } else if (this.char === CHAR_COLON) {\n return this.goto(this.parseOnlyTimeHour)\n } else {\n throw this.error(new TomlError('Expected digit while parsing year part of a date'))\n }\n } else {\n if (this.char === CHAR_HYPHEN) {\n return this.goto(this.parseDateTime)\n } else {\n throw this.error(new TomlError('Expected hyphen (-) while parsing year part of date'))\n }\n }\n }\n parseNumberBaseOrDateTime () {\n if (this.char === CHAR_b) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerBin)\n } else if (this.char === CHAR_o) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerOct)\n } else if (this.char === CHAR_x) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerHex)\n } else if (this.char === CHAR_PERIOD) {\n return this.goto(this.parseNumberInteger)\n } else if (isDigit(this.char)) {\n return this.goto(this.parseDateTimeOnly)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseIntegerHex () {\n if (isHexit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseIntegerOct () {\n if (isOctit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseIntegerBin () {\n if (isBit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n\n /* DATETIME */\n parseDateTime () {\n // we enter here having just consumed the year and about to consume the hyphen\n if (this.state.buf.length < 4) {\n throw this.error(new TomlError('Years less than 1000 must be zero padded to four characters'))\n }\n this.state.result = this.state.buf\n this.state.buf = ''\n return this.next(this.parseDateMonth)\n }\n parseDateMonth () {\n if (this.char === CHAR_HYPHEN) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Months less than 10 must be zero padded to two characters'))\n }\n this.state.result += '-' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseDateDay)\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseDateDay () {\n if (this.char === CHAR_T || this.char === CHAR_SP) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Days less than 10 must be zero padded to two characters'))\n }\n this.state.result += '-' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseStartTimeHour)\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDate(this.state.result + '-' + this.state.buf))\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseStartTimeHour () {\n if (this.atEndOfWord()) {\n return this.returnNow(createDate(this.state.result))\n } else {\n return this.goto(this.parseTimeHour)\n }\n }\n parseTimeHour () {\n if (this.char === CHAR_COLON) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n }\n this.state.result += 'T' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeMin)\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseTimeMin () {\n if (this.state.buf.length < 2 && isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeSec)\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseTimeSec () {\n if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length === 2) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeZoneOrFraction)\n }\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n\n parseOnlyTimeHour () {\n /* istanbul ignore else */\n if (this.char === CHAR_COLON) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n }\n this.state.result = this.state.buf\n this.state.buf = ''\n return this.next(this.parseOnlyTimeMin)\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeMin () {\n if (this.state.buf.length < 2 && isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseOnlyTimeSec)\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeSec () {\n if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length === 2) {\n return this.next(this.parseOnlyTimeFractionMaybe)\n }\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeFractionMaybe () {\n this.state.result += ':' + this.state.buf\n if (this.char === CHAR_PERIOD) {\n this.state.buf = ''\n this.next(this.parseOnlyTimeFraction)\n } else {\n return this.return(createTime(this.state.result))\n }\n }\n parseOnlyTimeFraction () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.atEndOfWord()) {\n if (this.state.buf.length === 0) throw this.error(new TomlError('Expected digit in milliseconds'))\n return this.returnNow(createTime(this.state.result + '.' + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n\n parseTimeZoneOrFraction () {\n if (this.char === CHAR_PERIOD) {\n this.consume()\n this.next(this.parseDateTimeFraction)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.next(this.parseTimeZoneHour)\n } else if (this.char === CHAR_Z) {\n this.consume()\n return this.return(createDateTime(this.state.result + this.state.buf))\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n parseDateTimeFraction () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 1) {\n throw this.error(new TomlError('Expected digit in milliseconds'))\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.next(this.parseTimeZoneHour)\n } else if (this.char === CHAR_Z) {\n this.consume()\n return this.return(createDateTime(this.state.result + this.state.buf))\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n parseTimeZoneHour () {\n if (isDigit(this.char)) {\n this.consume()\n // FIXME: No more regexps\n if (/\\d\\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep)\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n }\n }\n parseTimeZoneSep () {\n if (this.char === CHAR_COLON) {\n this.consume()\n this.next(this.parseTimeZoneMin)\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected colon'))\n }\n }\n parseTimeZoneMin () {\n if (isDigit(this.char)) {\n this.consume()\n if (/\\d\\d$/.test(this.state.buf)) return this.return(createDateTime(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n }\n }\n\n /* BOOLEAN */\n parseBoolean () {\n /* istanbul ignore else */\n if (this.char === CHAR_t) {\n this.consume()\n return this.next(this.parseTrue_r)\n } else if (this.char === CHAR_f) {\n this.consume()\n return this.next(this.parseFalse_a)\n }\n }\n parseTrue_r () {\n if (this.char === CHAR_r) {\n this.consume()\n return this.next(this.parseTrue_u)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n parseTrue_u () {\n if (this.char === CHAR_u) {\n this.consume()\n return this.next(this.parseTrue_e)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n parseTrue_e () {\n if (this.char === CHAR_e) {\n return this.return(true)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_a () {\n if (this.char === CHAR_a) {\n this.consume()\n return this.next(this.parseFalse_l)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_l () {\n if (this.char === CHAR_l) {\n this.consume()\n return this.next(this.parseFalse_s)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_s () {\n if (this.char === CHAR_s) {\n this.consume()\n return this.next(this.parseFalse_e)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_e () {\n if (this.char === CHAR_e) {\n return this.return(false)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n /* INLINE LISTS */\n parseInlineList () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n return null\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CHAR_RSQB) {\n return this.return(this.state.resultArr || InlineList())\n } else {\n return this.callNow(this.parseValue, this.recordInlineListValue)\n }\n }\n recordInlineListValue (value) {\n if (this.state.resultArr) {\n const listType = this.state.resultArr[_contentType]\n const valueType = tomlType(value)\n if (listType !== valueType) {\n throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`))\n }\n } else {\n this.state.resultArr = InlineList(tomlType(value))\n }\n if (isFloat(value) || isInteger(value)) {\n // unbox now that we've verified they're ok\n this.state.resultArr.push(value.valueOf())\n } else {\n this.state.resultArr.push(value)\n }\n return this.goto(this.parseInlineListNext)\n }\n parseInlineListNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n return null\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CHAR_COMMA) {\n return this.next(this.parseInlineList)\n } else if (this.char === CHAR_RSQB) {\n return this.goto(this.parseInlineList)\n } else {\n throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n }\n }\n\n /* INLINE TABLE */\n parseInlineTable () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_RCUB) {\n return this.return(this.state.resultTable || InlineTable())\n } else {\n if (!this.state.resultTable) this.state.resultTable = InlineTable()\n return this.callNow(this.parseAssign, this.recordInlineTableValue)\n }\n }\n recordInlineTableValue (kv) {\n let target = this.state.resultTable\n let finalKey = kv.key.pop()\n for (let kw of kv.key) {\n if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n target = target[kw] = target[kw] || Table()\n }\n if (hasKey(target, finalKey)) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n if (isInteger(kv.value) || isFloat(kv.value)) {\n target[finalKey] = kv.value.valueOf()\n } else {\n target[finalKey] = kv.value\n }\n return this.goto(this.parseInlineTableNext)\n }\n parseInlineTableNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_COMMA) {\n return this.next(this.parseInlineTable)\n } else if (this.char === CHAR_RCUB) {\n return this.goto(this.parseInlineTable)\n } else {\n throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n }\n }\n }\n return TOMLParser\n}\n","'use strict'\nmodule.exports = prettyError\n\nfunction prettyError (err, buf) {\n /* istanbul ignore if */\n if (err.pos == null || err.line == null) return err\n let msg = err.message\n msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}:\\n`\n\n /* istanbul ignore else */\n if (buf && buf.split) {\n const lines = buf.split(/\\n/)\n const lineNumWidth = String(Math.min(lines.length, err.line + 3)).length\n let linePadding = ' '\n while (linePadding.length < lineNumWidth) linePadding += ' '\n for (let ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) {\n let lineNum = String(ii + 1)\n if (lineNum.length < lineNumWidth) lineNum = ' ' + lineNum\n if (err.line === ii) {\n msg += lineNum + '> ' + lines[ii] + '\\n'\n msg += linePadding + ' '\n for (let hh = 0; hh < err.col; ++hh) {\n msg += ' '\n }\n msg += '^\\n'\n } else {\n msg += lineNum + ': ' + lines[ii] + '\\n'\n }\n }\n }\n err.message = msg + '\\n'\n return err\n}\n","'use strict'\nmodule.exports = parseString\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseString (str) {\n if (global.Buffer && global.Buffer.isBuffer(str)) {\n str = str.toString('utf8')\n }\n const parser = new TOMLParser()\n try {\n parser.parse(str)\n return parser.finish()\n } catch (err) {\n throw prettyError(err, str)\n }\n}\n","'use strict'\nmodule.exports = parseAsync\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseAsync (str, opts) {\n if (!opts) opts = {}\n const index = 0\n const blocksize = opts.blocksize || 40960\n const parser = new TOMLParser()\n return new Promise((resolve, reject) => {\n setImmediate(parseAsyncNext, index, blocksize, resolve, reject)\n })\n function parseAsyncNext (index, blocksize, resolve, reject) {\n if (index >= str.length) {\n try {\n return resolve(parser.finish())\n } catch (err) {\n return reject(prettyError(err, str))\n }\n }\n try {\n parser.parse(str.slice(index, index + blocksize))\n setImmediate(parseAsyncNext, index + blocksize, blocksize, resolve, reject)\n } catch (err) {\n reject(prettyError(err, str))\n }\n }\n}\n","'use strict'\nmodule.exports = parseStream\n\nconst stream = require('stream')\nconst TOMLParser = require('./lib/toml-parser.js')\n\nfunction parseStream (stm) {\n if (stm) {\n return parseReadable(stm)\n } else {\n return parseTransform(stm)\n }\n}\n\nfunction parseReadable (stm) {\n const parser = new TOMLParser()\n stm.setEncoding('utf8')\n return new Promise((resolve, reject) => {\n let readable\n let ended = false\n let errored = false\n function finish () {\n ended = true\n if (readable) return\n try {\n resolve(parser.finish())\n } catch (err) {\n reject(err)\n }\n }\n function error (err) {\n errored = true\n reject(err)\n }\n stm.once('end', finish)\n stm.once('error', error)\n readNext()\n\n function readNext () {\n readable = true\n let data\n while ((data = stm.read()) !== null) {\n try {\n parser.parse(data)\n } catch (err) {\n return error(err)\n }\n }\n readable = false\n /* istanbul ignore if */\n if (ended) return finish()\n /* istanbul ignore if */\n if (errored) return\n stm.once('readable', readNext)\n }\n })\n}\n\nfunction parseTransform () {\n const parser = new TOMLParser()\n return new stream.Transform({\n objectMode: true,\n transform (chunk, encoding, cb) {\n try {\n parser.parse(chunk.toString(encoding))\n } catch (err) {\n this.emit('error', err)\n }\n cb()\n },\n flush (cb) {\n try {\n this.push(parser.finish())\n } catch (err) {\n this.emit('error', err)\n }\n cb()\n }\n })\n}\n","'use strict'\nmodule.exports = require('./parse-string.js')\nmodule.exports.async = require('./parse-async.js')\nmodule.exports.stream = require('./parse-stream.js')\nmodule.exports.prettyError = require('./parse-pretty-error.js')\n","'use strict'\nmodule.exports = stringify\nmodule.exports.value = stringifyInline\n\nfunction stringify (obj) {\n if (obj === null) throw typeError('null')\n if (obj === void (0)) throw typeError('undefined')\n if (typeof obj !== 'object') throw typeError(typeof obj)\n\n if (typeof obj.toJSON === 'function') obj = obj.toJSON()\n if (obj == null) return null\n const type = tomlType(obj)\n if (type !== 'table') throw typeError(type)\n return stringifyObject('', '', obj)\n}\n\nfunction typeError (type) {\n return new Error('Can only stringify objects, not ' + type)\n}\n\nfunction arrayOneTypeError () {\n return new Error(\"Array values can't have mixed types\")\n}\n\nfunction getInlineKeys (obj) {\n return Object.keys(obj).filter(key => isInline(obj[key]))\n}\nfunction getComplexKeys (obj) {\n return Object.keys(obj).filter(key => !isInline(obj[key]))\n}\n\nfunction toJSON (obj) {\n let nobj = Array.isArray(obj) ? [] : Object.prototype.hasOwnProperty.call(obj, '__proto__') ? {['__proto__']: undefined} : {}\n for (let prop of Object.keys(obj)) {\n if (obj[prop] && typeof obj[prop].toJSON === 'function' && !('toISOString' in obj[prop])) {\n nobj[prop] = obj[prop].toJSON()\n } else {\n nobj[prop] = obj[prop]\n }\n }\n return nobj\n}\n\nfunction stringifyObject (prefix, indent, obj) {\n obj = toJSON(obj)\n var inlineKeys\n var complexKeys\n inlineKeys = getInlineKeys(obj)\n complexKeys = getComplexKeys(obj)\n var result = []\n var inlineIndent = indent || ''\n inlineKeys.forEach(key => {\n var type = tomlType(obj[key])\n if (type !== 'undefined' && type !== 'null') {\n result.push(inlineIndent + stringifyKey(key) + ' = ' + stringifyAnyInline(obj[key], true))\n }\n })\n if (result.length > 0) result.push('')\n var complexIndent = prefix && inlineKeys.length > 0 ? indent + ' ' : ''\n complexKeys.forEach(key => {\n result.push(stringifyComplex(prefix, complexIndent, key, obj[key]))\n })\n return result.join('\\n')\n}\n\nfunction isInline (value) {\n switch (tomlType(value)) {\n case 'undefined':\n case 'null':\n case 'integer':\n case 'nan':\n case 'float':\n case 'boolean':\n case 'string':\n case 'datetime':\n return true\n case 'array':\n return value.length === 0 || tomlType(value[0]) !== 'table'\n case 'table':\n return Object.keys(value).length === 0\n /* istanbul ignore next */\n default:\n return false\n }\n}\n\nfunction tomlType (value) {\n if (value === undefined) {\n return 'undefined'\n } else if (value === null) {\n return 'null'\n /* eslint-disable valid-typeof */\n } else if (typeof value === 'bigint' || (Number.isInteger(value) && !Object.is(value, -0))) {\n return 'integer'\n } else if (typeof value === 'number') {\n return 'float'\n } else if (typeof value === 'boolean') {\n return 'boolean'\n } else if (typeof value === 'string') {\n return 'string'\n } else if ('toISOString' in value) {\n return isNaN(value) ? 'undefined' : 'datetime'\n } else if (Array.isArray(value)) {\n return 'array'\n } else {\n return 'table'\n }\n}\n\nfunction stringifyKey (key) {\n var keyStr = String(key)\n if (/^[-A-Za-z0-9_]+$/.test(keyStr)) {\n return keyStr\n } else {\n return stringifyBasicString(keyStr)\n }\n}\n\nfunction stringifyBasicString (str) {\n return '\"' + escapeString(str).replace(/\"/g, '\\\\\"') + '\"'\n}\n\nfunction stringifyLiteralString (str) {\n return \"'\" + str + \"'\"\n}\n\nfunction numpad (num, str) {\n while (str.length < num) str = '0' + str\n return str\n}\n\nfunction escapeString (str) {\n return str.replace(/\\\\/g, '\\\\\\\\')\n .replace(/[\\b]/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n /* eslint-disable no-control-regex */\n .replace(/([\\u0000-\\u001f\\u007f])/, c => '\\\\u' + numpad(4, c.codePointAt(0).toString(16)))\n /* eslint-enable no-control-regex */\n}\n\nfunction stringifyMultilineString (str) {\n let escaped = str.split(/\\n/).map(str => {\n return escapeString(str).replace(/\"(?=\"\")/g, '\\\\\"')\n }).join('\\n')\n if (escaped.slice(-1) === '\"') escaped += '\\\\\\n'\n return '\"\"\"\\n' + escaped + '\"\"\"'\n}\n\nfunction stringifyAnyInline (value, multilineOk) {\n let type = tomlType(value)\n if (type === 'string') {\n if (multilineOk && /\\n/.test(value)) {\n type = 'string-multiline'\n } else if (!/[\\b\\t\\n\\f\\r']/.test(value) && /\"/.test(value)) {\n type = 'string-literal'\n }\n }\n return stringifyInline(value, type)\n}\n\nfunction stringifyInline (value, type) {\n /* istanbul ignore if */\n if (!type) type = tomlType(value)\n switch (type) {\n case 'string-multiline':\n return stringifyMultilineString(value)\n case 'string':\n return stringifyBasicString(value)\n case 'string-literal':\n return stringifyLiteralString(value)\n case 'integer':\n return stringifyInteger(value)\n case 'float':\n return stringifyFloat(value)\n case 'boolean':\n return stringifyBoolean(value)\n case 'datetime':\n return stringifyDatetime(value)\n case 'array':\n return stringifyInlineArray(value.filter(_ => tomlType(_) !== 'null' && tomlType(_) !== 'undefined' && tomlType(_) !== 'nan'))\n case 'table':\n return stringifyInlineTable(value)\n /* istanbul ignore next */\n default:\n throw typeError(type)\n }\n}\n\nfunction stringifyInteger (value) {\n /* eslint-disable security/detect-unsafe-regex */\n return String(value).replace(/\\B(?=(\\d{3})+(?!\\d))/g, '_')\n}\n\nfunction stringifyFloat (value) {\n if (value === Infinity) {\n return 'inf'\n } else if (value === -Infinity) {\n return '-inf'\n } else if (Object.is(value, NaN)) {\n return 'nan'\n } else if (Object.is(value, -0)) {\n return '-0.0'\n }\n var chunks = String(value).split('.')\n var int = chunks[0]\n var dec = chunks[1] || 0\n return stringifyInteger(int) + '.' + dec\n}\n\nfunction stringifyBoolean (value) {\n return String(value)\n}\n\nfunction stringifyDatetime (value) {\n return value.toISOString()\n}\n\nfunction isNumber (type) {\n return type === 'float' || type === 'integer'\n}\nfunction arrayType (values) {\n var contentType = tomlType(values[0])\n if (values.every(_ => tomlType(_) === contentType)) return contentType\n // mixed integer/float, emit as floats\n if (values.every(_ => isNumber(tomlType(_)))) return 'float'\n return 'mixed'\n}\nfunction validateArray (values) {\n const type = arrayType(values)\n if (type === 'mixed') {\n throw arrayOneTypeError()\n }\n return type\n}\n\nfunction stringifyInlineArray (values) {\n values = toJSON(values)\n const type = validateArray(values)\n var result = '['\n var stringified = values.map(_ => stringifyInline(_, type))\n if (stringified.join(', ').length > 60 || /\\n/.test(stringified)) {\n result += '\\n ' + stringified.join(',\\n ') + '\\n'\n } else {\n result += ' ' + stringified.join(', ') + (stringified.length > 0 ? ' ' : '')\n }\n return result + ']'\n}\n\nfunction stringifyInlineTable (value) {\n value = toJSON(value)\n var result = []\n Object.keys(value).forEach(key => {\n result.push(stringifyKey(key) + ' = ' + stringifyAnyInline(value[key], false))\n })\n return '{ ' + result.join(', ') + (result.length > 0 ? ' ' : '') + '}'\n}\n\nfunction stringifyComplex (prefix, indent, key, value) {\n var valueType = tomlType(value)\n /* istanbul ignore else */\n if (valueType === 'array') {\n return stringifyArrayOfTables(prefix, indent, key, value)\n } else if (valueType === 'table') {\n return stringifyComplexTable(prefix, indent, key, value)\n } else {\n throw typeError(valueType)\n }\n}\n\nfunction stringifyArrayOfTables (prefix, indent, key, values) {\n values = toJSON(values)\n validateArray(values)\n var firstValueType = tomlType(values[0])\n /* istanbul ignore if */\n if (firstValueType !== 'table') throw typeError(firstValueType)\n var fullKey = prefix + stringifyKey(key)\n var result = ''\n values.forEach(table => {\n if (result.length > 0) result += '\\n'\n result += indent + '[[' + fullKey + ']]\\n'\n result += stringifyObject(fullKey + '.', indent, table)\n })\n return result\n}\n\nfunction stringifyComplexTable (prefix, indent, key, value) {\n var fullKey = prefix + stringifyKey(key)\n var result = ''\n if (getInlineKeys(value).length > 0) {\n result += indent + '[' + fullKey + ']\\n'\n }\n return result + stringifyObject(fullKey + '.', indent, value)\n}\n","'use strict'\nexports.parse = require('./parse.js')\nexports.stringify = require('./stringify.js')\n","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\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 = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\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 var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\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.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.defaultStyle = options['defaultStyle'] || null;\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 common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\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 this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\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\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return 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 return new Schema({\n include: schemas,\n explicit: types\n });\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 },\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 // base 8\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 // base 10 (except 0) or base 60\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 (ch === ':') break;\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 // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\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, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\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 ? '0' + obj.toString(8) : '-0' + 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|[1-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 // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[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, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\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 } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\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\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\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 // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return 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(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\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\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\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 Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\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_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\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 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 return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\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 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, startLine, startPos) {\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.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\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}\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 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 _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\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 }\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;\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);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\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 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\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 _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\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 following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\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);\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 if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\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);\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 } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\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, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (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);\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 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 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 && state.tag !== '!') {\n 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 (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\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.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);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\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 = {};\n state.anchorMap = {};\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\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\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\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\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_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\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 !== 0xFEFF /* 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// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\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 // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\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 return isPrintable(c) && c !== 0xFEFF\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// 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, testAmbiguousType) {\n var i;\n var char, prev_char;\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(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(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 prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_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 return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : 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 return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\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) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\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, testAmbiguity)) {\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, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _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\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\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 (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\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 || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\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 state.tag = explicit ? type.tag : '?';\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) {\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\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 var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, 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);\n }\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 state.dump = '!<' + state.tag + '> ' + 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 if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\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.safeLoad.bind(yaml),\n stringify: yaml.safeDump.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 /* eslint no-eval: 0 */\n try {\n if (wrap !== false) {\n str = '(function() {\\nreturn ' + str.trim() + ';\\n}());';\n }\n return eval(str) || {};\n } catch (err) {\n if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {\n return parse(str, options, false);\n }\n throw new SyntaxError(err);\n }\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 typeOf(val) === 'buffer';\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 return typeof input === 'string' ? Buffer.from(input) : input;\n};\n\n/**\n * Cast `val` to a string.\n */\n\nexports.toString = function(input) {\n if (exports.isBuffer(input)) return stripBom(String(input));\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 'coffee':\n case 'coffeescript':\n case 'cson':\n return 'coffee';\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","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { makeInitCommand } from \"./commands/init.js\";\nimport { makeStatusCommand } from \"./commands/status.js\";\nimport { makeIndexCommand } from \"./commands/index-cmd.js\";\nimport { makeSearchCommand } from \"./commands/search.js\";\nimport { makeIngestCommand } from \"./commands/ingest.js\";\nimport { makeQueryCommand } from \"./commands/query.js\";\nimport { makeLogCommand } from \"./commands/log-cmd.js\";\nimport { makeLintCommand } from \"./commands/lint.js\";\nimport { makeMcpCommand } from \"./commands/mcp.js\";\nimport { makeAgentContextCommand } from \"./commands/agent-context.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"kb\")\n .description(\"LLM-maintained wiki for project knowledge management\")\n .version(\"0.1.0\");\n\nprogram.addCommand(makeInitCommand());\nprogram.addCommand(makeStatusCommand());\nprogram.addCommand(makeIndexCommand());\nprogram.addCommand(makeSearchCommand());\nprogram.addCommand(makeIngestCommand());\nprogram.addCommand(makeQueryCommand());\nprogram.addCommand(makeLogCommand());\nprogram.addCommand(makeLintCommand());\nprogram.addCommand(makeMcpCommand());\nprogram.addCommand(makeAgentContextCommand());\n\nprogram.parse(process.argv);\n","import { Command } from \"commander\";\nimport { basename, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport { initProject } from \"kb-core\";\n\nexport function makeInitCommand(): Command {\n const cmd = new Command(\"init\");\n\n cmd\n .description(\"Initialize a new knowledge base in the current directory\")\n .argument(\n \"[project-name]\",\n \"Name of the project (defaults to directory name)\",\n )\n .action(async (projectName: string | undefined) => {\n const directory = resolve(process.cwd());\n const name = projectName ?? basename(directory);\n\n try {\n await initProject({ name, directory });\n\n console.log(chalk.green(`✓ Knowledge base initialized: ${name}`));\n console.log(\"\");\n console.log(chalk.dim(\"Created:\"));\n console.log(chalk.dim(\" .kb/config.toml — project manifest\"));\n console.log(chalk.dim(\" .kb/schema.md — LLM instructions\"));\n console.log(chalk.dim(\" sources/ — raw source materials\"));\n console.log(chalk.dim(\" wiki/_index.md — wiki root\"));\n console.log(chalk.dim(\" log.md — activity log\"));\n console.log(\"\");\n console.log(\n chalk.cyan(`Run ${chalk.bold(\"kb ingest <source>\")} to add content.`),\n );\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { mkdir, writeFile, access, rm } from \"node:fs/promises\";\nimport { join, basename } from \"node:path\";\nimport TOML from \"@iarna/toml\";\n\nexport interface InitOptions {\n name: string;\n directory: string; // absolute path where to init\n}\n\nfunction resolveProjectName(options: InitOptions): string {\n return options.name || basename(options.directory);\n}\n\nfunction buildConfigToml(projectName: string): string {\n const config = {\n project: {\n name: projectName,\n version: \"0.1.0\",\n },\n directories: {\n sources: \"sources\",\n wiki: \"wiki\",\n },\n llm: {\n provider: \"anthropic\",\n model: \"claude-sonnet-4-20250514\",\n },\n };\n\n const tomlStr = TOML.stringify(config as TOML.JsonMap);\n return (\n tomlStr +\n '\\n[dependencies]\\n# shared-glossary = { path = \"../shared-glossary\" }\\n'\n );\n}\n\nfunction buildSchemaMd(): string {\n return `# KB Schema — LLM Instructions\n\nThis file defines the conventions for this knowledge base. The \\`kb\\` CLI and any\nLLM operating on this wiki MUST follow these rules.\n\n---\n\n## Wiki Structure Conventions\n\n- All pages live under the \\`wiki/\\` directory.\n- \\`wiki/_index.md\\` is the wiki root and serves as a table of contents.\n- Sub-topics may be organised into sub-directories: \\`wiki/<topic>/_index.md\\`.\n- File names use kebab-case, e.g. \\`wiki/authentication-flow.md\\`.\n- Every page must have a valid YAML frontmatter block.\n\n---\n\n## Frontmatter Schema\n\nEvery wiki page must begin with a YAML frontmatter block:\n\n\\`\\`\\`yaml\n---\ntitle: <Human-readable page title>\ntags: [tag1, tag2] # optional; array of lowercase strings\ncreated: <ISO 8601 date> # e.g. 2026-04-05\nupdated: <ISO 8601 date> # updated whenever content changes\nsource: <path or URL> # optional; original source material\n---\n\\`\\`\\`\n\nRequired fields: \\`title\\`, \\`created\\`.\n\n---\n\n## Page Templates\n\n### Entity Page\nUse for: people, systems, services, tools.\n\n\\`\\`\\`markdown\n---\ntitle: <Entity Name>\ntags: [entity]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# <Entity Name>\n\n**Type**: <system | person | service | tool>\n\n## Overview\n\n<One-paragraph description.>\n\n## Key Attributes\n\n- **Attribute**: value\n\n## Related\n\n- [[related-page]]\n\\`\\`\\`\n\n### Concept Page\nUse for: ideas, patterns, terminology.\n\n\\`\\`\\`markdown\n---\ntitle: <Concept Name>\ntags: [concept]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# <Concept Name>\n\n## Definition\n\n<Clear definition in 1-3 sentences.>\n\n## Context\n\n<When and why this concept matters in the project.>\n\n## See Also\n\n- [[related-concept]]\n\\`\\`\\`\n\n### Source Summary Page\nUse for: summarised source material (docs, papers, meetings).\n\n\\`\\`\\`markdown\n---\ntitle: Summary — <Source Title>\ntags: [source-summary]\ncreated: <ISO date>\nsource: <path or URL>\n---\n\n# Summary — <Source Title>\n\n## Key Points\n\n- Point one\n- Point two\n\n## Decisions / Implications\n\n<What this source means for the project.>\n\n## Raw Source\n\nSee \\`sources/<filename>\\`.\n\\`\\`\\`\n\n### Comparison Page\nUse for: side-by-side evaluation of options.\n\n\\`\\`\\`markdown\n---\ntitle: Comparison — <Topic>\ntags: [comparison]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# Comparison — <Topic>\n\n| Criterion | Option A | Option B |\n|-----------|----------|----------|\n| ... | ... | ... |\n\n## Recommendation\n\n<Which option and why.>\n\\`\\`\\`\n\n---\n\n## Wikilink Conventions\n\n- Basic link: \\`[[page-name]]\\` — links to \\`wiki/page-name.md\\`.\n- Display text: \\`[[page-name|display text]]\\` — renders as \"display text\".\n- Cross-directory: \\`[[topic/sub-page]]\\`.\n- All wikilink targets must be lowercase kebab-case matching the file name without \\`.md\\`.\n\n---\n\n## Ingest Workflow\n\n1. Place the source file in \\`sources/\\` (PDF, Markdown, plain text, etc.).\n2. Run \\`kb ingest sources/<filename>\\`.\n3. The CLI reads the file, calls the configured LLM, and generates a source-summary\n page in \\`wiki/\\`.\n4. The summary page is linked from \\`wiki/_index.md\\` under **Sources**.\n5. An entry is appended to \\`log.md\\`.\n\n---\n\n## Query Workflow\n\n1. Run \\`kb query \"<natural-language question>\"\\`.\n2. The CLI searches the wiki index for relevant pages.\n3. Relevant page content is assembled into a prompt context.\n4. The LLM answers the question, citing wikilinks.\n5. The answer is printed to stdout. Nothing is written to disk unless \\`--save\\` is passed.\n\n---\n\n## Lint Workflow\n\nRun \\`kb lint\\` to check for:\n\n- Pages missing required frontmatter fields (\\`title\\`, \\`created\\`).\n- Broken wikilinks (targets that don't resolve to an existing page).\n- Pages not reachable from \\`wiki/_index.md\\`.\n- Duplicate page titles across the wiki.\n- Frontmatter fields with invalid types or formats.\n\nLint exits with code 0 on success, 1 if errors are found.\n`;\n}\n\nfunction buildIndexMd(projectName: string, isoDate: string): string {\n return `---\ntitle: ${projectName} Knowledge Base\ncreated: ${isoDate}\n---\n\n# ${projectName} Knowledge Base\n\n> This wiki is maintained by the \\`kb\\` CLI tool.\n\n## Pages\n\n(No pages yet. Use \\`kb ingest <source>\\` to add content.)\n\n## Sources\n\n(No sources yet.)\n`;\n}\n\nfunction buildLogMd(projectName: string, isoDate: string): string {\n return `# Activity Log\n\n## ${isoDate} — Project initialized\n\nProject \\`${projectName}\\` initialized.\n`;\n}\n\nasync function kbDirExists(directory: string): Promise<boolean> {\n try {\n await access(join(directory, \".kb\"));\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function initProject(options: InitOptions): Promise<void> {\n const projectName = resolveProjectName(options);\n const { directory } = options;\n\n if (await kbDirExists(directory)) {\n throw new Error(\n `Knowledge base already initialized: .kb/ already exists in ${directory}`,\n );\n }\n\n const isoDate = new Date().toISOString().split(\"T\")[0]!;\n\n try {\n await Promise.all([\n mkdir(join(directory, \".kb\"), { recursive: true }),\n mkdir(join(directory, \"sources\"), { recursive: true }),\n mkdir(join(directory, \"wiki\"), { recursive: true }),\n ]);\n\n await Promise.all([\n writeFile(\n join(directory, \".kb\", \"config.toml\"),\n buildConfigToml(projectName),\n \"utf8\",\n ),\n writeFile(join(directory, \".kb\", \"schema.md\"), buildSchemaMd(), \"utf8\"),\n writeFile(join(directory, \"sources\", \".gitkeep\"), \"\", \"utf8\"),\n writeFile(\n join(directory, \"wiki\", \"_index.md\"),\n buildIndexMd(projectName, isoDate),\n \"utf8\",\n ),\n writeFile(\n join(directory, \"log.md\"),\n buildLogMd(projectName, isoDate),\n \"utf8\",\n ),\n ]);\n } catch (error) {\n // Rollback: remove .kb/ if it was created\n await rm(join(directory, \".kb\"), { recursive: true, force: true });\n throw error;\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport TOML from \"@iarna/toml\";\n\nexport interface KbConfig {\n project: {\n name: string;\n version: string;\n };\n directories: {\n sources: string;\n wiki: string;\n };\n llm: {\n provider: \"anthropic\" | \"openai\" | \"ollama\";\n model: string;\n };\n dependencies: Record<\n string,\n { path?: string; git?: string; branch?: string; mode?: string }\n >;\n}\n\nconst VALID_PROVIDERS = [\"anthropic\", \"openai\", \"ollama\"] as const;\n\nfunction requireSafeRelativePath(val: string, field: string): void {\n if (val.startsWith(\"/\") || val.split(\"/\").includes(\"..\")) {\n throw new Error(\n `Invalid config: ${field} must be a safe relative path, got \"${val}\"`,\n );\n }\n}\n\nfunction requireString(\n obj: Record<string, unknown>,\n key: string,\n context: string,\n): string {\n const val = obj[key];\n if (typeof val !== \"string\" || val.trim() === \"\") {\n throw new Error(\n `Invalid config: missing required field \"${context}.${key}\"`,\n );\n }\n return val;\n}\n\nfunction requireSection(\n obj: Record<string, unknown>,\n key: string,\n): Record<string, unknown> {\n const val = obj[key];\n if (\n val === undefined ||\n val === null ||\n typeof val !== \"object\" ||\n Array.isArray(val)\n ) {\n throw new Error(`Invalid config: missing required section \"[${key}]\"`);\n }\n return val as Record<string, unknown>;\n}\n\nexport async function parseConfig(configPath: string): Promise<KbConfig> {\n let raw: string;\n try {\n raw = await readFile(configPath, \"utf8\");\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Config file not found: ${configPath}\\n${message}`);\n }\n\n let parsed: Record<string, unknown>;\n try {\n parsed = TOML.parse(raw) as Record<string, unknown>;\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Invalid TOML in config file ${configPath}: ${message}`);\n }\n\n const project = requireSection(parsed, \"project\");\n const name = requireString(project, \"name\", \"project\");\n const version = requireString(project, \"version\", \"project\");\n\n const directories = requireSection(parsed, \"directories\");\n const sources = requireString(directories, \"sources\", \"directories\");\n requireSafeRelativePath(sources, \"directories.sources\");\n const wiki = requireString(directories, \"wiki\", \"directories\");\n requireSafeRelativePath(wiki, \"directories.wiki\");\n\n const llm = requireSection(parsed, \"llm\");\n const providerRaw = requireString(llm, \"provider\", \"llm\");\n if (!(VALID_PROVIDERS as readonly string[]).includes(providerRaw)) {\n throw new Error(\n `Invalid config: llm.provider must be one of ${VALID_PROVIDERS.join(\", \")}, got \"${providerRaw}\"`,\n );\n }\n const provider = providerRaw as KbConfig[\"llm\"][\"provider\"];\n const model = requireString(llm, \"model\", \"llm\");\n\n const rawDeps = parsed[\"dependencies\"];\n const dependencies: KbConfig[\"dependencies\"] = {};\n if (\n rawDeps !== undefined &&\n rawDeps !== null &&\n typeof rawDeps === \"object\" &&\n !Array.isArray(rawDeps)\n ) {\n for (const [depKey, depVal] of Object.entries(\n rawDeps as Record<string, unknown>,\n )) {\n if (\n typeof depVal === \"object\" &&\n depVal !== null &&\n !Array.isArray(depVal)\n ) {\n const dep = depVal as Record<string, unknown>;\n dependencies[depKey] = {\n ...(typeof dep[\"path\"] === \"string\" ? { path: dep[\"path\"] } : {}),\n ...(typeof dep[\"git\"] === \"string\" ? { git: dep[\"git\"] } : {}),\n ...(typeof dep[\"branch\"] === \"string\"\n ? { branch: dep[\"branch\"] }\n : {}),\n ...(typeof dep[\"mode\"] === \"string\" ? { mode: dep[\"mode\"] } : {}),\n };\n }\n }\n }\n\n return {\n project: { name, version },\n directories: { sources, wiki },\n llm: { provider, model },\n dependencies,\n };\n}\n","import { access } from \"node:fs/promises\";\nimport { join, dirname, resolve } from \"node:path\";\nimport { parseConfig, type KbConfig } from \"./config.js\";\n\nexport interface Project {\n name: string;\n root: string;\n kbDir: string;\n sourcesDir: string;\n wikiDir: string;\n config: KbConfig;\n}\n\nasync function hasKbDir(dir: string): Promise<boolean> {\n try {\n await access(join(dir, \".kb\", \"config.toml\"));\n return true;\n } catch {\n return false;\n }\n}\n\nasync function findProjectRoot(startDir: string): Promise<string | null> {\n let current = resolve(startDir);\n\n while (true) {\n if (await hasKbDir(current)) {\n return current;\n }\n const parent = dirname(current);\n if (parent === current) {\n // Reached filesystem root\n return null;\n }\n current = parent;\n }\n}\n\nexport async function loadProject(startDir: string): Promise<Project> {\n const root = await findProjectRoot(startDir);\n if (root === null) {\n throw new Error(\n `No kb project found. Run \"kb init\" to initialize a knowledge base in the current directory.`,\n );\n }\n\n const kbDir = join(root, \".kb\");\n const configPath = join(kbDir, \"config.toml\");\n const config = await parseConfig(configPath);\n\n return {\n name: config.project.name,\n root,\n kbDir,\n sourcesDir: join(root, config.directories.sources),\n wikiDir: join(root, config.directories.wiki),\n config,\n };\n}\n\nexport async function tryLoadProject(\n startDir: string,\n): Promise<Project | null> {\n try {\n return await loadProject(startDir);\n } catch (err: unknown) {\n if (err instanceof Error && /no kb project found/i.test(err.message)) {\n return null;\n }\n throw err;\n }\n}\n","import Database from \"better-sqlite3\";\nimport { join } from \"node:path\";\nimport type { Project } from \"./project.js\";\n\nconst SCHEMA_SQL = `\nCREATE VIRTUAL TABLE IF NOT EXISTS pages USING fts5(\n path,\n title,\n content,\n tags,\n project,\n tokenize='porter unicode61'\n);\n\nCREATE TABLE IF NOT EXISTS page_meta (\n path TEXT PRIMARY KEY,\n sha256 TEXT NOT NULL,\n mtime INTEGER NOT NULL,\n word_count INTEGER NOT NULL DEFAULT 0,\n frontmatter TEXT NOT NULL DEFAULT '{}',\n outgoing_links TEXT NOT NULL DEFAULT '[]',\n updated_at INTEGER NOT NULL\n);\n`;\n\nexport function openDb(project: Project): Database.Database {\n const dbPath = join(project.kbDir, \"index.db\");\n const db = new Database(dbPath);\n db.pragma(\"journal_mode = WAL\");\n db.exec(SCHEMA_SQL);\n return db;\n}\n\nexport function closeDb(db: Database.Database): void {\n db.close();\n}\n","import { readFile } from \"node:fs/promises\";\nimport matter from \"gray-matter\";\n\nexport interface ParsedPage {\n path: string;\n title: string;\n content: string;\n tags: string;\n frontmatter: Record<string, unknown>;\n outgoingLinks: string[];\n wordCount: number;\n}\n\nconst WIKILINK_RE = /\\[\\[([^\\]|]+)(?:\\|[^\\]]+)?\\]\\]/g;\nconst H1_RE = /^#\\s+(.+)$/m;\n\nfunction extractTitle(\n fm: Record<string, unknown>,\n content: string,\n relativePath: string,\n): string {\n if (typeof fm[\"title\"] === \"string\" && fm[\"title\"].trim() !== \"\") {\n return fm[\"title\"].trim();\n }\n const h1Match = H1_RE.exec(content);\n if (h1Match) {\n return h1Match[1]!.trim();\n }\n // Fallback: use filename without extension\n const filename = relativePath.split(\"/\").pop() ?? relativePath;\n return filename.replace(/\\.md$/i, \"\");\n}\n\nfunction extractTags(fm: Record<string, unknown>): string {\n const tags = fm[\"tags\"];\n if (!Array.isArray(tags)) return \"\";\n return tags.filter((t): t is string => typeof t === \"string\").join(\",\");\n}\n\nfunction extractWikiLinks(content: string): string[] {\n const links: string[] = [];\n let match: RegExpExecArray | null;\n const re = new RegExp(WIKILINK_RE.source, \"g\");\n while ((match = re.exec(content)) !== null) {\n links.push(match[1]!.trim());\n }\n return links;\n}\n\nfunction countWords(text: string): number {\n const trimmed = text.trim();\n if (trimmed === \"\") return 0;\n return trimmed.split(/\\s+/).length;\n}\n\nexport async function parsePage(\n filePath: string,\n relativePath: string,\n rawContent?: string,\n): Promise<ParsedPage> {\n const raw = rawContent ?? (await readFile(filePath, \"utf8\"));\n const parsed = matter(raw);\n const fm = parsed.data as Record<string, unknown>;\n const content = parsed.content;\n\n const title = extractTitle(fm, content, relativePath);\n const tags = extractTags(fm);\n const outgoingLinks = extractWikiLinks(content);\n const wordCount = countWords(content);\n\n return {\n path: relativePath,\n title,\n content,\n tags,\n frontmatter: fm,\n outgoingLinks,\n wordCount,\n };\n}\n","import { createHash } from \"node:crypto\";\nimport { readFile, stat, readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport Database from \"better-sqlite3\";\nimport type { Project } from \"./project.js\";\nimport { parsePage } from \"./markdown.js\";\nimport { openDb, closeDb } from \"./db.js\";\n\nexport interface IndexStats {\n indexed: number;\n skipped: number;\n deleted: number;\n errors: number;\n}\n\nasync function collectMdFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile() && e.name.endsWith(\".md\"))\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\nfunction sha256(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n\ninterface PageMetaRow {\n sha256: string;\n}\n\ninterface UpsertStmts {\n deletePages: Database.Statement;\n insertPage: Database.Statement;\n upsertMeta: Database.Statement;\n}\n\nfunction upsertParsedPage(\n stmts: UpsertStmts,\n project: Project,\n page: Awaited<ReturnType<typeof parsePage>>,\n hash: string,\n mtime: number,\n): void {\n stmts.deletePages.run(page.path);\n stmts.insertPage.run(\n page.path,\n page.title,\n page.content,\n page.tags,\n project.name,\n );\n stmts.upsertMeta.run(\n page.path,\n hash,\n mtime,\n page.wordCount,\n JSON.stringify(page.frontmatter),\n JSON.stringify(page.outgoingLinks),\n Date.now(),\n );\n}\n\nexport async function indexProject(\n project: Project,\n rebuild = false,\n): Promise<IndexStats> {\n const db = openDb(project);\n try {\n if (rebuild) {\n db.exec(\"DELETE FROM pages; DELETE FROM page_meta;\");\n }\n\n const files = await collectMdFiles(project.wikiDir);\n const stats: IndexStats = { indexed: 0, skipped: 0, deleted: 0, errors: 0 };\n\n const getMetaStmt = db.prepare<[string], PageMetaRow>(\n \"SELECT sha256 FROM page_meta WHERE path = ?\",\n );\n\n const upsertStmts: UpsertStmts = {\n deletePages: db.prepare(\"DELETE FROM pages WHERE path = ?\"),\n insertPage: db.prepare(\n \"INSERT INTO pages(path, title, content, tags, project) VALUES (?, ?, ?, ?, ?)\",\n ),\n upsertMeta: db.prepare(`\n INSERT INTO page_meta(path, sha256, mtime, word_count, frontmatter, outgoing_links, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(path) DO UPDATE SET\n sha256 = excluded.sha256,\n mtime = excluded.mtime,\n word_count = excluded.word_count,\n frontmatter = excluded.frontmatter,\n outgoing_links = excluded.outgoing_links,\n updated_at = excluded.updated_at\n `),\n };\n\n const deleteStalePages = db.prepare(\"DELETE FROM pages WHERE path = ?\");\n const deleteStaleMeta = db.prepare(\"DELETE FROM page_meta WHERE path = ?\");\n const listMetaStmt = db.prepare<[], { path: string }>(\n \"SELECT path FROM page_meta\",\n );\n\n const processFile = db.transaction(\n (\n page: Awaited<ReturnType<typeof parsePage>>,\n hash: string,\n mtime: number,\n ) => {\n upsertParsedPage(upsertStmts, project, page, hash, mtime);\n },\n );\n\n const onDiskPaths = new Set<string>();\n\n for (const absPath of files) {\n const relPath = relative(project.root, absPath);\n onDiskPaths.add(relPath);\n\n let raw: string;\n try {\n raw = await readFile(absPath, \"utf8\");\n } catch (err) {\n stats.errors++;\n continue;\n }\n\n const hash = sha256(raw);\n const existing = getMetaStmt.get(relPath);\n\n if (existing && existing.sha256 === hash) {\n stats.skipped++;\n continue;\n }\n\n let fileStat: Awaited<ReturnType<typeof stat>>;\n try {\n fileStat = await stat(absPath);\n } catch {\n stats.errors++;\n continue;\n }\n\n let page: Awaited<ReturnType<typeof parsePage>>;\n try {\n page = await parsePage(absPath, relPath, raw);\n } catch {\n stats.errors++;\n continue;\n }\n\n try {\n processFile(page, hash, Math.floor(fileStat.mtimeMs));\n stats.indexed++;\n } catch {\n stats.errors++;\n }\n }\n\n // Remove entries for deleted files\n const allMetaPaths = listMetaStmt.all().map((r) => r.path);\n\n const stalePaths = allMetaPaths.filter((p) => !onDiskPaths.has(p));\n\n const deleteStale = db.transaction((paths: string[]) => {\n for (const p of paths) {\n deleteStalePages.run(p);\n deleteStaleMeta.run(p);\n }\n });\n\n deleteStale(stalePaths);\n stats.deleted += stalePaths.length;\n\n return stats;\n } finally {\n closeDb(db);\n }\n}\n","import Database from \"better-sqlite3\";\n\nexport interface SearchResult {\n rank: number;\n path: string;\n title: string;\n snippet: string;\n tags: string[];\n}\n\nexport interface SearchOptions {\n limit?: number;\n tags?: string[];\n}\n\ninterface FtsRow {\n path: string;\n title: string;\n tags: string;\n rank: number;\n snippet: string;\n}\n\nfunction sanitizeFtsQuery(query: string): string {\n // Split into tokens, quote each one to escape special FTS5 chars.\n // Using individual quoted tokens (AND logic) instead of a single phrase\n // so non-adjacent words still match.\n const tokens = query\n .trim()\n .split(/\\s+/)\n .filter((t) => t.length > 0);\n if (tokens.length === 0) return '\"\"';\n return tokens.map((t) => `\"${t.replace(/\"/g, '\"\"')}\"`).join(\" \");\n}\n\nfunction parseTags(raw: string): string[] {\n if (!raw || raw.trim() === \"\") return [];\n return raw\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0);\n}\n\nexport function searchWiki(\n db: Database.Database,\n query: string,\n projectName: string,\n options?: SearchOptions,\n): SearchResult[] {\n if (!query || query.trim() === \"\") {\n return [];\n }\n\n const limit = options?.limit ?? 10;\n const ftsQuery = sanitizeFtsQuery(query.trim());\n\n // Build dynamic tag WHERE clauses so filtering happens in SQL\n const filterTags = options?.tags?.length\n ? options.tags\n .map((t) => t.trim().toLowerCase())\n .filter((t) => t.length > 0)\n : [];\n\n const tagClauses = filterTags.map(() => \"AND lower(tags) LIKE ?\").join(\" \");\n const tagParams = filterTags.map((t) => `%${t}%`);\n\n const stmt = db.prepare<[string, string, ...string[], number], FtsRow>(`\n SELECT path, title, tags, bm25(pages) as rank,\n snippet(pages, 2, '', '', '...', 8) as snippet\n FROM pages\n WHERE pages MATCH ? AND project = ?\n ${tagClauses}\n ORDER BY rank\n LIMIT ?\n `);\n\n const rows = stmt.all(ftsQuery, projectName, ...tagParams, limit);\n\n const results: SearchResult[] = rows.map((row) => ({\n rank: row.rank,\n path: row.path,\n title: row.title,\n snippet: row.snippet,\n tags: parseTags(row.tags),\n }));\n\n return results;\n}\n","import { readFile } from \"node:fs/promises\";\nimport { basename, extname } from \"node:path\";\n\nexport type SourceType = \"markdown\" | \"text\" | \"pdf\" | \"url\";\n\nexport interface SourceContent {\n type: SourceType;\n originalPath: string;\n content: string;\n filename: string;\n}\n\nfunction sanitizeFilename(name: string): string {\n return name.toLowerCase().replace(/\\s/g, \"-\");\n}\n\nfunction detectType(sourcePath: string): SourceType {\n if (sourcePath.startsWith(\"http://\") || sourcePath.startsWith(\"https://\")) {\n return \"url\";\n }\n const ext = extname(sourcePath).toLowerCase();\n if (ext === \".pdf\") return \"pdf\";\n if (ext === \".md\") return \"markdown\";\n return \"text\";\n}\n\nfunction filenameFromUrl(url: string): string {\n try {\n const parsed = new URL(url);\n const parts = parsed.pathname.split(\"/\").filter(Boolean);\n const last = parts[parts.length - 1];\n const pagePart = last\n ? last.includes(\".\")\n ? last\n : `${last}.html`\n : \"index.html\";\n return sanitizeFilename(`${parsed.hostname}-${pagePart}`);\n } catch {\n return \"url-content.html\";\n }\n}\n\nfunction stripHtml(html: string): string {\n // Remove script and style blocks entirely\n let text = html.replace(/<script[\\s\\S]*?<\\/script>/gi, \" \");\n text = text.replace(/<style[\\s\\S]*?<\\/style>/gi, \" \");\n // Strip remaining tags\n text = text.replace(/<[^>]+>/g, \" \");\n // Decode common HTML entities\n text = text\n .replace(/&amp;/gi, \"&\")\n .replace(/&lt;/gi, \"<\")\n .replace(/&gt;/gi, \">\")\n .replace(/&quot;/gi, '\"')\n .replace(/&#39;/gi, \"'\")\n .replace(/&nbsp;/gi, \" \");\n // Collapse whitespace\n text = text.replace(/\\s+/g, \" \").trim();\n return text;\n}\n\nasync function readPdf(filePath: string): Promise<string> {\n // Dynamic import to avoid issues if pdf-parse not available in test env\n const pdfParse = await import(\"pdf-parse\").then((m) => m.default ?? m);\n const buffer = await readFile(filePath);\n const data = await pdfParse(buffer);\n return data.text;\n}\n\nfunction isPrivateUrl(url: string): boolean {\n try {\n const { hostname } = new URL(url);\n return (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname.startsWith(\"169.254.\") || // link-local\n hostname.startsWith(\"10.\") ||\n hostname.startsWith(\"192.168.\") ||\n /^172\\.(1[6-9]|2\\d|3[01])\\./.test(hostname)\n );\n } catch {\n return false;\n }\n}\n\nasync function fetchUrl(url: string): Promise<string> {\n if (isPrivateUrl(url)) {\n throw new Error(`Fetching private/localhost URLs is not allowed: ${url}`);\n }\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch URL ${url}: HTTP ${response.status} ${response.statusText}`,\n );\n }\n const html = await response.text();\n return stripHtml(html);\n}\n\nexport async function readSource(sourcePath: string): Promise<SourceContent> {\n const type = detectType(sourcePath);\n\n if (type === \"url\") {\n const content = await fetchUrl(sourcePath);\n const filename = filenameFromUrl(sourcePath);\n return { type, originalPath: sourcePath, content, filename };\n }\n\n if (type === \"pdf\") {\n const content = await readPdf(sourcePath);\n const raw = basename(sourcePath);\n const filename = sanitizeFilename(raw);\n return { type, originalPath: sourcePath, content, filename };\n }\n\n // markdown or text\n const content = await readFile(sourcePath, \"utf8\");\n const raw = basename(sourcePath);\n const filename = sanitizeFilename(raw);\n return { type, originalPath: sourcePath, content, filename };\n}\n","import type { KbConfig } from \"./config.js\";\n\nexport interface LlmMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface LlmAdapter {\n complete(messages: LlmMessage[], systemPrompt: string): Promise<string>;\n}\n\nfunction createAnthropicAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const apiKey = process.env[\"ANTHROPIC_API_KEY\"];\n if (!apiKey) {\n throw new Error(\"ANTHROPIC_API_KEY environment variable is not set\");\n }\n const Anthropic = await import(\"@anthropic-ai/sdk\").then(\n (m) => m.default ?? m,\n );\n const client = new Anthropic({ apiKey });\n const response = await client.messages.create({\n model,\n max_tokens: 8192,\n system: systemPrompt,\n messages: messages.map((m) => ({\n role: m.role,\n content: m.content,\n })),\n });\n const block = response.content[0];\n if (!block || block.type !== \"text\") {\n throw new Error(\"Anthropic returned no text content\");\n }\n return block.text;\n },\n };\n}\n\nfunction createOpenAiAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const apiKey = process.env[\"OPENAI_API_KEY\"];\n if (!apiKey) {\n throw new Error(\"OPENAI_API_KEY environment variable is not set\");\n }\n const body = {\n model,\n messages: [\n { role: \"system\", content: systemPrompt },\n ...messages.map((m) => ({ role: m.role, content: m.content })),\n ],\n };\n const response = await fetch(\n \"https://api.openai.com/v1/chat/completions\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(body),\n },\n );\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`OpenAI API error: HTTP ${response.status} — ${text}`);\n }\n const data = (await response.json()) as {\n choices: Array<{ message: { content: string } }>;\n };\n const content = data.choices[0]?.message?.content;\n if (!content) {\n throw new Error(\"OpenAI returned no content\");\n }\n return content;\n },\n };\n}\n\nfunction createOllamaAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const baseUrl =\n process.env[\"OLLAMA_BASE_URL\"] ?? \"http://localhost:11434\";\n const body = {\n model,\n messages: [\n { role: \"system\", content: systemPrompt },\n ...messages.map((m) => ({ role: m.role, content: m.content })),\n ],\n stream: false,\n };\n const response = await fetch(`${baseUrl}/api/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Ollama API error: HTTP ${response.status} — ${text}`);\n }\n const data = (await response.json()) as {\n message?: { content: string };\n };\n const content = data.message?.content;\n if (!content) {\n throw new Error(\"Ollama returned no content\");\n }\n return content;\n },\n };\n}\n\nexport function createLlmAdapter(config: KbConfig): LlmAdapter {\n const { provider, model } = config.llm;\n switch (provider) {\n case \"anthropic\":\n return createAnthropicAdapter(model);\n case \"openai\":\n return createOpenAiAdapter(model);\n case \"ollama\":\n return createOllamaAdapter(model);\n default: {\n const _exhaustive: never = provider;\n throw new Error(`Unsupported LLM provider: ${String(_exhaustive)}`);\n }\n }\n}\n","import { readFile, writeFile, mkdir, appendFile } from \"node:fs/promises\";\nimport { join, dirname, resolve } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport type { LlmAdapter } from \"./llm.js\";\nimport type { IngestResult } from \"./ingest-types.js\";\nimport { readSource } from \"./source-reader.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport interface IngestOptions {\n apply?: boolean;\n batch?: boolean;\n}\n\nexport interface IngestPlan {\n result: IngestResult;\n sourceFile: string;\n dryRun: boolean;\n}\n\nconst SYSTEM_PROMPT = `You are an AI assistant maintaining a knowledge base wiki.\nYou will be given a new source document and the current state of the wiki.\nYour task is to integrate the new knowledge into the wiki.\n\nReturn ONLY a JSON object matching this exact schema (no markdown fences):\n{\n \"summary\": { \"path\": \"wiki/sources/<filename>-summary.md\", \"content\": \"...\" },\n \"updates\": [{ \"path\": \"...\", \"content\": \"...\", \"reason\": \"...\" }],\n \"newPages\": [{ \"path\": \"...\", \"content\": \"...\", \"reason\": \"...\" }],\n \"indexUpdate\": \"...\",\n \"logEntry\": \"...\"\n}`;\n\nfunction assertWithinRoot(absPath: string, root: string): void {\n const resolvedPath = resolve(absPath);\n const resolvedRoot = resolve(root) + \"/\";\n if (!resolvedPath.startsWith(resolvedRoot)) {\n throw new Error(\n `Unsafe path rejected: \"${absPath}\" is outside project root`,\n );\n }\n}\n\nasync function readFileSafe(filePath: string): Promise<string> {\n try {\n return await readFile(filePath, \"utf8\");\n } catch {\n return \"\";\n }\n}\n\nfunction parseIngestResult(raw: string): IngestResult {\n const cleaned = raw\n .replace(/^```(?:json)?\\s*/i, \"\")\n .replace(/\\s*```\\s*$/i, \"\")\n .trim();\n let parsed: unknown;\n try {\n parsed = JSON.parse(cleaned);\n } catch (err) {\n throw new Error(\n `Invalid LLM response: could not parse JSON. Raw response: ${cleaned.slice(0, 200)}`,\n );\n }\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"Invalid LLM response: expected a JSON object\");\n }\n\n const obj = parsed as Record<string, unknown>;\n\n if (\n !obj[\"summary\"] ||\n typeof obj[\"summary\"] !== \"object\" ||\n Array.isArray(obj[\"summary\"])\n ) {\n throw new Error('Invalid LLM response: missing \"summary\" object');\n }\n\n const summary = obj[\"summary\"] as Record<string, unknown>;\n if (\n typeof summary[\"path\"] !== \"string\" ||\n typeof summary[\"content\"] !== \"string\"\n ) {\n throw new Error(\n 'Invalid LLM response: \"summary\" must have \"path\" and \"content\" strings',\n );\n }\n\n if (!Array.isArray(obj[\"updates\"])) {\n throw new Error('Invalid LLM response: \"updates\" must be an array');\n }\n\n if (!Array.isArray(obj[\"newPages\"])) {\n throw new Error('Invalid LLM response: \"newPages\" must be an array');\n }\n\n if (typeof obj[\"indexUpdate\"] !== \"string\") {\n throw new Error('Invalid LLM response: \"indexUpdate\" must be a string');\n }\n\n if (typeof obj[\"logEntry\"] !== \"string\") {\n throw new Error('Invalid LLM response: \"logEntry\" must be a string');\n }\n\n const updates = (obj[\"updates\"] as unknown[]).map((u, i) => {\n if (typeof u !== \"object\" || u === null || Array.isArray(u)) {\n throw new Error(`Invalid LLM response: updates[${i}] must be an object`);\n }\n const update = u as Record<string, unknown>;\n if (\n typeof update[\"path\"] !== \"string\" ||\n typeof update[\"content\"] !== \"string\" ||\n typeof update[\"reason\"] !== \"string\"\n ) {\n throw new Error(\n `Invalid LLM response: updates[${i}] must have path, content, and reason strings`,\n );\n }\n return {\n path: update[\"path\"],\n content: update[\"content\"],\n reason: update[\"reason\"],\n };\n });\n\n const newPages = (obj[\"newPages\"] as unknown[]).map((p, i) => {\n if (typeof p !== \"object\" || p === null || Array.isArray(p)) {\n throw new Error(`Invalid LLM response: newPages[${i}] must be an object`);\n }\n const page = p as Record<string, unknown>;\n if (\n typeof page[\"path\"] !== \"string\" ||\n typeof page[\"content\"] !== \"string\" ||\n typeof page[\"reason\"] !== \"string\"\n ) {\n throw new Error(\n `Invalid LLM response: newPages[${i}] must have path, content, and reason strings`,\n );\n }\n return {\n path: page[\"path\"],\n content: page[\"content\"],\n reason: page[\"reason\"],\n };\n });\n\n return {\n summary: { path: summary[\"path\"], content: summary[\"content\"] },\n updates,\n newPages,\n indexUpdate: obj[\"indexUpdate\"] as string,\n logEntry: obj[\"logEntry\"] as string,\n };\n}\n\nasync function applyIngestResult(\n project: Project,\n result: IngestResult,\n sourceContent: string,\n sourceFilename: string,\n): Promise<void> {\n // Write summary\n const summaryAbsPath = join(project.root, result.summary.path);\n assertWithinRoot(summaryAbsPath, project.root);\n await mkdir(dirname(summaryAbsPath), { recursive: true });\n await writeFile(summaryAbsPath, result.summary.content, \"utf8\");\n\n // Write updated pages\n for (const update of result.updates) {\n const absPath = join(project.root, update.path);\n assertWithinRoot(absPath, project.root);\n await mkdir(dirname(absPath), { recursive: true });\n await writeFile(absPath, update.content, \"utf8\");\n }\n\n // Write new pages\n for (const newPage of result.newPages) {\n const absPath = join(project.root, newPage.path);\n assertWithinRoot(absPath, project.root);\n await mkdir(dirname(absPath), { recursive: true });\n await writeFile(absPath, newPage.content, \"utf8\");\n }\n\n // Update _index.md\n const indexPath = join(project.wikiDir, \"_index.md\");\n await writeFile(indexPath, result.indexUpdate, \"utf8\");\n\n // Write source file to sources directory\n const sourceDestPath = join(project.sourcesDir, sourceFilename);\n await mkdir(project.sourcesDir, { recursive: true });\n await writeFile(sourceDestPath, sourceContent, \"utf8\");\n\n // Append to log.md\n const logPath = join(project.wikiDir, \"log.md\");\n const timestamp = new Date().toISOString().split(\"T\")[0];\n const logLine = `- ${timestamp}: ${result.logEntry}\\n`;\n await appendFile(logPath, logLine, \"utf8\");\n\n // Re-index\n await indexProject(project);\n}\n\nexport async function ingestSource(\n project: Project,\n sourcePath: string,\n llm: LlmAdapter,\n options?: IngestOptions,\n): Promise<IngestPlan> {\n const apply = options?.apply ?? false;\n\n // 1. Read source content\n const sourceContent = await readSource(sourcePath);\n\n // 2. Read current wiki index\n const indexPath = join(project.wikiDir, \"_index.md\");\n const currentIndex = await readFileSafe(indexPath);\n\n // 3. Read schema\n const schemaPath = join(project.kbDir, \"schema.md\");\n const schema = await readFileSafe(schemaPath);\n\n // 4. Build user message\n const userMessage = `## Wiki Schema\n${schema}\n\n## Current Wiki Index\n${currentIndex}\n\n## New Source: ${sourceContent.filename}\n${sourceContent.content}\n\nIntegrate this source into the wiki following the schema above.`;\n\n // 5. Call LLM\n const raw = await llm.complete(\n [{ role: \"user\", content: userMessage }],\n SYSTEM_PROMPT,\n );\n\n // 6. Parse response\n const result = parseIngestResult(raw);\n\n // 7. Apply if requested\n if (apply) {\n await applyIngestResult(\n project,\n result,\n sourceContent.content,\n sourceContent.filename,\n );\n }\n\n const sourceFile = join(project.sourcesDir, sourceContent.filename);\n\n return {\n result,\n sourceFile,\n dryRun: !apply,\n };\n}\n","import { readFile, writeFile, mkdir, appendFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join, dirname, resolve } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport type { LlmAdapter } from \"./llm.js\";\nimport { openDb, closeDb } from \"./db.js\";\nimport { searchWiki } from \"./search.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport interface QueryResult {\n answer: string;\n sources: string[];\n}\n\nexport interface QueryOptions {\n save?: string;\n}\n\nconst SYSTEM_PROMPT = `You are a knowledgeable assistant answering questions about a project's knowledge base.\nAnswer concisely using only information from the provided wiki pages.\nUse [[page-name]] wikilink syntax to cite specific wiki pages in your answer.\nFormat your answer in markdown.`;\n\nfunction assertWithinRoot(absPath: string, root: string): void {\n const resolvedPath = resolve(absPath);\n const resolvedRoot = resolve(root) + \"/\";\n if (!resolvedPath.startsWith(resolvedRoot)) {\n throw new Error(\n `Unsafe path rejected: \"${absPath}\" is outside project root`,\n );\n }\n}\n\nasync function readFileSafe(filePath: string): Promise<string> {\n try {\n return await readFile(filePath, \"utf8\");\n } catch {\n return \"\";\n }\n}\n\nexport async function queryWiki(\n project: Project,\n question: string,\n llm: LlmAdapter,\n options?: QueryOptions,\n): Promise<QueryResult> {\n // 1. Auto-index if db doesn't exist\n const dbPath = join(project.kbDir, \"index.db\");\n if (!existsSync(dbPath)) {\n await indexProject(project);\n }\n\n // 2. Search for top relevant pages\n const db = openDb(project);\n let searchResults;\n try {\n searchResults = searchWiki(db, question, project.name, { limit: 10 });\n } finally {\n closeDb(db);\n }\n\n // 3. Read full content of each result page\n const pages: Array<{ path: string; title: string; content: string }> = [];\n for (const result of searchResults) {\n const absPath = join(project.root, result.path);\n const content = await readFileSafe(absPath);\n if (content) {\n pages.push({ path: result.path, title: result.title, content });\n }\n }\n\n // 4. Build user message\n const pagesSection =\n pages.length > 0\n ? pages\n .map((p) => `### ${p.title} (${p.path})\\n${p.content}`)\n .join(\"\\n\\n\")\n : \"(No wiki pages found for this query.)\";\n\n const userMessage = `## Question\\n${question}\\n\\n## Relevant Wiki Pages\\n\\n${pagesSection}`;\n\n // 5. Call LLM\n const answer = await llm.complete(\n [{ role: \"user\", content: userMessage }],\n SYSTEM_PROMPT,\n );\n\n const sources = pages.map((p) => p.path);\n\n // 6. If save option provided, write answer as wiki page and append to log\n if (options?.save) {\n const saveRelPath = options.save;\n const saveAbsPath = join(project.root, saveRelPath);\n assertWithinRoot(saveAbsPath, project.root);\n\n await mkdir(dirname(saveAbsPath), { recursive: true });\n await writeFile(saveAbsPath, answer, \"utf8\");\n\n // Append to log.md\n const logPath = join(project.wikiDir, \"log.md\");\n const timestamp = new Date().toISOString().split(\"T\")[0];\n const logEntry = `\\n## ${timestamp} — Queried: ${question}\\n\\nSaved to: ${saveRelPath}\\n`;\n await appendFile(logPath, logEntry, \"utf8\");\n\n // Re-index so saved page is searchable\n await indexProject(project);\n }\n\n return { answer, sources };\n}\n","import { readdir, stat } from \"node:fs/promises\";\nimport { join, relative, basename, extname } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport { openDb, closeDb } from \"./db.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport type LintSeverity = \"warning\" | \"info\";\n\nexport interface LintIssue {\n severity: LintSeverity;\n code: string;\n path: string;\n message: string;\n detail?: string;\n}\n\nexport interface LintResult {\n issues: LintIssue[];\n pagesChecked: number;\n sourcesChecked: number;\n}\n\ninterface PageMetaRow {\n path: string;\n outgoing_links: string;\n word_count: number;\n mtime: number;\n updated_at: number;\n}\n\nasync function collectMdFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile() && e.name.endsWith(\".md\"))\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\nasync function collectSourceFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile())\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\n/**\n * Build a set of \"keys\" for wiki pages for wikilink resolution.\n * A wikilink [[foo-bar]] can match:\n * - a page whose filename (without extension) is \"foo-bar\"\n * - a page whose relative path is \"foo-bar\" or \"foo-bar.md\"\n */\nfunction buildPageKeySet(\n relPaths: string[],\n projectRoot: string,\n wikiDir: string,\n): Set<string> {\n const keys = new Set<string>();\n for (const rp of relPaths) {\n // rp is relative to projectRoot, e.g. \"wiki/concepts/foo.md\"\n keys.add(rp);\n // without extension\n keys.add(rp.replace(/\\.md$/i, \"\"));\n // filename without extension\n const fname = basename(rp, \".md\");\n keys.add(fname);\n // relative path from wikiDir\n const absPath = join(projectRoot, rp);\n const relToWiki = relative(wikiDir, absPath);\n keys.add(relToWiki);\n keys.add(relToWiki.replace(/\\.md$/i, \"\"));\n }\n return keys;\n}\n\nexport async function lintProject(project: Project): Promise<LintResult> {\n // Ensure index is up to date\n await indexProject(project);\n\n const issues: LintIssue[] = [];\n\n // Collect all wiki md files\n const absWikiFiles = await collectMdFiles(project.wikiDir);\n const relWikiPaths = absWikiFiles.map((f) => relative(project.root, f));\n\n const pagesChecked = relWikiPaths.length;\n\n // Always collect source files so sourcesChecked is accurate\n const sourceFiles = await collectSourceFiles(project.sourcesDir);\n const sourcesChecked = sourceFiles.filter(\n (f) => basename(f) !== \".gitkeep\",\n ).length;\n\n if (pagesChecked === 0) {\n return { issues, pagesChecked: 0, sourcesChecked };\n }\n\n // Build page key set for wikilink resolution\n const pageKeySet = buildPageKeySet(\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n\n // Query all page_meta rows\n const db = openDb(project);\n let rows: PageMetaRow[];\n try {\n rows = db\n .prepare<\n [],\n PageMetaRow\n >(\"SELECT path, outgoing_links, word_count, mtime, updated_at FROM page_meta\")\n .all();\n } finally {\n closeDb(db);\n }\n\n // Build a map from path -> row for quick lookup\n const metaMap = new Map<string, PageMetaRow>();\n for (const row of rows) {\n metaMap.set(row.path, row);\n }\n\n // Build inbound link map\n const inboundLinks = new Map<string, Set<string>>();\n for (const rp of relWikiPaths) {\n inboundLinks.set(rp, new Set());\n }\n\n for (const row of rows) {\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n // Find which page this link resolves to\n const resolved = resolveLink(\n link,\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n if (resolved !== null) {\n const set = inboundLinks.get(resolved);\n if (set) {\n set.add(row.path);\n }\n }\n }\n }\n\n // Read _index.md outgoing links for MISSING_INDEX check\n const indexPath = relWikiPaths.find((p) => basename(p) === \"_index.md\");\n let indexLinks: Set<string> = new Set();\n if (indexPath) {\n const indexRow = metaMap.get(indexPath);\n if (indexRow) {\n let links: string[] = [];\n try {\n links = JSON.parse(indexRow.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n const resolved = resolveLink(\n link,\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n if (resolved !== null) {\n indexLinks.add(resolved);\n }\n }\n }\n }\n\n // --- CHECK 1: ORPHAN_PAGE ---\n for (const rp of relWikiPaths) {\n if (basename(rp) === \"_index.md\") continue;\n const inbound = inboundLinks.get(rp);\n if (!inbound || inbound.size === 0) {\n issues.push({\n severity: \"warning\",\n code: \"ORPHAN_PAGE\",\n path: rp,\n message: \"Orphan page (no inbound links)\",\n });\n }\n }\n\n // --- CHECK 2: BROKEN_LINK ---\n for (const row of rows) {\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n if (!isLinkResolvable(link, pageKeySet)) {\n issues.push({\n severity: \"warning\",\n code: \"BROKEN_LINK\",\n path: row.path,\n message: `Broken wikilink [[${link}]] not found`,\n detail: link,\n });\n }\n }\n }\n\n // --- CHECK 3: STUB_PAGE ---\n for (const row of rows) {\n if (basename(row.path) === \"_index.md\") continue;\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n if (links.length === 0 && row.word_count < 50) {\n issues.push({\n severity: \"info\",\n code: \"STUB_PAGE\",\n path: row.path,\n message: `Stub page (no links, < 50 words)`,\n });\n }\n }\n\n // --- CHECK 4: STALE_SUMMARY ---\n // wiki/sources/foo-summary.md <-> sources/foo.*\n const wikiSourcesDir = join(project.wikiDir, \"sources\");\n\n for (const rp of relWikiPaths) {\n // Check if the path is under wiki/sources/\n const absWikiPage = join(project.root, rp);\n const relToWikiSources = relative(wikiSourcesDir, absWikiPage);\n\n // Skip if not under wiki/sources/ (would start with \"..\")\n if (relToWikiSources.startsWith(\"..\")) continue;\n\n // Convention: wiki/sources/foo-summary.md <-> sources/foo.*\n const summaryBasename = basename(rp, \".md\");\n // Strip -summary suffix\n const sourceBasename = summaryBasename.endsWith(\"-summary\")\n ? summaryBasename.slice(0, -\"-summary\".length)\n : summaryBasename;\n\n // Find matching source file\n const matchingSource = sourceFiles.find((sf) => {\n const sfBase = basename(sf, extname(sf));\n return sfBase === sourceBasename;\n });\n\n if (!matchingSource) continue;\n\n try {\n const summaryRow = metaMap.get(rp);\n if (!summaryRow) continue;\n\n const [sourceStat, summaryStat] = await Promise.all([\n stat(matchingSource),\n stat(join(project.root, summaryRow.path)),\n ]);\n\n if (sourceStat.mtimeMs > summaryStat.mtimeMs) {\n issues.push({\n severity: \"warning\",\n code: \"STALE_SUMMARY\",\n path: rp,\n message: \"Source updated after summary\",\n detail: relative(project.root, matchingSource),\n });\n }\n } catch {\n // Ignore stat errors\n }\n }\n\n // --- CHECK 5: MISSING_INDEX ---\n for (const rp of relWikiPaths) {\n if (basename(rp) === \"_index.md\") continue;\n if (!indexPath) {\n // No _index.md exists — skip this check\n continue;\n }\n if (!indexLinks.has(rp)) {\n // Check by filename too\n const fname = basename(rp, \".md\");\n if (!indexLinks.has(fname)) {\n issues.push({\n severity: \"info\",\n code: \"MISSING_INDEX\",\n path: rp,\n message: \"Not in _index.md\",\n });\n }\n }\n }\n\n return { issues, pagesChecked, sourcesChecked };\n}\n\nfunction resolveLink(\n link: string,\n relPaths: string[],\n projectRoot: string,\n wikiDir: string,\n): string | null {\n for (const rp of relPaths) {\n const fname = basename(rp, \".md\");\n if (fname === link) return rp;\n if (rp === link || rp === `${link}.md`) return rp;\n // relative to wikiDir\n const absPath = join(projectRoot, rp);\n const relToWiki = relative(wikiDir, absPath);\n if (relToWiki === link || relToWiki.replace(/\\.md$/i, \"\") === link) {\n return rp;\n }\n }\n return null;\n}\n\nfunction isLinkResolvable(link: string, pageKeySet: Set<string>): boolean {\n return pageKeySet.has(link);\n}\n","// packages/core/src/log-parser.ts\n\nexport interface ParsedLogEntry {\n heading: string;\n body: string;\n}\n\n/**\n * Parses a log.md file into an array of entries.\n * Each entry starts with a level-2 heading (## ...).\n * The top-level \"# Activity Log\" heading is skipped.\n */\nexport function parseLogEntries(content: string): ParsedLogEntry[] {\n const entries: ParsedLogEntry[] = [];\n const sections = content.split(/^(?=## )/m);\n\n for (const section of sections) {\n const trimmed = section.trim();\n if (!trimmed) continue;\n if (trimmed.startsWith(\"# \")) continue;\n if (!trimmed.startsWith(\"## \")) continue;\n\n const newlineIdx = trimmed.indexOf(\"\\n\");\n if (newlineIdx === -1) {\n entries.push({ heading: trimmed.slice(3).trim(), body: \"\" });\n } else {\n const heading = trimmed.slice(3, newlineIdx).trim();\n const body = trimmed.slice(newlineIdx + 1).trim();\n entries.push({ heading, body });\n }\n }\n\n return entries;\n}\n","// Core package — business logic\n\nexport const VERSION = \"0.1.0\";\n\nexport { initProject } from \"./init.js\";\nexport type { InitOptions } from \"./init.js\";\n\nexport { parseConfig } from \"./config.js\";\nexport type { KbConfig } from \"./config.js\";\n\nexport { loadProject, tryLoadProject } from \"./project.js\";\nexport type { Project } from \"./project.js\";\n\nexport { openDb, closeDb } from \"./db.js\";\n\nexport { parsePage } from \"./markdown.js\";\nexport type { ParsedPage } from \"./markdown.js\";\n\nexport { indexProject } from \"./indexer.js\";\nexport type { IndexStats } from \"./indexer.js\";\n\nexport { searchWiki } from \"./search.js\";\nexport type { SearchResult, SearchOptions } from \"./search.js\";\n\nexport { readSource } from \"./source-reader.js\";\nexport type { SourceContent, SourceType } from \"./source-reader.js\";\n\nexport { createLlmAdapter } from \"./llm.js\";\nexport type { LlmAdapter, LlmMessage } from \"./llm.js\";\n\nexport type { IngestResult } from \"./ingest-types.js\";\n\nexport { ingestSource } from \"./ingest.js\";\nexport type { IngestOptions, IngestPlan } from \"./ingest.js\";\n\nexport { queryWiki } from \"./query.js\";\nexport type { QueryResult, QueryOptions } from \"./query.js\";\n\nexport { lintProject } from \"./lint.js\";\nexport type { LintIssue, LintResult, LintSeverity } from \"./lint.js\";\n\nexport { parseLogEntries } from \"./log-parser.js\";\nexport type { ParsedLogEntry } from \"./log-parser.js\";\n","import { readdir, readFile } from \"node:fs/promises\";\nimport type { Dirent } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject } from \"kb-core\";\n\nasync function countWikiPages(wikiDir: string): Promise<number> {\n let entries: string[];\n try {\n entries = await readdir(wikiDir, { recursive: true });\n } catch {\n return 0;\n }\n return entries.filter((f) => f.endsWith(\".md\") && f !== \"_index.md\").length;\n}\n\nasync function countSources(sourcesDir: string): Promise<number> {\n let entries: Dirent[];\n try {\n entries = await readdir(sourcesDir, {\n recursive: true,\n withFileTypes: true,\n });\n } catch {\n return 0;\n }\n return entries.filter((e) => e.isFile() && e.name !== \".gitkeep\").length;\n}\n\nasync function readLastLogEntry(logPath: string): Promise<string | null> {\n let content: string;\n try {\n content = await readFile(logPath, \"utf8\");\n } catch {\n return null;\n }\n\n const lines = content.split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i]!.trim();\n if (line.startsWith(\"## \")) {\n // Strip the \"## \" prefix\n return line.slice(3);\n }\n }\n return null;\n}\n\nexport function makeStatusCommand() {\n const cmd = new Command(\"status\");\n\n cmd.description(\"Show status of the current kb project\").action(async () => {\n try {\n const project = await loadProject(process.cwd());\n const [wikiPages, sourceCount, lastEntry] = await Promise.all([\n countWikiPages(project.wikiDir),\n countSources(project.sourcesDir),\n readLastLogEntry(join(project.root, \"log.md\")),\n ]);\n\n console.log(\n `Project: ${chalk.bold(project.name)} ${chalk.dim(`(v${project.config.project.version})`)}`,\n );\n console.log(`Root: ${chalk.dim(project.root)}`);\n console.log(`Wiki: ${wikiPages} page${wikiPages !== 1 ? \"s\" : \"\"}`);\n console.log(\n `Sources: ${sourceCount} source${sourceCount !== 1 ? \"s\" : \"\"}`,\n );\n if (lastEntry !== null) {\n console.log(`Log: Last entry: ${lastEntry}`);\n } else {\n console.log(`Log: ${chalk.dim(\"(no entries)\")}`);\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, indexProject } from \"kb-core\";\n\nexport function makeIndexCommand(): Command {\n const cmd = new Command(\"index\");\n\n cmd\n .description(\"Index wiki pages into the search database\")\n .option(\"--rebuild\", \"delete all entries and re-index from scratch\", false)\n .action(async (options: { rebuild: boolean }) => {\n try {\n const project = await loadProject(process.cwd());\n console.log(\"Indexing wiki pages...\");\n\n const stats = await indexProject(project, options.rebuild);\n\n const updated = stats.indexed;\n const unchanged = stats.skipped;\n const total = updated + unchanged;\n\n const details: string[] = [];\n if (updated > 0) details.push(`${updated} updated`);\n if (unchanged > 0) details.push(`${unchanged} unchanged`);\n if (stats.deleted > 0) details.push(`${stats.deleted} deleted`);\n if (stats.errors > 0) details.push(`${stats.errors} errors`);\n\n const detailStr = details.length > 0 ? ` (${details.join(\", \")})` : \"\";\n console.log(\n `${chalk.green(\"✓\")} Indexed ${total} page${total !== 1 ? \"s\" : \"\"}${detailStr}`,\n );\n\n if (stats.errors > 0) {\n process.exit(1);\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport {\n loadProject,\n indexProject,\n openDb,\n closeDb,\n searchWiki,\n} from \"kb-core\";\nimport type { SearchResult } from \"kb-core\";\n\nexport function makeSearchCommand(): Command {\n const cmd = new Command(\"search\");\n\n cmd\n .description(\"Search wiki pages using full-text search\")\n .argument(\"<query>\", \"search query\")\n .option(\"-l, --limit <n>\", \"maximum number of results\", \"10\")\n .option(\"--json\", \"output results as JSON\", false)\n .option(\"--tags <tags>\", \"filter by tags (comma-separated, AND logic)\")\n .action(\n async (\n query: string,\n options: { limit: string; json: boolean; tags?: string },\n ) => {\n try {\n const project = await loadProject(process.cwd());\n\n // Auto-index if DB doesn't exist or is empty\n const dbPath = join(project.kbDir, \"index.db\");\n if (!existsSync(dbPath)) {\n if (!options.json) {\n console.log(\"Index not found. Indexing wiki pages...\");\n }\n await indexProject(project);\n } else {\n // Check if pages table is empty\n const db = openDb(project);\n const countRow = db\n .prepare<\n [],\n { count: number }\n >(\"SELECT count(*) as count FROM pages\")\n .get();\n closeDb(db);\n\n if (!countRow || countRow.count === 0) {\n if (!options.json) {\n console.log(\"Index is empty. Indexing wiki pages...\");\n }\n await indexProject(project);\n }\n }\n\n const limit = parseInt(options.limit, 10);\n if (isNaN(limit) || limit < 1) {\n console.error(\n chalk.red(\"Error: --limit must be a positive integer\"),\n );\n process.exit(1);\n }\n const tags = options.tags\n ? options.tags\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0)\n : undefined;\n\n const db = openDb(project);\n let results: SearchResult[];\n try {\n results = searchWiki(db, query, project.name, { limit, tags });\n } finally {\n closeDb(db);\n }\n\n if (options.json) {\n console.log(JSON.stringify(results, null, 2));\n return;\n }\n\n if (results.length === 0) {\n console.log(`No results found for \"${query}\".`);\n return;\n }\n\n console.log(\n `\\nFound ${results.length} result${results.length !== 1 ? \"s\" : \"\"} for \"${query}\":\\n`,\n );\n\n for (let i = 0; i < results.length; i++) {\n const r = results[i];\n console.log(` ${chalk.bold(`${i + 1}.`)} ${chalk.cyan(r.path)}`);\n console.log(` ${chalk.white(r.title)}`);\n if (r.snippet) {\n console.log(` ${chalk.gray(r.snippet)}`);\n }\n if (r.tags.length > 0) {\n console.log(` ${chalk.yellow(\"Tags:\")} ${r.tags.join(\", \")}`);\n }\n console.log();\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n },\n );\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readdir, stat } from \"node:fs/promises\";\nimport { join, basename } from \"node:path\";\nimport { loadProject, ingestSource, createLlmAdapter } from \"kb-core\";\nimport type { IngestPlan } from \"kb-core\";\n\nfunction printPlan(plan: IngestPlan, sourcePath: string): void {\n const sourceBase = basename(sourcePath);\n const sourceFilename = basename(plan.sourceFile);\n const { result } = plan;\n\n console.log(chalk.yellow(\"Dry run — use --apply to write changes\\n\"));\n console.log(\n `Source: ${chalk.cyan(sourceBase)} → ${chalk.cyan(`sources/${sourceFilename}`)}`,\n );\n\n const hasChanges =\n result.newPages.length > 0 ||\n result.updates.length > 0 ||\n result.summary.path;\n\n if (!hasChanges) {\n console.log(chalk.gray(\"\\nNo changes would be made.\"));\n return;\n }\n\n console.log(chalk.bold(\"\\nWould create:\"));\n console.log(\n ` ${chalk.green(\"+\")} ${result.summary.path} ${chalk.gray(\"(new page)\")}`,\n );\n for (const p of result.newPages) {\n console.log(` ${chalk.green(\"+\")} ${p.path} ${chalk.gray(`(new page)`)}`);\n }\n\n if (result.updates.length > 0) {\n console.log(chalk.bold(\"\\nWould update:\"));\n for (const u of result.updates) {\n console.log(\n ` ${chalk.yellow(\"~\")} ${u.path} ${chalk.gray(`(${u.reason})`)}`,\n );\n }\n }\n\n console.log(`\\nWould update index: ${chalk.cyan(\"wiki/_index.md\")}`);\n console.log(`Log entry: ${chalk.gray(`\"${result.logEntry}\"`)}`);\n console.log(chalk.gray(\"\\nRun with --apply to write these changes.\"));\n}\n\nfunction printApplied(plan: IngestPlan, sourcePath: string): void {\n const sourceBase = basename(sourcePath);\n const sourceFilename = basename(plan.sourceFile);\n const { result } = plan;\n\n console.log(\n `${chalk.green(\"✓\")} Ingested ${chalk.cyan(sourceBase)} → ${chalk.cyan(`sources/${sourceFilename}`)}`,\n );\n\n console.log(` ${chalk.green(\"+\")} ${result.summary.path}`);\n for (const p of result.newPages) {\n console.log(` ${chalk.green(\"+\")} ${p.path}`);\n }\n for (const u of result.updates) {\n console.log(` ${chalk.yellow(\"~\")} ${u.path}`);\n }\n console.log(` ${chalk.yellow(\"~\")} wiki/_index.md`);\n console.log(chalk.gray(` Log: \"${result.logEntry}\"`));\n}\n\nasync function collectFiles(dirPath: string): Promise<string[]> {\n const entries = await readdir(dirPath, { withFileTypes: true });\n return entries.filter((e) => e.isFile()).map((e) => join(dirPath, e.name));\n}\n\nexport function makeIngestCommand(): Command {\n const cmd = new Command(\"ingest\");\n\n cmd\n .description(\"Ingest a source document into the wiki using LLM\")\n .argument(\"<source-path>\", \"path to file or URL to ingest\")\n .option(\"--apply\", \"write changes to wiki (default: dry-run)\", false)\n .option(\"--batch\", \"process all files in a directory\", false)\n .action(\n async (\n sourcePath: string,\n options: { apply: boolean; batch: boolean },\n ) => {\n try {\n const project = await loadProject(process.cwd());\n const llm = createLlmAdapter(project.config);\n\n let sources: string[];\n\n if (options.batch) {\n const s = await stat(sourcePath);\n if (!s.isDirectory()) {\n console.error(\n chalk.red(\"Error: --batch requires a directory path\"),\n );\n process.exit(1);\n }\n sources = await collectFiles(sourcePath);\n if (sources.length === 0) {\n console.log(chalk.gray(\"No files found in directory.\"));\n return;\n }\n } else {\n sources = [sourcePath];\n }\n\n for (const src of sources) {\n if (options.batch) {\n console.log(chalk.bold(`\\nProcessing: ${basename(src)}`));\n }\n\n const plan = await ingestSource(project, src, llm, {\n apply: options.apply,\n });\n\n if (plan.dryRun) {\n printPlan(plan, src);\n } else {\n printApplied(plan, src);\n }\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n },\n );\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, queryWiki, createLlmAdapter } from \"kb-core\";\n\nexport function makeQueryCommand(): Command {\n const cmd = new Command(\"query\");\n\n cmd\n .description(\"Ask a question about the wiki knowledge base\")\n .argument(\"<question>\", \"question to ask\")\n .option(\"--save <path>\", \"save answer as a wiki page at the given path\")\n .action(async (question: string, options: { save?: string }) => {\n try {\n const project = await loadProject(process.cwd());\n const llm = createLlmAdapter(project.config);\n\n const result = await queryWiki(project, question, llm, {\n save: options.save,\n });\n\n console.log(result.answer);\n\n if (result.sources.length > 0) {\n console.log(\n `\\n${chalk.gray(\"Sources:\")} ${result.sources.join(\", \")}`,\n );\n }\n\n if (options.save) {\n console.log(chalk.green(`\\nSaved to ${options.save}`));\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { loadProject, parseLogEntries, type ParsedLogEntry } from \"kb-core\";\n\nexport function makeLogCommand(): Command {\n const cmd = new Command(\"log\");\n\n cmd\n .description(\"Show recent activity log entries\")\n .option(\"--last <n>\", \"number of entries to show\", \"10\")\n .action(async (options: { last: string }) => {\n try {\n const project = await loadProject(process.cwd());\n const logPath = join(project.wikiDir, \"log.md\");\n\n let content: string;\n try {\n content = await readFile(logPath, \"utf8\");\n } catch {\n console.log(chalk.gray(\"No activity log found.\"));\n return;\n }\n\n const n = parseInt(options.last, 10);\n if (isNaN(n) || n < 1) {\n console.error(chalk.red(\"Error: --last must be a positive integer\"));\n process.exit(1);\n }\n\n const entries = parseLogEntries(content);\n\n if (entries.length === 0) {\n console.log(chalk.gray(\"Activity log is empty.\"));\n return;\n }\n\n const last = entries.slice(-n);\n\n for (const entry of last) {\n console.log(chalk.bold(`## ${entry.heading}`));\n if (entry.body) {\n console.log(entry.body);\n }\n console.log();\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, lintProject } from \"kb-core\";\n\nexport function makeLintCommand(): Command {\n const cmd = new Command(\"lint\");\n\n cmd\n .description(\"Check wiki health for broken links, orphan pages, and more\")\n .option(\"--deep\", \"LLM-assisted checks (Phase 2)\", false)\n .action(async (options: { deep: boolean }) => {\n try {\n if (options.deep) {\n console.log(chalk.yellow(\"--deep requires LLM, not yet implemented\"));\n return;\n }\n\n const project = await loadProject(process.cwd());\n console.log(\"Checking wiki health...\\n\");\n\n const result = await lintProject(project);\n\n if (result.issues.length === 0) {\n console.log(\n chalk.green(\n `✓ Wiki is healthy (${result.pagesChecked} pages checked)`,\n ),\n );\n return;\n }\n\n for (const issue of result.issues) {\n const code = chalk.gray(`[${issue.code}]`);\n if (issue.severity === \"warning\") {\n if (issue.code === \"BROKEN_LINK\") {\n console.log(\n `${chalk.yellow(\"⚠\")} ${chalk.cyan(issue.path)} → [[${issue.detail}]] not found ${code}`,\n );\n } else {\n console.log(\n `${chalk.yellow(\"⚠\")} ${chalk.cyan(issue.path)} — ${issue.message} ${code}`,\n );\n }\n } else {\n console.log(\n `${chalk.blue(\"ℹ\")} ${chalk.cyan(issue.path)} — ${issue.message} ${code}`,\n );\n }\n }\n\n const warnings = result.issues.filter(\n (i) => i.severity === \"warning\",\n ).length;\n const infos = result.issues.filter((i) => i.severity === \"info\").length;\n\n const parts: string[] = [];\n if (warnings > 0)\n parts.push(\n `${chalk.yellow(String(warnings))} warning${warnings !== 1 ? \"s\" : \"\"}`,\n );\n if (infos > 0) parts.push(`${chalk.blue(String(infos))} info`);\n\n console.log(\n `\\nFound ${parts.join(\", \")}. Run with --deep for LLM-assisted checks.`,\n );\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport { startMcpServer } from \"kb-mcp\";\n\nexport function makeMcpCommand(): Command {\n return new Command(\"mcp\")\n .description(\"Start MCP server (stdio)\")\n .action(async () => {\n await startMcpServer();\n });\n}\n","import { readFile, writeFile, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject } from \"kb-core\";\n\nexport async function readSchemaLines(schemaPath: string): Promise<string> {\n let content: string;\n try {\n content = await readFile(schemaPath, \"utf8\");\n } catch {\n return \"_No `.kb/schema.md` found in this project._\";\n }\n const lines = content.split(\"\\n\").slice(0, 20);\n return lines.join(\"\\n\");\n}\n\nexport async function buildBlock(\n projectName: string,\n schemaLines: string,\n): Promise<string> {\n return `## Knowledge Base: ${projectName}\n\nThis project has an LLM-maintained knowledge base at \\`./wiki/\\`.\n- Wiki index: \\`wiki/_index.md\\`\n- Schema/conventions: \\`.kb/schema.md\\`\n- Raw sources: \\`sources/\\`\n- Activity log: \\`log.md\\`\n\n### Available CLI commands\n- \\`kb search <query>\\` — Search the wiki\n- \\`kb ingest <path> --apply\\` — Process a new source into the wiki\n- \\`kb query <question>\\` — Ask a question against the wiki\n- \\`kb lint\\` — Health-check the wiki\n- \\`kb lint --deep\\` — LLM-assisted deep health check\n\n### MCP tools available\nThis project exposes an MCP server via \\`kb mcp\\`.\nTools: kb_search, kb_get_page, kb_get_index, kb_ingest, kb_lint, kb_backlinks, kb_status.\n\n### Wiki conventions\n${schemaLines}`;\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function makeAgentContextCommand(): Command {\n const cmd = new Command(\"agent-context\");\n\n cmd\n .description(\"Generate a markdown context block for CLAUDE.md / AGENTS.md\")\n .option(\"--write\", \"Append block to CLAUDE.md in project root\", false)\n .action(async (options: { write: boolean }) => {\n try {\n const project = await loadProject(process.cwd());\n const schemaPath = join(project.root, \".kb\", \"schema.md\");\n const schemaLines = await readSchemaLines(schemaPath);\n const block = await buildBlock(project.name, schemaLines);\n\n if (!options.write) {\n console.log(block);\n return;\n }\n\n const claudeMdPath = join(project.root, \"CLAUDE.md\");\n const exists = await fileExists(claudeMdPath);\n\n if (exists) {\n const existing = await readFile(claudeMdPath, \"utf8\");\n await writeFile(claudeMdPath, `${existing}\\n---\\n${block}`, \"utf8\");\n } else {\n await writeFile(claudeMdPath, block, \"utf8\");\n }\n\n console.log(chalk.green(\"Written to CLAUDE.md\"));\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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","names":["exports","module","str","exports","module","exports","module","exports","module","exports","module","Date","exports","module","exports","module","exports","module","str","exports","module","str","resolve","index","blocksize","exports","module","resolve","exports","module","exports","module","tomlType","str","exports","exports","module","exports","module","exports","module","exports","module","options","exports","module","exports","module","exports","module","exports","module","options","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","isInteger","exports","module","isFloat","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","options","exports","module","CHAR_COMMA","CHAR_COLON","CHAR_EQUALS","options","str","string","detectType","exports","module","require_js_yaml","exports","module","yaml","options","exports","module","str","exports","str","exports","module","engines","options","exports","module","options","require_stringify","exports","module","options","str","matter","exports","module","options","exports","module","options","require_parse","exports","module","str","options","exports","module","engines","parse","matter","options","str","Command","basename","resolve","import_toml","access","join","readFile","basename","writeFile","mkdir","dirname","resolve","options","TOML","access","join","join","readFile","matter","options","content","filename","raw","basename","resolve","mkdir","dirname","writeFile","resolve","basename","readdir","readFile","join","Command","chalk","readdir","readFile","Command","join","chalk","Command","chalk","Command","options","chalk","Command","chalk","join","Command","options","join","db","chalk","Command","chalk","readdir","stat","join","basename","basename","chalk","readdir","join","Command","options","stat","Command","chalk","loadProject","createLlmAdapter","options","Command","chalk","readFile","join","loadProject","options","Command","chalk","loadProject","options","Command","readFile","writeFile","access","join","Command","chalk","loadProject","options","Command"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/parser.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-datetime.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/format-num.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-datetime-float.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-date.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/create-time.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/lib/toml-parser.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-pretty-error.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-string.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-async.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse-stream.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/parse.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/stringify.js","../../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/toml.js","../../../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@3.14.2/node_modules/js-yaml/lib/js-yaml/common.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/exception.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/mark.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/str.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/seq.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/map.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/null.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/bool.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/int.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/float.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/json.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/core.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/merge.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/binary.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/omap.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/pairs.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/set.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/type/js/function.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/loader.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml/dumper.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/lib/js-yaml.js","../../../node_modules/.pnpm/js-yaml@3.14.2/node_modules/js-yaml/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engines.js","../../../node_modules/.pnpm/strip-bom-string@1.0.0/node_modules/strip-bom-string/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/utils.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/defaults.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engine.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/stringify.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/excerpt.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/to-file.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/parse.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/index.js","../src/index.ts","../src/commands/init.ts","../../core/src/init.ts","../../core/src/config.ts","../../core/src/project.ts","../../core/src/db.ts","../../core/src/markdown.ts","../../core/src/indexer.ts","../../core/src/search.ts","../../core/src/source-reader.ts","../../core/src/llm.ts","../../core/src/ingest.ts","../../core/src/query.ts","../../core/src/lint.ts","../../core/src/log-parser.ts","../../core/src/index.ts","../src/commands/status.ts","../src/commands/index-cmd.ts","../src/commands/search.ts","../src/commands/ingest.ts","../src/commands/query.ts","../src/commands/log-cmd.ts","../src/commands/lint.ts","../src/commands/mcp.ts","../src/commands/agent-context.ts"],"sourcesContent":["'use strict'\nconst ParserEND = 0x110000\nclass ParserError extends Error {\n /* istanbul ignore next */\n constructor (msg, filename, linenumber) {\n super('[ParserError] ' + msg, filename, linenumber)\n this.name = 'ParserError'\n this.code = 'ParserError'\n if (Error.captureStackTrace) Error.captureStackTrace(this, ParserError)\n }\n}\nclass State {\n constructor (parser) {\n this.parser = parser\n this.buf = ''\n this.returned = null\n this.result = null\n this.resultTable = null\n this.resultArr = null\n }\n}\nclass Parser {\n constructor () {\n this.pos = 0\n this.col = 0\n this.line = 0\n this.obj = {}\n this.ctx = this.obj\n this.stack = []\n this._buf = ''\n this.char = null\n this.ii = 0\n this.state = new State(this.parseStart)\n }\n\n parse (str) {\n /* istanbul ignore next */\n if (str.length === 0 || str.length == null) return\n\n this._buf = String(str)\n this.ii = -1\n this.char = -1\n let getNext\n while (getNext === false || this.nextChar()) {\n getNext = this.runOne()\n }\n this._buf = null\n }\n nextChar () {\n if (this.char === 0x0A) {\n ++this.line\n this.col = -1\n }\n ++this.ii\n this.char = this._buf.codePointAt(this.ii)\n ++this.pos\n ++this.col\n return this.haveBuffer()\n }\n haveBuffer () {\n return this.ii < this._buf.length\n }\n runOne () {\n return this.state.parser.call(this, this.state.returned)\n }\n finish () {\n this.char = ParserEND\n let last\n do {\n last = this.state.parser\n this.runOne()\n } while (this.state.parser !== last)\n\n this.ctx = null\n this.state = null\n this._buf = null\n\n return this.obj\n }\n next (fn) {\n /* istanbul ignore next */\n if (typeof fn !== 'function') throw new ParserError('Tried to set state to non-existent state: ' + JSON.stringify(fn))\n this.state.parser = fn\n }\n goto (fn) {\n this.next(fn)\n return this.runOne()\n }\n call (fn, returnWith) {\n if (returnWith) this.next(returnWith)\n this.stack.push(this.state)\n this.state = new State(fn)\n }\n callNow (fn, returnWith) {\n this.call(fn, returnWith)\n return this.runOne()\n }\n return (value) {\n /* istanbul ignore next */\n if (this.stack.length === 0) throw this.error(new ParserError('Stack underflow'))\n if (value === undefined) value = this.state.buf\n this.state = this.stack.pop()\n this.state.returned = value\n }\n returnNow (value) {\n this.return(value)\n return this.runOne()\n }\n consume () {\n /* istanbul ignore next */\n if (this.char === ParserEND) throw this.error(new ParserError('Unexpected end-of-buffer'))\n this.state.buf += this._buf[this.ii]\n }\n error (err) {\n err.line = this.line\n err.col = this.col\n err.pos = this.pos\n return err\n }\n /* istanbul ignore next */\n parseStart () {\n throw new ParserError('Must declare a parseStart method')\n }\n}\nParser.END = ParserEND\nParser.Error = ParserError\nmodule.exports = Parser\n","'use strict'\nmodule.exports = value => {\n const date = new Date(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nmodule.exports = (d, num) => {\n num = String(num)\n while (num.length < d) num = '0' + num\n return num\n}\n","'use strict'\nconst f = require('./format-num.js')\n\nclass FloatingDateTime extends Date {\n constructor (value) {\n super(value + 'Z')\n this.isFloating = true\n }\n toISOString () {\n const date = `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n const time = `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n return `${date}T${time}`\n }\n}\n\nmodule.exports = value => {\n const date = new FloatingDateTime(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nconst f = require('./format-num.js')\nconst DateTime = global.Date\n\nclass Date extends DateTime {\n constructor (value) {\n super(value)\n this.isDate = true\n }\n toISOString () {\n return `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`\n }\n}\n\nmodule.exports = value => {\n const date = new Date(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\nconst f = require('./format-num.js')\n\nclass Time extends Date {\n constructor (value) {\n super(`0000-01-01T${value}Z`)\n this.isTime = true\n }\n toISOString () {\n return `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`\n }\n}\n\nmodule.exports = value => {\n const date = new Time(value)\n /* istanbul ignore if */\n if (isNaN(date)) {\n throw new TypeError('Invalid Datetime')\n } else {\n return date\n }\n}\n","'use strict'\n/* eslint-disable no-new-wrappers, no-eval, camelcase, operator-linebreak */\nmodule.exports = makeParserClass(require('./parser.js'))\nmodule.exports.makeParserClass = makeParserClass\n\nclass TomlError extends Error {\n constructor (msg) {\n super(msg)\n this.name = 'TomlError'\n /* istanbul ignore next */\n if (Error.captureStackTrace) Error.captureStackTrace(this, TomlError)\n this.fromTOML = true\n this.wrapped = null\n }\n}\nTomlError.wrap = err => {\n const terr = new TomlError(err.message)\n terr.code = err.code\n terr.wrapped = err\n return terr\n}\nmodule.exports.TomlError = TomlError\n\nconst createDateTime = require('./create-datetime.js')\nconst createDateTimeFloat = require('./create-datetime-float.js')\nconst createDate = require('./create-date.js')\nconst createTime = require('./create-time.js')\n\nconst CTRL_I = 0x09\nconst CTRL_J = 0x0A\nconst CTRL_M = 0x0D\nconst CTRL_CHAR_BOUNDARY = 0x1F // the last non-character in the latin1 region of unicode, except DEL\nconst CHAR_SP = 0x20\nconst CHAR_QUOT = 0x22\nconst CHAR_NUM = 0x23\nconst CHAR_APOS = 0x27\nconst CHAR_PLUS = 0x2B\nconst CHAR_COMMA = 0x2C\nconst CHAR_HYPHEN = 0x2D\nconst CHAR_PERIOD = 0x2E\nconst CHAR_0 = 0x30\nconst CHAR_1 = 0x31\nconst CHAR_7 = 0x37\nconst CHAR_9 = 0x39\nconst CHAR_COLON = 0x3A\nconst CHAR_EQUALS = 0x3D\nconst CHAR_A = 0x41\nconst CHAR_E = 0x45\nconst CHAR_F = 0x46\nconst CHAR_T = 0x54\nconst CHAR_U = 0x55\nconst CHAR_Z = 0x5A\nconst CHAR_LOWBAR = 0x5F\nconst CHAR_a = 0x61\nconst CHAR_b = 0x62\nconst CHAR_e = 0x65\nconst CHAR_f = 0x66\nconst CHAR_i = 0x69\nconst CHAR_l = 0x6C\nconst CHAR_n = 0x6E\nconst CHAR_o = 0x6F\nconst CHAR_r = 0x72\nconst CHAR_s = 0x73\nconst CHAR_t = 0x74\nconst CHAR_u = 0x75\nconst CHAR_x = 0x78\nconst CHAR_z = 0x7A\nconst CHAR_LCUB = 0x7B\nconst CHAR_RCUB = 0x7D\nconst CHAR_LSQB = 0x5B\nconst CHAR_BSOL = 0x5C\nconst CHAR_RSQB = 0x5D\nconst CHAR_DEL = 0x7F\nconst SURROGATE_FIRST = 0xD800\nconst SURROGATE_LAST = 0xDFFF\n\nconst escapes = {\n [CHAR_b]: '\\u0008',\n [CHAR_t]: '\\u0009',\n [CHAR_n]: '\\u000A',\n [CHAR_f]: '\\u000C',\n [CHAR_r]: '\\u000D',\n [CHAR_QUOT]: '\\u0022',\n [CHAR_BSOL]: '\\u005C'\n}\n\nfunction isDigit (cp) {\n return cp >= CHAR_0 && cp <= CHAR_9\n}\nfunction isHexit (cp) {\n return (cp >= CHAR_A && cp <= CHAR_F) || (cp >= CHAR_a && cp <= CHAR_f) || (cp >= CHAR_0 && cp <= CHAR_9)\n}\nfunction isBit (cp) {\n return cp === CHAR_1 || cp === CHAR_0\n}\nfunction isOctit (cp) {\n return (cp >= CHAR_0 && cp <= CHAR_7)\n}\nfunction isAlphaNumQuoteHyphen (cp) {\n return (cp >= CHAR_A && cp <= CHAR_Z)\n || (cp >= CHAR_a && cp <= CHAR_z)\n || (cp >= CHAR_0 && cp <= CHAR_9)\n || cp === CHAR_APOS\n || cp === CHAR_QUOT\n || cp === CHAR_LOWBAR\n || cp === CHAR_HYPHEN\n}\nfunction isAlphaNumHyphen (cp) {\n return (cp >= CHAR_A && cp <= CHAR_Z)\n || (cp >= CHAR_a && cp <= CHAR_z)\n || (cp >= CHAR_0 && cp <= CHAR_9)\n || cp === CHAR_LOWBAR\n || cp === CHAR_HYPHEN\n}\nconst _type = Symbol('type')\nconst _declared = Symbol('declared')\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst defineProperty = Object.defineProperty\nconst descriptor = {configurable: true, enumerable: true, writable: true, value: undefined}\n\nfunction hasKey (obj, key) {\n if (hasOwnProperty.call(obj, key)) return true\n if (key === '__proto__') defineProperty(obj, '__proto__', descriptor)\n return false\n}\n\nconst INLINE_TABLE = Symbol('inline-table')\nfunction InlineTable () {\n return Object.defineProperties({}, {\n [_type]: {value: INLINE_TABLE}\n })\n}\nfunction isInlineTable (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INLINE_TABLE\n}\n\nconst TABLE = Symbol('table')\nfunction Table () {\n return Object.defineProperties({}, {\n [_type]: {value: TABLE},\n [_declared]: {value: false, writable: true}\n })\n}\nfunction isTable (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === TABLE\n}\n\nconst _contentType = Symbol('content-type')\nconst INLINE_LIST = Symbol('inline-list')\nfunction InlineList (type) {\n return Object.defineProperties([], {\n [_type]: {value: INLINE_LIST},\n [_contentType]: {value: type}\n })\n}\nfunction isInlineList (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INLINE_LIST\n}\n\nconst LIST = Symbol('list')\nfunction List () {\n return Object.defineProperties([], {\n [_type]: {value: LIST}\n })\n}\nfunction isList (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === LIST\n}\n\n// in an eval, to let bundlers not slurp in a util proxy\nlet _custom\ntry {\n const utilInspect = eval(\"require('util').inspect\")\n _custom = utilInspect.custom\n} catch (_) {\n /* eval require not available in transpiled bundle */\n}\n/* istanbul ignore next */\nconst _inspect = _custom || 'inspect'\n\nclass BoxedBigInt {\n constructor (value) {\n try {\n this.value = global.BigInt.asIntN(64, value)\n } catch (_) {\n /* istanbul ignore next */\n this.value = null\n }\n Object.defineProperty(this, _type, {value: INTEGER})\n }\n isNaN () {\n return this.value === null\n }\n /* istanbul ignore next */\n toString () {\n return String(this.value)\n }\n /* istanbul ignore next */\n [_inspect] () {\n return `[BigInt: ${this.toString()}]}`\n }\n valueOf () {\n return this.value\n }\n}\n\nconst INTEGER = Symbol('integer')\nfunction Integer (value) {\n let num = Number(value)\n // -0 is a float thing, not an int thing\n if (Object.is(num, -0)) num = 0\n /* istanbul ignore else */\n if (global.BigInt && !Number.isSafeInteger(num)) {\n return new BoxedBigInt(value)\n } else {\n /* istanbul ignore next */\n return Object.defineProperties(new Number(num), {\n isNaN: {value: function () { return isNaN(this) }},\n [_type]: {value: INTEGER},\n [_inspect]: {value: () => `[Integer: ${value}]`}\n })\n }\n}\nfunction isInteger (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === INTEGER\n}\n\nconst FLOAT = Symbol('float')\nfunction Float (value) {\n /* istanbul ignore next */\n return Object.defineProperties(new Number(value), {\n [_type]: {value: FLOAT},\n [_inspect]: {value: () => `[Float: ${value}]`}\n })\n}\nfunction isFloat (obj) {\n if (obj === null || typeof (obj) !== 'object') return false\n return obj[_type] === FLOAT\n}\n\nfunction tomlType (value) {\n const type = typeof value\n if (type === 'object') {\n /* istanbul ignore if */\n if (value === null) return 'null'\n if (value instanceof Date) return 'datetime'\n /* istanbul ignore else */\n if (_type in value) {\n switch (value[_type]) {\n case INLINE_TABLE: return 'inline-table'\n case INLINE_LIST: return 'inline-list'\n /* istanbul ignore next */\n case TABLE: return 'table'\n /* istanbul ignore next */\n case LIST: return 'list'\n case FLOAT: return 'float'\n case INTEGER: return 'integer'\n }\n }\n }\n return type\n}\n\nfunction makeParserClass (Parser) {\n class TOMLParser extends Parser {\n constructor () {\n super()\n this.ctx = this.obj = Table()\n }\n\n /* MATCH HELPER */\n atEndOfWord () {\n return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine()\n }\n atEndOfLine () {\n return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M\n }\n\n parseStart () {\n if (this.char === Parser.END) {\n return null\n } else if (this.char === CHAR_LSQB) {\n return this.call(this.parseTableOrList)\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else if (isAlphaNumQuoteHyphen(this.char)) {\n return this.callNow(this.parseAssignStatement)\n } else {\n throw this.error(new TomlError(`Unknown character \"${this.char}\"`))\n }\n }\n\n // HELPER, this strips any whitespace and comments to the end of the line\n // then RETURNS. Last state in a production.\n parseWhitespaceToEOL () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else if (this.char === CHAR_NUM) {\n return this.goto(this.parseComment)\n } else if (this.char === Parser.END || this.char === CTRL_J) {\n return this.return()\n } else {\n throw this.error(new TomlError('Unexpected character, expected only whitespace or comments till end of line'))\n }\n }\n\n /* ASSIGNMENT: key = value */\n parseAssignStatement () {\n return this.callNow(this.parseAssign, this.recordAssignStatement)\n }\n recordAssignStatement (kv) {\n let target = this.ctx\n let finalKey = kv.key.pop()\n for (let kw of kv.key) {\n if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n target = target[kw] = target[kw] || Table()\n }\n if (hasKey(target, finalKey)) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n // unbox our numbers\n if (isInteger(kv.value) || isFloat(kv.value)) {\n target[finalKey] = kv.value.valueOf()\n } else {\n target[finalKey] = kv.value\n }\n return this.goto(this.parseWhitespaceToEOL)\n }\n\n /* ASSSIGNMENT expression, key = value possibly inside an inline table */\n parseAssign () {\n return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n }\n recordAssignKeyword (key) {\n if (this.state.resultTable) {\n this.state.resultTable.push(key)\n } else {\n this.state.resultTable = [key]\n }\n return this.goto(this.parseAssignKeywordPreDot)\n }\n parseAssignKeywordPreDot () {\n if (this.char === CHAR_PERIOD) {\n return this.next(this.parseAssignKeywordPostDot)\n } else if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n return this.goto(this.parseAssignEqual)\n }\n }\n parseAssignKeywordPostDot () {\n if (this.char !== CHAR_SP && this.char !== CTRL_I) {\n return this.callNow(this.parseKeyword, this.recordAssignKeyword)\n }\n }\n\n parseAssignEqual () {\n if (this.char === CHAR_EQUALS) {\n return this.next(this.parseAssignPreValue)\n } else {\n throw this.error(new TomlError('Invalid character, expected \"=\"'))\n }\n }\n parseAssignPreValue () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseValue, this.recordAssignValue)\n }\n }\n recordAssignValue (value) {\n return this.returnNow({key: this.state.resultTable, value: value})\n }\n\n /* COMMENTS: #...eol */\n parseComment () {\n do {\n if (this.char === Parser.END || this.char === CTRL_J) {\n return this.return()\n }\n } while (this.nextChar())\n }\n\n /* TABLES AND LISTS, [foo] and [[foo]] */\n parseTableOrList () {\n if (this.char === CHAR_LSQB) {\n this.next(this.parseList)\n } else {\n return this.goto(this.parseTable)\n }\n }\n\n /* TABLE [foo.bar.baz] */\n parseTable () {\n this.ctx = this.obj\n return this.goto(this.parseTableNext)\n }\n parseTableNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseKeyword, this.parseTableMore)\n }\n }\n parseTableMore (keyword) {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CHAR_RSQB) {\n if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n } else {\n this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table()\n this.ctx[_declared] = true\n }\n return this.next(this.parseWhitespaceToEOL)\n } else if (this.char === CHAR_PERIOD) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx = this.ctx[keyword] = Table()\n } else if (isTable(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword]\n } else if (isList(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n } else {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n return this.next(this.parseTableNext)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n\n /* LIST [[a.b.c]] */\n parseList () {\n this.ctx = this.obj\n return this.goto(this.parseListNext)\n }\n parseListNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else {\n return this.callNow(this.parseKeyword, this.parseListMore)\n }\n }\n parseListMore (keyword) {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CHAR_RSQB) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx[keyword] = List()\n }\n if (isInlineList(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline array\"))\n } else if (isList(this.ctx[keyword])) {\n const next = Table()\n this.ctx[keyword].push(next)\n this.ctx = next\n } else {\n throw this.error(new TomlError(\"Can't redefine an existing key\"))\n }\n return this.next(this.parseListEnd)\n } else if (this.char === CHAR_PERIOD) {\n if (!hasKey(this.ctx, keyword)) {\n this.ctx = this.ctx[keyword] = Table()\n } else if (isInlineList(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline array\"))\n } else if (isInlineTable(this.ctx[keyword])) {\n throw this.error(new TomlError(\"Can't extend an inline table\"))\n } else if (isList(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]\n } else if (isTable(this.ctx[keyword])) {\n this.ctx = this.ctx[keyword]\n } else {\n throw this.error(new TomlError(\"Can't redefine an existing key\"))\n }\n return this.next(this.parseListNext)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n parseListEnd (keyword) {\n if (this.char === CHAR_RSQB) {\n return this.next(this.parseWhitespaceToEOL)\n } else {\n throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'))\n }\n }\n\n /* VALUE string, number, boolean, inline list, inline object */\n parseValue () {\n if (this.char === Parser.END) {\n throw this.error(new TomlError('Key without value'))\n } else if (this.char === CHAR_QUOT) {\n return this.next(this.parseDoubleString)\n } if (this.char === CHAR_APOS) {\n return this.next(this.parseSingleString)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n return this.goto(this.parseNumberSign)\n } else if (this.char === CHAR_i) {\n return this.next(this.parseInf)\n } else if (this.char === CHAR_n) {\n return this.next(this.parseNan)\n } else if (isDigit(this.char)) {\n return this.goto(this.parseNumberOrDateTime)\n } else if (this.char === CHAR_t || this.char === CHAR_f) {\n return this.goto(this.parseBoolean)\n } else if (this.char === CHAR_LSQB) {\n return this.call(this.parseInlineList, this.recordValue)\n } else if (this.char === CHAR_LCUB) {\n return this.call(this.parseInlineTable, this.recordValue)\n } else {\n throw this.error(new TomlError('Unexpected character, expecting string, number, datetime, boolean, inline array or inline table'))\n }\n }\n recordValue (value) {\n return this.returnNow(value)\n }\n\n parseInf () {\n if (this.char === CHAR_n) {\n return this.next(this.parseInf2)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n }\n }\n parseInf2 () {\n if (this.char === CHAR_f) {\n if (this.state.buf === '-') {\n return this.return(-Infinity)\n } else {\n return this.return(Infinity)\n }\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"inf\", \"+inf\" or \"-inf\"'))\n }\n }\n\n parseNan () {\n if (this.char === CHAR_a) {\n return this.next(this.parseNan2)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n }\n }\n parseNan2 () {\n if (this.char === CHAR_n) {\n return this.return(NaN)\n } else {\n throw this.error(new TomlError('Unexpected character, expected \"nan\"'))\n }\n }\n\n /* KEYS, barewords or basic, literal, or dotted */\n parseKeyword () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseBasicString)\n } else if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralString)\n } else {\n return this.goto(this.parseBareKey)\n }\n }\n\n /* KEYS: barewords */\n parseBareKey () {\n do {\n if (this.char === Parser.END) {\n throw this.error(new TomlError('Key ended without value'))\n } else if (isAlphaNumHyphen(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 0) {\n throw this.error(new TomlError('Empty bare keys are not allowed'))\n } else {\n return this.returnNow()\n }\n } while (this.nextChar())\n }\n\n /* STRINGS, single quoted (literal) */\n parseSingleString () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiStringMaybe)\n } else {\n return this.goto(this.parseLiteralString)\n }\n }\n parseLiteralString () {\n do {\n if (this.char === CHAR_APOS) {\n return this.return()\n } else if (this.atEndOfLine()) {\n throw this.error(new TomlError('Unterminated string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n parseLiteralMultiStringMaybe () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiString)\n } else {\n return this.returnNow()\n }\n }\n parseLiteralMultiString () {\n if (this.char === CTRL_M) {\n return null\n } else if (this.char === CTRL_J) {\n return this.next(this.parseLiteralMultiStringContent)\n } else {\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n parseLiteralMultiStringContent () {\n do {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiEnd)\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated multi-line string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n parseLiteralMultiEnd () {\n if (this.char === CHAR_APOS) {\n return this.next(this.parseLiteralMultiEnd2)\n } else {\n this.state.buf += \"'\"\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n parseLiteralMultiEnd2 () {\n if (this.char === CHAR_APOS) {\n return this.return()\n } else {\n this.state.buf += \"''\"\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n\n /* STRINGS double quoted */\n parseDoubleString () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiStringMaybe)\n } else {\n return this.goto(this.parseBasicString)\n }\n }\n parseBasicString () {\n do {\n if (this.char === CHAR_BSOL) {\n return this.call(this.parseEscape, this.recordEscapeReplacement)\n } else if (this.char === CHAR_QUOT) {\n return this.return()\n } else if (this.atEndOfLine()) {\n throw this.error(new TomlError('Unterminated string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n recordEscapeReplacement (replacement) {\n this.state.buf += replacement\n return this.goto(this.parseBasicString)\n }\n parseMultiStringMaybe () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiString)\n } else {\n return this.returnNow()\n }\n }\n parseMultiString () {\n if (this.char === CTRL_M) {\n return null\n } else if (this.char === CTRL_J) {\n return this.next(this.parseMultiStringContent)\n } else {\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiStringContent () {\n do {\n if (this.char === CHAR_BSOL) {\n return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement)\n } else if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiEnd)\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated multi-line string'))\n } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M)) {\n throw this.errorControlCharInString()\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n errorControlCharInString () {\n let displayCode = '\\\\u00'\n if (this.char < 16) {\n displayCode += '0'\n }\n displayCode += this.char.toString(16)\n\n return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`))\n }\n recordMultiEscapeReplacement (replacement) {\n this.state.buf += replacement\n return this.goto(this.parseMultiStringContent)\n }\n parseMultiEnd () {\n if (this.char === CHAR_QUOT) {\n return this.next(this.parseMultiEnd2)\n } else {\n this.state.buf += '\"'\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiEnd2 () {\n if (this.char === CHAR_QUOT) {\n return this.return()\n } else {\n this.state.buf += '\"\"'\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiEscape () {\n if (this.char === CTRL_M || this.char === CTRL_J) {\n return this.next(this.parseMultiTrim)\n } else if (this.char === CHAR_SP || this.char === CTRL_I) {\n return this.next(this.parsePreMultiTrim)\n } else {\n return this.goto(this.parseEscape)\n }\n }\n parsePreMultiTrim () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === CTRL_M || this.char === CTRL_J) {\n return this.next(this.parseMultiTrim)\n } else {\n throw this.error(new TomlError(\"Can't escape whitespace\"))\n }\n }\n parseMultiTrim () {\n // explicitly whitespace here, END should follow the same path as chars\n if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {\n return null\n } else {\n return this.returnNow()\n }\n }\n parseEscape () {\n if (this.char in escapes) {\n return this.return(escapes[this.char])\n } else if (this.char === CHAR_u) {\n return this.call(this.parseSmallUnicode, this.parseUnicodeReturn)\n } else if (this.char === CHAR_U) {\n return this.call(this.parseLargeUnicode, this.parseUnicodeReturn)\n } else {\n throw this.error(new TomlError('Unknown escape character: ' + this.char))\n }\n }\n parseUnicodeReturn (char) {\n try {\n const codePoint = parseInt(char, 16)\n if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) {\n throw this.error(new TomlError('Invalid unicode, character in range 0xD800 - 0xDFFF is reserved'))\n }\n return this.returnNow(String.fromCodePoint(codePoint))\n } catch (err) {\n throw this.error(TomlError.wrap(err))\n }\n }\n parseSmallUnicode () {\n if (!isHexit(this.char)) {\n throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n } else {\n this.consume()\n if (this.state.buf.length >= 4) return this.return()\n }\n }\n parseLargeUnicode () {\n if (!isHexit(this.char)) {\n throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'))\n } else {\n this.consume()\n if (this.state.buf.length >= 8) return this.return()\n }\n }\n\n /* NUMBERS */\n parseNumberSign () {\n this.consume()\n return this.next(this.parseMaybeSignedInfOrNan)\n }\n parseMaybeSignedInfOrNan () {\n if (this.char === CHAR_i) {\n return this.next(this.parseInf)\n } else if (this.char === CHAR_n) {\n return this.next(this.parseNan)\n } else {\n return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart)\n }\n }\n parseNumberIntegerStart () {\n if (this.char === CHAR_0) {\n this.consume()\n return this.next(this.parseNumberIntegerExponentOrDecimal)\n } else {\n return this.goto(this.parseNumberInteger)\n }\n }\n parseNumberIntegerExponentOrDecimal () {\n if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseNumberInteger () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseNoUnder () {\n if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) {\n throw this.error(new TomlError('Unexpected character, expected digit'))\n } else if (this.atEndOfWord()) {\n throw this.error(new TomlError('Incomplete number'))\n }\n return this.returnNow()\n }\n parseNoUnderHexOctBinLiteral () {\n if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD) {\n throw this.error(new TomlError('Unexpected character, expected digit'))\n } else if (this.atEndOfWord()) {\n throw this.error(new TomlError('Incomplete number'))\n }\n return this.returnNow()\n }\n parseNumberFloat () {\n if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else {\n return this.returnNow(Float(this.state.buf))\n }\n }\n parseNumberExponentSign () {\n if (isDigit(this.char)) {\n return this.goto(this.parseNumberExponent)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.call(this.parseNoUnder, this.parseNumberExponent)\n } else {\n throw this.error(new TomlError('Unexpected character, expected -, + or digit'))\n }\n }\n parseNumberExponent () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder)\n } else {\n return this.returnNow(Float(this.state.buf))\n }\n }\n\n /* NUMBERS or DATETIMES */\n parseNumberOrDateTime () {\n if (this.char === CHAR_0) {\n this.consume()\n return this.next(this.parseNumberBaseOrDateTime)\n } else {\n return this.goto(this.parseNumberOrDateTimeOnly)\n }\n }\n parseNumberOrDateTimeOnly () {\n // note, if two zeros are in a row then it MUST be a date\n if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnder, this.parseNumberInteger)\n } else if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length > 4) this.next(this.parseNumberInteger)\n } else if (this.char === CHAR_E || this.char === CHAR_e) {\n this.consume()\n return this.next(this.parseNumberExponentSign)\n } else if (this.char === CHAR_PERIOD) {\n this.consume()\n return this.call(this.parseNoUnder, this.parseNumberFloat)\n } else if (this.char === CHAR_HYPHEN) {\n return this.goto(this.parseDateTime)\n } else if (this.char === CHAR_COLON) {\n return this.goto(this.parseOnlyTimeHour)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseDateTimeOnly () {\n if (this.state.buf.length < 4) {\n if (isDigit(this.char)) {\n return this.consume()\n } else if (this.char === CHAR_COLON) {\n return this.goto(this.parseOnlyTimeHour)\n } else {\n throw this.error(new TomlError('Expected digit while parsing year part of a date'))\n }\n } else {\n if (this.char === CHAR_HYPHEN) {\n return this.goto(this.parseDateTime)\n } else {\n throw this.error(new TomlError('Expected hyphen (-) while parsing year part of date'))\n }\n }\n }\n parseNumberBaseOrDateTime () {\n if (this.char === CHAR_b) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerBin)\n } else if (this.char === CHAR_o) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerOct)\n } else if (this.char === CHAR_x) {\n this.consume()\n return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerHex)\n } else if (this.char === CHAR_PERIOD) {\n return this.goto(this.parseNumberInteger)\n } else if (isDigit(this.char)) {\n return this.goto(this.parseDateTimeOnly)\n } else {\n return this.returnNow(Integer(this.state.buf))\n }\n }\n parseIntegerHex () {\n if (isHexit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseIntegerOct () {\n if (isOctit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n parseIntegerBin () {\n if (isBit(this.char)) {\n this.consume()\n } else if (this.char === CHAR_LOWBAR) {\n return this.call(this.parseNoUnderHexOctBinLiteral)\n } else {\n const result = Integer(this.state.buf)\n /* istanbul ignore if */\n if (result.isNaN()) {\n throw this.error(new TomlError('Invalid number'))\n } else {\n return this.returnNow(result)\n }\n }\n }\n\n /* DATETIME */\n parseDateTime () {\n // we enter here having just consumed the year and about to consume the hyphen\n if (this.state.buf.length < 4) {\n throw this.error(new TomlError('Years less than 1000 must be zero padded to four characters'))\n }\n this.state.result = this.state.buf\n this.state.buf = ''\n return this.next(this.parseDateMonth)\n }\n parseDateMonth () {\n if (this.char === CHAR_HYPHEN) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Months less than 10 must be zero padded to two characters'))\n }\n this.state.result += '-' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseDateDay)\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseDateDay () {\n if (this.char === CHAR_T || this.char === CHAR_SP) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Days less than 10 must be zero padded to two characters'))\n }\n this.state.result += '-' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseStartTimeHour)\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDate(this.state.result + '-' + this.state.buf))\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseStartTimeHour () {\n if (this.atEndOfWord()) {\n return this.returnNow(createDate(this.state.result))\n } else {\n return this.goto(this.parseTimeHour)\n }\n }\n parseTimeHour () {\n if (this.char === CHAR_COLON) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n }\n this.state.result += 'T' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeMin)\n } else if (isDigit(this.char)) {\n this.consume()\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseTimeMin () {\n if (this.state.buf.length < 2 && isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeSec)\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n parseTimeSec () {\n if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length === 2) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseTimeZoneOrFraction)\n }\n } else {\n throw this.error(new TomlError('Incomplete datetime'))\n }\n }\n\n parseOnlyTimeHour () {\n /* istanbul ignore else */\n if (this.char === CHAR_COLON) {\n if (this.state.buf.length < 2) {\n throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'))\n }\n this.state.result = this.state.buf\n this.state.buf = ''\n return this.next(this.parseOnlyTimeMin)\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeMin () {\n if (this.state.buf.length < 2 && isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {\n this.state.result += ':' + this.state.buf\n this.state.buf = ''\n return this.next(this.parseOnlyTimeSec)\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeSec () {\n if (isDigit(this.char)) {\n this.consume()\n if (this.state.buf.length === 2) {\n return this.next(this.parseOnlyTimeFractionMaybe)\n }\n } else {\n throw this.error(new TomlError('Incomplete time'))\n }\n }\n parseOnlyTimeFractionMaybe () {\n this.state.result += ':' + this.state.buf\n if (this.char === CHAR_PERIOD) {\n this.state.buf = ''\n this.next(this.parseOnlyTimeFraction)\n } else {\n return this.return(createTime(this.state.result))\n }\n }\n parseOnlyTimeFraction () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.atEndOfWord()) {\n if (this.state.buf.length === 0) throw this.error(new TomlError('Expected digit in milliseconds'))\n return this.returnNow(createTime(this.state.result + '.' + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n\n parseTimeZoneOrFraction () {\n if (this.char === CHAR_PERIOD) {\n this.consume()\n this.next(this.parseDateTimeFraction)\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.next(this.parseTimeZoneHour)\n } else if (this.char === CHAR_Z) {\n this.consume()\n return this.return(createDateTime(this.state.result + this.state.buf))\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n parseDateTimeFraction () {\n if (isDigit(this.char)) {\n this.consume()\n } else if (this.state.buf.length === 1) {\n throw this.error(new TomlError('Expected digit in milliseconds'))\n } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {\n this.consume()\n this.next(this.parseTimeZoneHour)\n } else if (this.char === CHAR_Z) {\n this.consume()\n return this.return(createDateTime(this.state.result + this.state.buf))\n } else if (this.atEndOfWord()) {\n return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'))\n }\n }\n parseTimeZoneHour () {\n if (isDigit(this.char)) {\n this.consume()\n // FIXME: No more regexps\n if (/\\d\\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep)\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n }\n }\n parseTimeZoneSep () {\n if (this.char === CHAR_COLON) {\n this.consume()\n this.next(this.parseTimeZoneMin)\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected colon'))\n }\n }\n parseTimeZoneMin () {\n if (isDigit(this.char)) {\n this.consume()\n if (/\\d\\d$/.test(this.state.buf)) return this.return(createDateTime(this.state.result + this.state.buf))\n } else {\n throw this.error(new TomlError('Unexpected character in datetime, expected digit'))\n }\n }\n\n /* BOOLEAN */\n parseBoolean () {\n /* istanbul ignore else */\n if (this.char === CHAR_t) {\n this.consume()\n return this.next(this.parseTrue_r)\n } else if (this.char === CHAR_f) {\n this.consume()\n return this.next(this.parseFalse_a)\n }\n }\n parseTrue_r () {\n if (this.char === CHAR_r) {\n this.consume()\n return this.next(this.parseTrue_u)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n parseTrue_u () {\n if (this.char === CHAR_u) {\n this.consume()\n return this.next(this.parseTrue_e)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n parseTrue_e () {\n if (this.char === CHAR_e) {\n return this.return(true)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_a () {\n if (this.char === CHAR_a) {\n this.consume()\n return this.next(this.parseFalse_l)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_l () {\n if (this.char === CHAR_l) {\n this.consume()\n return this.next(this.parseFalse_s)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_s () {\n if (this.char === CHAR_s) {\n this.consume()\n return this.next(this.parseFalse_e)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n parseFalse_e () {\n if (this.char === CHAR_e) {\n return this.return(false)\n } else {\n throw this.error(new TomlError('Invalid boolean, expected true or false'))\n }\n }\n\n /* INLINE LISTS */\n parseInlineList () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n return null\n } else if (this.char === Parser.END) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CHAR_RSQB) {\n return this.return(this.state.resultArr || InlineList())\n } else {\n return this.callNow(this.parseValue, this.recordInlineListValue)\n }\n }\n recordInlineListValue (value) {\n if (this.state.resultArr) {\n const listType = this.state.resultArr[_contentType]\n const valueType = tomlType(value)\n if (listType !== valueType) {\n throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`))\n }\n } else {\n this.state.resultArr = InlineList(tomlType(value))\n }\n if (isFloat(value) || isInteger(value)) {\n // unbox now that we've verified they're ok\n this.state.resultArr.push(value.valueOf())\n } else {\n this.state.resultArr.push(value)\n }\n return this.goto(this.parseInlineListNext)\n }\n parseInlineListNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {\n return null\n } else if (this.char === CHAR_NUM) {\n return this.call(this.parseComment)\n } else if (this.char === CHAR_COMMA) {\n return this.next(this.parseInlineList)\n } else if (this.char === CHAR_RSQB) {\n return this.goto(this.parseInlineList)\n } else {\n throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n }\n }\n\n /* INLINE TABLE */\n parseInlineTable () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_RCUB) {\n return this.return(this.state.resultTable || InlineTable())\n } else {\n if (!this.state.resultTable) this.state.resultTable = InlineTable()\n return this.callNow(this.parseAssign, this.recordInlineTableValue)\n }\n }\n recordInlineTableValue (kv) {\n let target = this.state.resultTable\n let finalKey = kv.key.pop()\n for (let kw of kv.key) {\n if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n target = target[kw] = target[kw] || Table()\n }\n if (hasKey(target, finalKey)) {\n throw this.error(new TomlError(\"Can't redefine existing key\"))\n }\n if (isInteger(kv.value) || isFloat(kv.value)) {\n target[finalKey] = kv.value.valueOf()\n } else {\n target[finalKey] = kv.value\n }\n return this.goto(this.parseInlineTableNext)\n }\n parseInlineTableNext () {\n if (this.char === CHAR_SP || this.char === CTRL_I) {\n return null\n } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {\n throw this.error(new TomlError('Unterminated inline array'))\n } else if (this.char === CHAR_COMMA) {\n return this.next(this.parseInlineTable)\n } else if (this.char === CHAR_RCUB) {\n return this.goto(this.parseInlineTable)\n } else {\n throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'))\n }\n }\n }\n return TOMLParser\n}\n","'use strict'\nmodule.exports = prettyError\n\nfunction prettyError (err, buf) {\n /* istanbul ignore if */\n if (err.pos == null || err.line == null) return err\n let msg = err.message\n msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}:\\n`\n\n /* istanbul ignore else */\n if (buf && buf.split) {\n const lines = buf.split(/\\n/)\n const lineNumWidth = String(Math.min(lines.length, err.line + 3)).length\n let linePadding = ' '\n while (linePadding.length < lineNumWidth) linePadding += ' '\n for (let ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) {\n let lineNum = String(ii + 1)\n if (lineNum.length < lineNumWidth) lineNum = ' ' + lineNum\n if (err.line === ii) {\n msg += lineNum + '> ' + lines[ii] + '\\n'\n msg += linePadding + ' '\n for (let hh = 0; hh < err.col; ++hh) {\n msg += ' '\n }\n msg += '^\\n'\n } else {\n msg += lineNum + ': ' + lines[ii] + '\\n'\n }\n }\n }\n err.message = msg + '\\n'\n return err\n}\n","'use strict'\nmodule.exports = parseString\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseString (str) {\n if (global.Buffer && global.Buffer.isBuffer(str)) {\n str = str.toString('utf8')\n }\n const parser = new TOMLParser()\n try {\n parser.parse(str)\n return parser.finish()\n } catch (err) {\n throw prettyError(err, str)\n }\n}\n","'use strict'\nmodule.exports = parseAsync\n\nconst TOMLParser = require('./lib/toml-parser.js')\nconst prettyError = require('./parse-pretty-error.js')\n\nfunction parseAsync (str, opts) {\n if (!opts) opts = {}\n const index = 0\n const blocksize = opts.blocksize || 40960\n const parser = new TOMLParser()\n return new Promise((resolve, reject) => {\n setImmediate(parseAsyncNext, index, blocksize, resolve, reject)\n })\n function parseAsyncNext (index, blocksize, resolve, reject) {\n if (index >= str.length) {\n try {\n return resolve(parser.finish())\n } catch (err) {\n return reject(prettyError(err, str))\n }\n }\n try {\n parser.parse(str.slice(index, index + blocksize))\n setImmediate(parseAsyncNext, index + blocksize, blocksize, resolve, reject)\n } catch (err) {\n reject(prettyError(err, str))\n }\n }\n}\n","'use strict'\nmodule.exports = parseStream\n\nconst stream = require('stream')\nconst TOMLParser = require('./lib/toml-parser.js')\n\nfunction parseStream (stm) {\n if (stm) {\n return parseReadable(stm)\n } else {\n return parseTransform(stm)\n }\n}\n\nfunction parseReadable (stm) {\n const parser = new TOMLParser()\n stm.setEncoding('utf8')\n return new Promise((resolve, reject) => {\n let readable\n let ended = false\n let errored = false\n function finish () {\n ended = true\n if (readable) return\n try {\n resolve(parser.finish())\n } catch (err) {\n reject(err)\n }\n }\n function error (err) {\n errored = true\n reject(err)\n }\n stm.once('end', finish)\n stm.once('error', error)\n readNext()\n\n function readNext () {\n readable = true\n let data\n while ((data = stm.read()) !== null) {\n try {\n parser.parse(data)\n } catch (err) {\n return error(err)\n }\n }\n readable = false\n /* istanbul ignore if */\n if (ended) return finish()\n /* istanbul ignore if */\n if (errored) return\n stm.once('readable', readNext)\n }\n })\n}\n\nfunction parseTransform () {\n const parser = new TOMLParser()\n return new stream.Transform({\n objectMode: true,\n transform (chunk, encoding, cb) {\n try {\n parser.parse(chunk.toString(encoding))\n } catch (err) {\n this.emit('error', err)\n }\n cb()\n },\n flush (cb) {\n try {\n this.push(parser.finish())\n } catch (err) {\n this.emit('error', err)\n }\n cb()\n }\n })\n}\n","'use strict'\nmodule.exports = require('./parse-string.js')\nmodule.exports.async = require('./parse-async.js')\nmodule.exports.stream = require('./parse-stream.js')\nmodule.exports.prettyError = require('./parse-pretty-error.js')\n","'use strict'\nmodule.exports = stringify\nmodule.exports.value = stringifyInline\n\nfunction stringify (obj) {\n if (obj === null) throw typeError('null')\n if (obj === void (0)) throw typeError('undefined')\n if (typeof obj !== 'object') throw typeError(typeof obj)\n\n if (typeof obj.toJSON === 'function') obj = obj.toJSON()\n if (obj == null) return null\n const type = tomlType(obj)\n if (type !== 'table') throw typeError(type)\n return stringifyObject('', '', obj)\n}\n\nfunction typeError (type) {\n return new Error('Can only stringify objects, not ' + type)\n}\n\nfunction arrayOneTypeError () {\n return new Error(\"Array values can't have mixed types\")\n}\n\nfunction getInlineKeys (obj) {\n return Object.keys(obj).filter(key => isInline(obj[key]))\n}\nfunction getComplexKeys (obj) {\n return Object.keys(obj).filter(key => !isInline(obj[key]))\n}\n\nfunction toJSON (obj) {\n let nobj = Array.isArray(obj) ? [] : Object.prototype.hasOwnProperty.call(obj, '__proto__') ? {['__proto__']: undefined} : {}\n for (let prop of Object.keys(obj)) {\n if (obj[prop] && typeof obj[prop].toJSON === 'function' && !('toISOString' in obj[prop])) {\n nobj[prop] = obj[prop].toJSON()\n } else {\n nobj[prop] = obj[prop]\n }\n }\n return nobj\n}\n\nfunction stringifyObject (prefix, indent, obj) {\n obj = toJSON(obj)\n var inlineKeys\n var complexKeys\n inlineKeys = getInlineKeys(obj)\n complexKeys = getComplexKeys(obj)\n var result = []\n var inlineIndent = indent || ''\n inlineKeys.forEach(key => {\n var type = tomlType(obj[key])\n if (type !== 'undefined' && type !== 'null') {\n result.push(inlineIndent + stringifyKey(key) + ' = ' + stringifyAnyInline(obj[key], true))\n }\n })\n if (result.length > 0) result.push('')\n var complexIndent = prefix && inlineKeys.length > 0 ? indent + ' ' : ''\n complexKeys.forEach(key => {\n result.push(stringifyComplex(prefix, complexIndent, key, obj[key]))\n })\n return result.join('\\n')\n}\n\nfunction isInline (value) {\n switch (tomlType(value)) {\n case 'undefined':\n case 'null':\n case 'integer':\n case 'nan':\n case 'float':\n case 'boolean':\n case 'string':\n case 'datetime':\n return true\n case 'array':\n return value.length === 0 || tomlType(value[0]) !== 'table'\n case 'table':\n return Object.keys(value).length === 0\n /* istanbul ignore next */\n default:\n return false\n }\n}\n\nfunction tomlType (value) {\n if (value === undefined) {\n return 'undefined'\n } else if (value === null) {\n return 'null'\n /* eslint-disable valid-typeof */\n } else if (typeof value === 'bigint' || (Number.isInteger(value) && !Object.is(value, -0))) {\n return 'integer'\n } else if (typeof value === 'number') {\n return 'float'\n } else if (typeof value === 'boolean') {\n return 'boolean'\n } else if (typeof value === 'string') {\n return 'string'\n } else if ('toISOString' in value) {\n return isNaN(value) ? 'undefined' : 'datetime'\n } else if (Array.isArray(value)) {\n return 'array'\n } else {\n return 'table'\n }\n}\n\nfunction stringifyKey (key) {\n var keyStr = String(key)\n if (/^[-A-Za-z0-9_]+$/.test(keyStr)) {\n return keyStr\n } else {\n return stringifyBasicString(keyStr)\n }\n}\n\nfunction stringifyBasicString (str) {\n return '\"' + escapeString(str).replace(/\"/g, '\\\\\"') + '\"'\n}\n\nfunction stringifyLiteralString (str) {\n return \"'\" + str + \"'\"\n}\n\nfunction numpad (num, str) {\n while (str.length < num) str = '0' + str\n return str\n}\n\nfunction escapeString (str) {\n return str.replace(/\\\\/g, '\\\\\\\\')\n .replace(/[\\b]/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n /* eslint-disable no-control-regex */\n .replace(/([\\u0000-\\u001f\\u007f])/, c => '\\\\u' + numpad(4, c.codePointAt(0).toString(16)))\n /* eslint-enable no-control-regex */\n}\n\nfunction stringifyMultilineString (str) {\n let escaped = str.split(/\\n/).map(str => {\n return escapeString(str).replace(/\"(?=\"\")/g, '\\\\\"')\n }).join('\\n')\n if (escaped.slice(-1) === '\"') escaped += '\\\\\\n'\n return '\"\"\"\\n' + escaped + '\"\"\"'\n}\n\nfunction stringifyAnyInline (value, multilineOk) {\n let type = tomlType(value)\n if (type === 'string') {\n if (multilineOk && /\\n/.test(value)) {\n type = 'string-multiline'\n } else if (!/[\\b\\t\\n\\f\\r']/.test(value) && /\"/.test(value)) {\n type = 'string-literal'\n }\n }\n return stringifyInline(value, type)\n}\n\nfunction stringifyInline (value, type) {\n /* istanbul ignore if */\n if (!type) type = tomlType(value)\n switch (type) {\n case 'string-multiline':\n return stringifyMultilineString(value)\n case 'string':\n return stringifyBasicString(value)\n case 'string-literal':\n return stringifyLiteralString(value)\n case 'integer':\n return stringifyInteger(value)\n case 'float':\n return stringifyFloat(value)\n case 'boolean':\n return stringifyBoolean(value)\n case 'datetime':\n return stringifyDatetime(value)\n case 'array':\n return stringifyInlineArray(value.filter(_ => tomlType(_) !== 'null' && tomlType(_) !== 'undefined' && tomlType(_) !== 'nan'))\n case 'table':\n return stringifyInlineTable(value)\n /* istanbul ignore next */\n default:\n throw typeError(type)\n }\n}\n\nfunction stringifyInteger (value) {\n /* eslint-disable security/detect-unsafe-regex */\n return String(value).replace(/\\B(?=(\\d{3})+(?!\\d))/g, '_')\n}\n\nfunction stringifyFloat (value) {\n if (value === Infinity) {\n return 'inf'\n } else if (value === -Infinity) {\n return '-inf'\n } else if (Object.is(value, NaN)) {\n return 'nan'\n } else if (Object.is(value, -0)) {\n return '-0.0'\n }\n var chunks = String(value).split('.')\n var int = chunks[0]\n var dec = chunks[1] || 0\n return stringifyInteger(int) + '.' + dec\n}\n\nfunction stringifyBoolean (value) {\n return String(value)\n}\n\nfunction stringifyDatetime (value) {\n return value.toISOString()\n}\n\nfunction isNumber (type) {\n return type === 'float' || type === 'integer'\n}\nfunction arrayType (values) {\n var contentType = tomlType(values[0])\n if (values.every(_ => tomlType(_) === contentType)) return contentType\n // mixed integer/float, emit as floats\n if (values.every(_ => isNumber(tomlType(_)))) return 'float'\n return 'mixed'\n}\nfunction validateArray (values) {\n const type = arrayType(values)\n if (type === 'mixed') {\n throw arrayOneTypeError()\n }\n return type\n}\n\nfunction stringifyInlineArray (values) {\n values = toJSON(values)\n const type = validateArray(values)\n var result = '['\n var stringified = values.map(_ => stringifyInline(_, type))\n if (stringified.join(', ').length > 60 || /\\n/.test(stringified)) {\n result += '\\n ' + stringified.join(',\\n ') + '\\n'\n } else {\n result += ' ' + stringified.join(', ') + (stringified.length > 0 ? ' ' : '')\n }\n return result + ']'\n}\n\nfunction stringifyInlineTable (value) {\n value = toJSON(value)\n var result = []\n Object.keys(value).forEach(key => {\n result.push(stringifyKey(key) + ' = ' + stringifyAnyInline(value[key], false))\n })\n return '{ ' + result.join(', ') + (result.length > 0 ? ' ' : '') + '}'\n}\n\nfunction stringifyComplex (prefix, indent, key, value) {\n var valueType = tomlType(value)\n /* istanbul ignore else */\n if (valueType === 'array') {\n return stringifyArrayOfTables(prefix, indent, key, value)\n } else if (valueType === 'table') {\n return stringifyComplexTable(prefix, indent, key, value)\n } else {\n throw typeError(valueType)\n }\n}\n\nfunction stringifyArrayOfTables (prefix, indent, key, values) {\n values = toJSON(values)\n validateArray(values)\n var firstValueType = tomlType(values[0])\n /* istanbul ignore if */\n if (firstValueType !== 'table') throw typeError(firstValueType)\n var fullKey = prefix + stringifyKey(key)\n var result = ''\n values.forEach(table => {\n if (result.length > 0) result += '\\n'\n result += indent + '[[' + fullKey + ']]\\n'\n result += stringifyObject(fullKey + '.', indent, table)\n })\n return result\n}\n\nfunction stringifyComplexTable (prefix, indent, key, value) {\n var fullKey = prefix + stringifyKey(key)\n var result = ''\n if (getInlineKeys(value).length > 0) {\n result += indent + '[' + fullKey + ']\\n'\n }\n return result + stringifyObject(fullKey + '.', indent, value)\n}\n","'use strict'\nexports.parse = require('./parse.js')\nexports.stringify = require('./stringify.js')\n","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\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 = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\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 var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\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.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.defaultStyle = options['defaultStyle'] || null;\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 common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\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 this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\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\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return 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 return new Schema({\n include: schemas,\n explicit: types\n });\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 },\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 // base 8\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 // base 10 (except 0) or base 60\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 (ch === ':') break;\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 // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\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, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\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 ? '0' + obj.toString(8) : '-0' + 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|[1-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 // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[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, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\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 } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\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\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\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 // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return 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(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\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\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\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\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\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 Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\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_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\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 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 return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\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 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, startLine, startPos) {\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.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\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}\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 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 _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\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 }\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;\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);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\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 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\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 _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\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 following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\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);\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 if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\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);\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 } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\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, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (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);\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 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 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 && state.tag !== '!') {\n 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 (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\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.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);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\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 = {};\n state.anchorMap = {};\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\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\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\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\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_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\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 !== 0xFEFF /* 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// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\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 // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\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 return isPrintable(c) && c !== 0xFEFF\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// 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, testAmbiguousType) {\n var i;\n var char, prev_char;\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(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(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 prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_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 return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : 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 return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\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) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\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, testAmbiguity)) {\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, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _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\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\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 (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\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 || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\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 state.tag = explicit ? type.tag : '?';\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) {\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\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 var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, 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);\n }\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 state.dump = '!<' + state.tag + '> ' + 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 if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\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.safeLoad.bind(yaml),\n stringify: yaml.safeDump.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 /* eslint no-eval: 0 */\n try {\n if (wrap !== false) {\n str = '(function() {\\nreturn ' + str.trim() + ';\\n}());';\n }\n return eval(str) || {};\n } catch (err) {\n if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {\n return parse(str, options, false);\n }\n throw new SyntaxError(err);\n }\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 typeOf(val) === 'buffer';\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 return typeof input === 'string' ? Buffer.from(input) : input;\n};\n\n/**\n * Cast `val` to a string.\n */\n\nexports.toString = function(input) {\n if (exports.isBuffer(input)) return stripBom(String(input));\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 'coffee':\n case 'coffeescript':\n case 'cson':\n return 'coffee';\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","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { makeInitCommand } from \"./commands/init.js\";\nimport { makeStatusCommand } from \"./commands/status.js\";\nimport { makeIndexCommand } from \"./commands/index-cmd.js\";\nimport { makeSearchCommand } from \"./commands/search.js\";\nimport { makeIngestCommand } from \"./commands/ingest.js\";\nimport { makeQueryCommand } from \"./commands/query.js\";\nimport { makeLogCommand } from \"./commands/log-cmd.js\";\nimport { makeLintCommand } from \"./commands/lint.js\";\nimport { makeMcpCommand } from \"./commands/mcp.js\";\nimport { makeAgentContextCommand } from \"./commands/agent-context.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"kb\")\n .description(\"LLM-maintained wiki for project knowledge management\")\n .version(\"0.1.0\");\n\nprogram.addCommand(makeInitCommand());\nprogram.addCommand(makeStatusCommand());\nprogram.addCommand(makeIndexCommand());\nprogram.addCommand(makeSearchCommand());\nprogram.addCommand(makeIngestCommand());\nprogram.addCommand(makeQueryCommand());\nprogram.addCommand(makeLogCommand());\nprogram.addCommand(makeLintCommand());\nprogram.addCommand(makeMcpCommand());\nprogram.addCommand(makeAgentContextCommand());\n\nprogram.parse(process.argv);\n","import { Command } from \"commander\";\nimport { basename, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport { initProject } from \"kb-core\";\n\nexport function makeInitCommand(): Command {\n const cmd = new Command(\"init\");\n\n cmd\n .description(\"Initialize a new knowledge base in the current directory\")\n .argument(\n \"[project-name]\",\n \"Name of the project (defaults to directory name)\",\n )\n .action(async (projectName: string | undefined) => {\n const directory = resolve(process.cwd());\n const name = projectName ?? basename(directory);\n\n try {\n await initProject({ name, directory });\n\n console.log(chalk.green(`✓ Knowledge base initialized: ${name}`));\n console.log(\"\");\n console.log(chalk.dim(\"Created:\"));\n console.log(chalk.dim(\" .kb/config.toml — project manifest\"));\n console.log(chalk.dim(\" .kb/schema.md — LLM instructions\"));\n console.log(chalk.dim(\" sources/ — raw source materials\"));\n console.log(chalk.dim(\" wiki/_index.md — wiki root\"));\n console.log(chalk.dim(\" log.md — activity log\"));\n console.log(\"\");\n console.log(\n chalk.cyan(`Run ${chalk.bold(\"kb ingest <source>\")} to add content.`),\n );\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { mkdir, writeFile, access, rm } from \"node:fs/promises\";\nimport { join, basename } from \"node:path\";\nimport TOML from \"@iarna/toml\";\n\nexport interface InitOptions {\n name: string;\n directory: string; // absolute path where to init\n}\n\nfunction resolveProjectName(options: InitOptions): string {\n return options.name || basename(options.directory);\n}\n\nfunction buildConfigToml(projectName: string): string {\n const config = {\n project: {\n name: projectName,\n version: \"0.1.0\",\n },\n directories: {\n sources: \"sources\",\n wiki: \"wiki\",\n },\n llm: {\n provider: \"anthropic\",\n model: \"claude-sonnet-4-20250514\",\n },\n };\n\n const tomlStr = TOML.stringify(config as TOML.JsonMap);\n return (\n tomlStr +\n '\\n[dependencies]\\n# shared-glossary = { path = \"../shared-glossary\" }\\n'\n );\n}\n\nfunction buildSchemaMd(): string {\n return `# KB Schema — LLM Instructions\n\nThis file defines the conventions for this knowledge base. The \\`kb\\` CLI and any\nLLM operating on this wiki MUST follow these rules.\n\n---\n\n## Wiki Structure Conventions\n\n- All pages live under the \\`wiki/\\` directory.\n- \\`wiki/_index.md\\` is the wiki root and serves as a table of contents.\n- Sub-topics may be organised into sub-directories: \\`wiki/<topic>/_index.md\\`.\n- File names use kebab-case, e.g. \\`wiki/authentication-flow.md\\`.\n- Every page must have a valid YAML frontmatter block.\n\n---\n\n## Frontmatter Schema\n\nEvery wiki page must begin with a YAML frontmatter block:\n\n\\`\\`\\`yaml\n---\ntitle: <Human-readable page title>\ntags: [tag1, tag2] # optional; array of lowercase strings\ncreated: <ISO 8601 date> # e.g. 2026-04-05\nupdated: <ISO 8601 date> # updated whenever content changes\nsource: <path or URL> # optional; original source material\n---\n\\`\\`\\`\n\nRequired fields: \\`title\\`, \\`created\\`.\n\n---\n\n## Page Templates\n\n### Entity Page\nUse for: people, systems, services, tools.\n\n\\`\\`\\`markdown\n---\ntitle: <Entity Name>\ntags: [entity]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# <Entity Name>\n\n**Type**: <system | person | service | tool>\n\n## Overview\n\n<One-paragraph description.>\n\n## Key Attributes\n\n- **Attribute**: value\n\n## Related\n\n- [[related-page]]\n\\`\\`\\`\n\n### Concept Page\nUse for: ideas, patterns, terminology.\n\n\\`\\`\\`markdown\n---\ntitle: <Concept Name>\ntags: [concept]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# <Concept Name>\n\n## Definition\n\n<Clear definition in 1-3 sentences.>\n\n## Context\n\n<When and why this concept matters in the project.>\n\n## See Also\n\n- [[related-concept]]\n\\`\\`\\`\n\n### Source Summary Page\nUse for: summarised source material (docs, papers, meetings).\n\n\\`\\`\\`markdown\n---\ntitle: Summary — <Source Title>\ntags: [source-summary]\ncreated: <ISO date>\nsource: <path or URL>\n---\n\n# Summary — <Source Title>\n\n## Key Points\n\n- Point one\n- Point two\n\n## Decisions / Implications\n\n<What this source means for the project.>\n\n## Raw Source\n\nSee \\`sources/<filename>\\`.\n\\`\\`\\`\n\n### Comparison Page\nUse for: side-by-side evaluation of options.\n\n\\`\\`\\`markdown\n---\ntitle: Comparison — <Topic>\ntags: [comparison]\ncreated: <ISO date>\nupdated: <ISO date>\n---\n\n# Comparison — <Topic>\n\n| Criterion | Option A | Option B |\n|-----------|----------|----------|\n| ... | ... | ... |\n\n## Recommendation\n\n<Which option and why.>\n\\`\\`\\`\n\n---\n\n## Wikilink Conventions\n\n- Basic link: \\`[[page-name]]\\` — links to \\`wiki/page-name.md\\`.\n- Display text: \\`[[page-name|display text]]\\` — renders as \"display text\".\n- Cross-directory: \\`[[topic/sub-page]]\\`.\n- All wikilink targets must be lowercase kebab-case matching the file name without \\`.md\\`.\n\n---\n\n## Ingest Workflow\n\n1. Place the source file in \\`sources/\\` (PDF, Markdown, plain text, etc.).\n2. Run \\`kb ingest sources/<filename>\\`.\n3. The CLI reads the file, calls the configured LLM, and generates a source-summary\n page in \\`wiki/\\`.\n4. The summary page is linked from \\`wiki/_index.md\\` under **Sources**.\n5. An entry is appended to \\`log.md\\`.\n\n---\n\n## Query Workflow\n\n1. Run \\`kb query \"<natural-language question>\"\\`.\n2. The CLI searches the wiki index for relevant pages.\n3. Relevant page content is assembled into a prompt context.\n4. The LLM answers the question, citing wikilinks.\n5. The answer is printed to stdout. Nothing is written to disk unless \\`--save\\` is passed.\n\n---\n\n## Lint Workflow\n\nRun \\`kb lint\\` to check for:\n\n- Pages missing required frontmatter fields (\\`title\\`, \\`created\\`).\n- Broken wikilinks (targets that don't resolve to an existing page).\n- Pages not reachable from \\`wiki/_index.md\\`.\n- Duplicate page titles across the wiki.\n- Frontmatter fields with invalid types or formats.\n\nLint exits with code 0 on success, 1 if errors are found.\n`;\n}\n\nfunction buildIndexMd(projectName: string, isoDate: string): string {\n return `---\ntitle: ${projectName} Knowledge Base\ncreated: ${isoDate}\n---\n\n# ${projectName} Knowledge Base\n\n> This wiki is maintained by the \\`kb\\` CLI tool.\n\n## Pages\n\n(No pages yet. Use \\`kb ingest <source>\\` to add content.)\n\n## Sources\n\n(No sources yet.)\n`;\n}\n\nfunction buildLogMd(projectName: string, isoDate: string): string {\n return `# Activity Log\n\n## ${isoDate} — Project initialized\n\nProject \\`${projectName}\\` initialized.\n`;\n}\n\nasync function kbDirExists(directory: string): Promise<boolean> {\n try {\n await access(join(directory, \".kb\"));\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function initProject(options: InitOptions): Promise<void> {\n const projectName = resolveProjectName(options);\n const { directory } = options;\n\n if (await kbDirExists(directory)) {\n throw new Error(\n `Knowledge base already initialized: .kb/ already exists in ${directory}`,\n );\n }\n\n const isoDate = new Date().toISOString().split(\"T\")[0]!;\n\n try {\n await Promise.all([\n mkdir(join(directory, \".kb\"), { recursive: true }),\n mkdir(join(directory, \"sources\"), { recursive: true }),\n mkdir(join(directory, \"wiki\"), { recursive: true }),\n ]);\n\n await Promise.all([\n writeFile(\n join(directory, \".kb\", \"config.toml\"),\n buildConfigToml(projectName),\n \"utf8\",\n ),\n writeFile(join(directory, \".kb\", \"schema.md\"), buildSchemaMd(), \"utf8\"),\n writeFile(join(directory, \"sources\", \".gitkeep\"), \"\", \"utf8\"),\n writeFile(\n join(directory, \"wiki\", \"_index.md\"),\n buildIndexMd(projectName, isoDate),\n \"utf8\",\n ),\n writeFile(\n join(directory, \"log.md\"),\n buildLogMd(projectName, isoDate),\n \"utf8\",\n ),\n ]);\n } catch (error) {\n // Rollback: remove .kb/ if it was created\n await rm(join(directory, \".kb\"), { recursive: true, force: true });\n throw error;\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport TOML from \"@iarna/toml\";\n\nexport interface KbConfig {\n project: {\n name: string;\n version: string;\n };\n directories: {\n sources: string;\n wiki: string;\n };\n llm: {\n provider: \"anthropic\" | \"openai\" | \"ollama\";\n model: string;\n };\n dependencies: Record<\n string,\n { path?: string; git?: string; branch?: string; mode?: string }\n >;\n}\n\nconst VALID_PROVIDERS = [\"anthropic\", \"openai\", \"ollama\"] as const;\n\nfunction requireSafeRelativePath(val: string, field: string): void {\n if (val.startsWith(\"/\") || val.split(\"/\").includes(\"..\")) {\n throw new Error(\n `Invalid config: ${field} must be a safe relative path, got \"${val}\"`,\n );\n }\n}\n\nfunction requireString(\n obj: Record<string, unknown>,\n key: string,\n context: string,\n): string {\n const val = obj[key];\n if (typeof val !== \"string\" || val.trim() === \"\") {\n throw new Error(\n `Invalid config: missing required field \"${context}.${key}\"`,\n );\n }\n return val;\n}\n\nfunction requireSection(\n obj: Record<string, unknown>,\n key: string,\n): Record<string, unknown> {\n const val = obj[key];\n if (\n val === undefined ||\n val === null ||\n typeof val !== \"object\" ||\n Array.isArray(val)\n ) {\n throw new Error(`Invalid config: missing required section \"[${key}]\"`);\n }\n return val as Record<string, unknown>;\n}\n\nexport async function parseConfig(configPath: string): Promise<KbConfig> {\n let raw: string;\n try {\n raw = await readFile(configPath, \"utf8\");\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Config file not found: ${configPath}\\n${message}`);\n }\n\n let parsed: Record<string, unknown>;\n try {\n parsed = TOML.parse(raw) as Record<string, unknown>;\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Invalid TOML in config file ${configPath}: ${message}`);\n }\n\n const project = requireSection(parsed, \"project\");\n const name = requireString(project, \"name\", \"project\");\n const version = requireString(project, \"version\", \"project\");\n\n const directories = requireSection(parsed, \"directories\");\n const sources = requireString(directories, \"sources\", \"directories\");\n requireSafeRelativePath(sources, \"directories.sources\");\n const wiki = requireString(directories, \"wiki\", \"directories\");\n requireSafeRelativePath(wiki, \"directories.wiki\");\n\n const llm = requireSection(parsed, \"llm\");\n const providerRaw = requireString(llm, \"provider\", \"llm\");\n if (!(VALID_PROVIDERS as readonly string[]).includes(providerRaw)) {\n throw new Error(\n `Invalid config: llm.provider must be one of ${VALID_PROVIDERS.join(\", \")}, got \"${providerRaw}\"`,\n );\n }\n const provider = providerRaw as KbConfig[\"llm\"][\"provider\"];\n const model = requireString(llm, \"model\", \"llm\");\n\n const rawDeps = parsed[\"dependencies\"];\n const dependencies: KbConfig[\"dependencies\"] = {};\n if (\n rawDeps !== undefined &&\n rawDeps !== null &&\n typeof rawDeps === \"object\" &&\n !Array.isArray(rawDeps)\n ) {\n for (const [depKey, depVal] of Object.entries(\n rawDeps as Record<string, unknown>,\n )) {\n if (\n typeof depVal === \"object\" &&\n depVal !== null &&\n !Array.isArray(depVal)\n ) {\n const dep = depVal as Record<string, unknown>;\n dependencies[depKey] = {\n ...(typeof dep[\"path\"] === \"string\" ? { path: dep[\"path\"] } : {}),\n ...(typeof dep[\"git\"] === \"string\" ? { git: dep[\"git\"] } : {}),\n ...(typeof dep[\"branch\"] === \"string\"\n ? { branch: dep[\"branch\"] }\n : {}),\n ...(typeof dep[\"mode\"] === \"string\" ? { mode: dep[\"mode\"] } : {}),\n };\n }\n }\n }\n\n return {\n project: { name, version },\n directories: { sources, wiki },\n llm: { provider, model },\n dependencies,\n };\n}\n","import { access } from \"node:fs/promises\";\nimport { join, dirname, resolve } from \"node:path\";\nimport { parseConfig, type KbConfig } from \"./config.js\";\n\nexport interface Project {\n name: string;\n root: string;\n kbDir: string;\n sourcesDir: string;\n wikiDir: string;\n config: KbConfig;\n}\n\nasync function hasKbDir(dir: string): Promise<boolean> {\n try {\n await access(join(dir, \".kb\", \"config.toml\"));\n return true;\n } catch {\n return false;\n }\n}\n\nasync function findProjectRoot(startDir: string): Promise<string | null> {\n let current = resolve(startDir);\n\n while (true) {\n if (await hasKbDir(current)) {\n return current;\n }\n const parent = dirname(current);\n if (parent === current) {\n // Reached filesystem root\n return null;\n }\n current = parent;\n }\n}\n\nexport async function loadProject(startDir: string): Promise<Project> {\n const root = await findProjectRoot(startDir);\n if (root === null) {\n throw new Error(\n `No kb project found. Run \"kb init\" to initialize a knowledge base in the current directory.`,\n );\n }\n\n const kbDir = join(root, \".kb\");\n const configPath = join(kbDir, \"config.toml\");\n const config = await parseConfig(configPath);\n\n return {\n name: config.project.name,\n root,\n kbDir,\n sourcesDir: join(root, config.directories.sources),\n wikiDir: join(root, config.directories.wiki),\n config,\n };\n}\n\nexport async function tryLoadProject(\n startDir: string,\n): Promise<Project | null> {\n try {\n return await loadProject(startDir);\n } catch (err: unknown) {\n if (err instanceof Error && /no kb project found/i.test(err.message)) {\n return null;\n }\n throw err;\n }\n}\n","import Database from \"better-sqlite3\";\nimport { join } from \"node:path\";\nimport type { Project } from \"./project.js\";\n\nconst SCHEMA_SQL = `\nCREATE VIRTUAL TABLE IF NOT EXISTS pages USING fts5(\n path,\n title,\n content,\n tags,\n project,\n tokenize='porter unicode61'\n);\n\nCREATE TABLE IF NOT EXISTS page_meta (\n path TEXT PRIMARY KEY,\n sha256 TEXT NOT NULL,\n mtime INTEGER NOT NULL,\n word_count INTEGER NOT NULL DEFAULT 0,\n frontmatter TEXT NOT NULL DEFAULT '{}',\n outgoing_links TEXT NOT NULL DEFAULT '[]',\n updated_at INTEGER NOT NULL\n);\n`;\n\nexport function openDb(project: Project): Database.Database {\n const dbPath = join(project.kbDir, \"index.db\");\n const db = new Database(dbPath);\n db.pragma(\"journal_mode = WAL\");\n db.exec(SCHEMA_SQL);\n return db;\n}\n\nexport function closeDb(db: Database.Database): void {\n db.close();\n}\n","import { readFile } from \"node:fs/promises\";\nimport matter from \"gray-matter\";\n\nexport interface ParsedPage {\n path: string;\n title: string;\n content: string;\n tags: string;\n frontmatter: Record<string, unknown>;\n outgoingLinks: string[];\n wordCount: number;\n}\n\nconst WIKILINK_RE = /\\[\\[([^\\]|]+)(?:\\|[^\\]]+)?\\]\\]/g;\nconst H1_RE = /^#\\s+(.+)$/m;\n\nfunction extractTitle(\n fm: Record<string, unknown>,\n content: string,\n relativePath: string,\n): string {\n if (typeof fm[\"title\"] === \"string\" && fm[\"title\"].trim() !== \"\") {\n return fm[\"title\"].trim();\n }\n const h1Match = H1_RE.exec(content);\n if (h1Match) {\n return h1Match[1]!.trim();\n }\n // Fallback: use filename without extension\n const filename = relativePath.split(\"/\").pop() ?? relativePath;\n return filename.replace(/\\.md$/i, \"\");\n}\n\nfunction extractTags(fm: Record<string, unknown>): string {\n const tags = fm[\"tags\"];\n if (!Array.isArray(tags)) return \"\";\n return tags.filter((t): t is string => typeof t === \"string\").join(\",\");\n}\n\nfunction extractWikiLinks(content: string): string[] {\n const links: string[] = [];\n let match: RegExpExecArray | null;\n const re = new RegExp(WIKILINK_RE.source, \"g\");\n while ((match = re.exec(content)) !== null) {\n links.push(match[1]!.trim());\n }\n return links;\n}\n\nfunction countWords(text: string): number {\n const trimmed = text.trim();\n if (trimmed === \"\") return 0;\n return trimmed.split(/\\s+/).length;\n}\n\nexport async function parsePage(\n filePath: string,\n relativePath: string,\n rawContent?: string,\n): Promise<ParsedPage> {\n const raw = rawContent ?? (await readFile(filePath, \"utf8\"));\n const parsed = matter(raw);\n const fm = parsed.data as Record<string, unknown>;\n const content = parsed.content;\n\n const title = extractTitle(fm, content, relativePath);\n const tags = extractTags(fm);\n const outgoingLinks = extractWikiLinks(content);\n const wordCount = countWords(content);\n\n return {\n path: relativePath,\n title,\n content,\n tags,\n frontmatter: fm,\n outgoingLinks,\n wordCount,\n };\n}\n","import { createHash } from \"node:crypto\";\nimport { readFile, stat, readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport Database from \"better-sqlite3\";\nimport type { Project } from \"./project.js\";\nimport { parsePage } from \"./markdown.js\";\nimport { openDb, closeDb } from \"./db.js\";\n\nexport interface IndexStats {\n indexed: number;\n skipped: number;\n deleted: number;\n errors: number;\n}\n\nasync function collectMdFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile() && e.name.endsWith(\".md\"))\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\nfunction sha256(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n\ninterface PageMetaRow {\n sha256: string;\n}\n\ninterface UpsertStmts {\n deletePages: Database.Statement;\n insertPage: Database.Statement;\n upsertMeta: Database.Statement;\n}\n\nfunction upsertParsedPage(\n stmts: UpsertStmts,\n project: Project,\n page: Awaited<ReturnType<typeof parsePage>>,\n hash: string,\n mtime: number,\n): void {\n stmts.deletePages.run(page.path);\n stmts.insertPage.run(\n page.path,\n page.title,\n page.content,\n page.tags,\n project.name,\n );\n stmts.upsertMeta.run(\n page.path,\n hash,\n mtime,\n page.wordCount,\n JSON.stringify(page.frontmatter),\n JSON.stringify(page.outgoingLinks),\n Date.now(),\n );\n}\n\nexport async function indexProject(\n project: Project,\n rebuild = false,\n): Promise<IndexStats> {\n const db = openDb(project);\n try {\n if (rebuild) {\n db.exec(\"DELETE FROM pages; DELETE FROM page_meta;\");\n }\n\n const files = await collectMdFiles(project.wikiDir);\n const stats: IndexStats = { indexed: 0, skipped: 0, deleted: 0, errors: 0 };\n\n const getMetaStmt = db.prepare<[string], PageMetaRow>(\n \"SELECT sha256 FROM page_meta WHERE path = ?\",\n );\n\n const upsertStmts: UpsertStmts = {\n deletePages: db.prepare(\"DELETE FROM pages WHERE path = ?\"),\n insertPage: db.prepare(\n \"INSERT INTO pages(path, title, content, tags, project) VALUES (?, ?, ?, ?, ?)\",\n ),\n upsertMeta: db.prepare(`\n INSERT INTO page_meta(path, sha256, mtime, word_count, frontmatter, outgoing_links, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(path) DO UPDATE SET\n sha256 = excluded.sha256,\n mtime = excluded.mtime,\n word_count = excluded.word_count,\n frontmatter = excluded.frontmatter,\n outgoing_links = excluded.outgoing_links,\n updated_at = excluded.updated_at\n `),\n };\n\n const deleteStalePages = db.prepare(\"DELETE FROM pages WHERE path = ?\");\n const deleteStaleMeta = db.prepare(\"DELETE FROM page_meta WHERE path = ?\");\n const listMetaStmt = db.prepare<[], { path: string }>(\n \"SELECT path FROM page_meta\",\n );\n\n const processFile = db.transaction(\n (\n page: Awaited<ReturnType<typeof parsePage>>,\n hash: string,\n mtime: number,\n ) => {\n upsertParsedPage(upsertStmts, project, page, hash, mtime);\n },\n );\n\n const onDiskPaths = new Set<string>();\n\n for (const absPath of files) {\n const relPath = relative(project.root, absPath);\n onDiskPaths.add(relPath);\n\n let raw: string;\n try {\n raw = await readFile(absPath, \"utf8\");\n } catch (err) {\n stats.errors++;\n continue;\n }\n\n const hash = sha256(raw);\n const existing = getMetaStmt.get(relPath);\n\n if (existing && existing.sha256 === hash) {\n stats.skipped++;\n continue;\n }\n\n let fileStat: Awaited<ReturnType<typeof stat>>;\n try {\n fileStat = await stat(absPath);\n } catch {\n stats.errors++;\n continue;\n }\n\n let page: Awaited<ReturnType<typeof parsePage>>;\n try {\n page = await parsePage(absPath, relPath, raw);\n } catch {\n stats.errors++;\n continue;\n }\n\n try {\n processFile(page, hash, Math.floor(fileStat.mtimeMs));\n stats.indexed++;\n } catch {\n stats.errors++;\n }\n }\n\n // Remove entries for deleted files\n const allMetaPaths = listMetaStmt.all().map((r) => r.path);\n\n const stalePaths = allMetaPaths.filter((p) => !onDiskPaths.has(p));\n\n const deleteStale = db.transaction((paths: string[]) => {\n for (const p of paths) {\n deleteStalePages.run(p);\n deleteStaleMeta.run(p);\n }\n });\n\n deleteStale(stalePaths);\n stats.deleted += stalePaths.length;\n\n return stats;\n } finally {\n closeDb(db);\n }\n}\n","import Database from \"better-sqlite3\";\n\nexport interface SearchResult {\n rank: number;\n path: string;\n title: string;\n snippet: string;\n tags: string[];\n}\n\nexport interface SearchOptions {\n limit?: number;\n tags?: string[];\n}\n\ninterface FtsRow {\n path: string;\n title: string;\n tags: string;\n rank: number;\n snippet: string;\n}\n\nfunction sanitizeFtsQuery(query: string): string {\n // Split into tokens, quote each one to escape special FTS5 chars.\n // Using individual quoted tokens (AND logic) instead of a single phrase\n // so non-adjacent words still match.\n const tokens = query\n .trim()\n .split(/\\s+/)\n .filter((t) => t.length > 0);\n if (tokens.length === 0) return '\"\"';\n return tokens.map((t) => `\"${t.replace(/\"/g, '\"\"')}\"`).join(\" \");\n}\n\nfunction parseTags(raw: string): string[] {\n if (!raw || raw.trim() === \"\") return [];\n return raw\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0);\n}\n\nexport function searchWiki(\n db: Database.Database,\n query: string,\n projectName: string,\n options?: SearchOptions,\n): SearchResult[] {\n if (!query || query.trim() === \"\") {\n return [];\n }\n\n const limit = options?.limit ?? 10;\n const ftsQuery = sanitizeFtsQuery(query.trim());\n\n // Build dynamic tag WHERE clauses so filtering happens in SQL\n const filterTags = options?.tags?.length\n ? options.tags\n .map((t) => t.trim().toLowerCase())\n .filter((t) => t.length > 0)\n : [];\n\n const tagClauses = filterTags.map(() => \"AND lower(tags) LIKE ?\").join(\" \");\n const tagParams = filterTags.map((t) => `%${t}%`);\n\n const stmt = db.prepare<[string, string, ...string[], number], FtsRow>(`\n SELECT path, title, tags, bm25(pages) as rank,\n snippet(pages, 2, '', '', '...', 8) as snippet\n FROM pages\n WHERE pages MATCH ? AND project = ?\n ${tagClauses}\n ORDER BY rank\n LIMIT ?\n `);\n\n const rows = stmt.all(ftsQuery, projectName, ...tagParams, limit);\n\n const results: SearchResult[] = rows.map((row) => ({\n rank: row.rank,\n path: row.path,\n title: row.title,\n snippet: row.snippet,\n tags: parseTags(row.tags),\n }));\n\n return results;\n}\n","import { readFile } from \"node:fs/promises\";\nimport { basename, extname } from \"node:path\";\n\nexport type SourceType = \"markdown\" | \"text\" | \"pdf\" | \"url\";\n\nexport interface SourceContent {\n type: SourceType;\n originalPath: string;\n content: string;\n filename: string;\n}\n\nfunction sanitizeFilename(name: string): string {\n return name.toLowerCase().replace(/\\s/g, \"-\");\n}\n\nfunction detectType(sourcePath: string): SourceType {\n if (sourcePath.startsWith(\"http://\") || sourcePath.startsWith(\"https://\")) {\n return \"url\";\n }\n const ext = extname(sourcePath).toLowerCase();\n if (ext === \".pdf\") return \"pdf\";\n if (ext === \".md\") return \"markdown\";\n return \"text\";\n}\n\nfunction filenameFromUrl(url: string): string {\n try {\n const parsed = new URL(url);\n const parts = parsed.pathname.split(\"/\").filter(Boolean);\n const last = parts[parts.length - 1];\n const pagePart = last\n ? last.includes(\".\")\n ? last\n : `${last}.html`\n : \"index.html\";\n return sanitizeFilename(`${parsed.hostname}-${pagePart}`);\n } catch {\n return \"url-content.html\";\n }\n}\n\nfunction stripHtml(html: string): string {\n // Remove script and style blocks entirely\n let text = html.replace(/<script[\\s\\S]*?<\\/script>/gi, \" \");\n text = text.replace(/<style[\\s\\S]*?<\\/style>/gi, \" \");\n // Strip remaining tags\n text = text.replace(/<[^>]+>/g, \" \");\n // Decode common HTML entities\n text = text\n .replace(/&amp;/gi, \"&\")\n .replace(/&lt;/gi, \"<\")\n .replace(/&gt;/gi, \">\")\n .replace(/&quot;/gi, '\"')\n .replace(/&#39;/gi, \"'\")\n .replace(/&nbsp;/gi, \" \");\n // Collapse whitespace\n text = text.replace(/\\s+/g, \" \").trim();\n return text;\n}\n\nasync function readPdf(filePath: string): Promise<string> {\n const pdfParse: (buf: Buffer) => Promise<{ text: string }> =\n await import(\"pdf-parse\")\n .then((m) => m.default ?? m)\n .catch(() => {\n throw new Error(\n \"PDF support requires pdf-parse: run `npm install pdf-parse` in your project\",\n );\n });\n const buffer = await readFile(filePath);\n const data = await pdfParse(buffer);\n return data.text;\n}\n\nfunction isPrivateUrl(url: string): boolean {\n try {\n const { hostname } = new URL(url);\n return (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname.startsWith(\"169.254.\") || // link-local\n hostname.startsWith(\"10.\") ||\n hostname.startsWith(\"192.168.\") ||\n /^172\\.(1[6-9]|2\\d|3[01])\\./.test(hostname)\n );\n } catch {\n return false;\n }\n}\n\nasync function fetchUrl(url: string): Promise<string> {\n if (isPrivateUrl(url)) {\n throw new Error(`Fetching private/localhost URLs is not allowed: ${url}`);\n }\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch URL ${url}: HTTP ${response.status} ${response.statusText}`,\n );\n }\n const html = await response.text();\n return stripHtml(html);\n}\n\nexport async function readSource(sourcePath: string): Promise<SourceContent> {\n const type = detectType(sourcePath);\n\n if (type === \"url\") {\n const content = await fetchUrl(sourcePath);\n const filename = filenameFromUrl(sourcePath);\n return { type, originalPath: sourcePath, content, filename };\n }\n\n if (type === \"pdf\") {\n const content = await readPdf(sourcePath);\n const raw = basename(sourcePath);\n const filename = sanitizeFilename(raw);\n return { type, originalPath: sourcePath, content, filename };\n }\n\n // markdown or text\n const content = await readFile(sourcePath, \"utf8\");\n const raw = basename(sourcePath);\n const filename = sanitizeFilename(raw);\n return { type, originalPath: sourcePath, content, filename };\n}\n","import type { KbConfig } from \"./config.js\";\n\nexport interface LlmMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface LlmAdapter {\n complete(messages: LlmMessage[], systemPrompt: string): Promise<string>;\n}\n\nfunction createAnthropicAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const apiKey = process.env[\"ANTHROPIC_API_KEY\"];\n if (!apiKey) {\n throw new Error(\"ANTHROPIC_API_KEY environment variable is not set\");\n }\n const Anthropic = await import(\"@anthropic-ai/sdk\").then(\n (m) => m.default ?? m,\n );\n const client = new Anthropic({ apiKey });\n const response = await client.messages.create({\n model,\n max_tokens: 8192,\n system: systemPrompt,\n messages: messages.map((m) => ({\n role: m.role,\n content: m.content,\n })),\n });\n const block = response.content[0];\n if (!block || block.type !== \"text\") {\n throw new Error(\"Anthropic returned no text content\");\n }\n return block.text;\n },\n };\n}\n\nfunction createOpenAiAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const apiKey = process.env[\"OPENAI_API_KEY\"];\n if (!apiKey) {\n throw new Error(\"OPENAI_API_KEY environment variable is not set\");\n }\n const body = {\n model,\n messages: [\n { role: \"system\", content: systemPrompt },\n ...messages.map((m) => ({ role: m.role, content: m.content })),\n ],\n };\n const response = await fetch(\n \"https://api.openai.com/v1/chat/completions\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(body),\n },\n );\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`OpenAI API error: HTTP ${response.status} — ${text}`);\n }\n const data = (await response.json()) as {\n choices: Array<{ message: { content: string } }>;\n };\n const content = data.choices[0]?.message?.content;\n if (!content) {\n throw new Error(\"OpenAI returned no content\");\n }\n return content;\n },\n };\n}\n\nfunction createOllamaAdapter(model: string): LlmAdapter {\n return {\n async complete(messages, systemPrompt) {\n const baseUrl =\n process.env[\"OLLAMA_BASE_URL\"] ?? \"http://localhost:11434\";\n const body = {\n model,\n messages: [\n { role: \"system\", content: systemPrompt },\n ...messages.map((m) => ({ role: m.role, content: m.content })),\n ],\n stream: false,\n };\n const response = await fetch(`${baseUrl}/api/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Ollama API error: HTTP ${response.status} — ${text}`);\n }\n const data = (await response.json()) as {\n message?: { content: string };\n };\n const content = data.message?.content;\n if (!content) {\n throw new Error(\"Ollama returned no content\");\n }\n return content;\n },\n };\n}\n\nexport function createLlmAdapter(config: KbConfig): LlmAdapter {\n const { provider, model } = config.llm;\n switch (provider) {\n case \"anthropic\":\n return createAnthropicAdapter(model);\n case \"openai\":\n return createOpenAiAdapter(model);\n case \"ollama\":\n return createOllamaAdapter(model);\n default: {\n const _exhaustive: never = provider;\n throw new Error(`Unsupported LLM provider: ${String(_exhaustive)}`);\n }\n }\n}\n","import { readFile, writeFile, mkdir, appendFile } from \"node:fs/promises\";\nimport { join, dirname, resolve } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport type { LlmAdapter } from \"./llm.js\";\nimport type { IngestResult } from \"./ingest-types.js\";\nimport { readSource } from \"./source-reader.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport interface IngestOptions {\n apply?: boolean;\n batch?: boolean;\n}\n\nexport interface IngestPlan {\n result: IngestResult;\n sourceFile: string;\n dryRun: boolean;\n}\n\nconst SYSTEM_PROMPT = `You are an AI assistant maintaining a knowledge base wiki.\nYou will be given a new source document and the current state of the wiki.\nYour task is to integrate the new knowledge into the wiki.\n\nReturn ONLY a JSON object matching this exact schema (no markdown fences):\n{\n \"summary\": { \"path\": \"wiki/sources/<filename>-summary.md\", \"content\": \"...\" },\n \"updates\": [{ \"path\": \"...\", \"content\": \"...\", \"reason\": \"...\" }],\n \"newPages\": [{ \"path\": \"...\", \"content\": \"...\", \"reason\": \"...\" }],\n \"indexUpdate\": \"...\",\n \"logEntry\": \"...\"\n}`;\n\nfunction assertWithinRoot(absPath: string, root: string): void {\n const resolvedPath = resolve(absPath);\n const resolvedRoot = resolve(root) + \"/\";\n if (!resolvedPath.startsWith(resolvedRoot)) {\n throw new Error(\n `Unsafe path rejected: \"${absPath}\" is outside project root`,\n );\n }\n}\n\nasync function readFileSafe(filePath: string): Promise<string> {\n try {\n return await readFile(filePath, \"utf8\");\n } catch {\n return \"\";\n }\n}\n\nfunction parseIngestResult(raw: string): IngestResult {\n const cleaned = raw\n .replace(/^```(?:json)?\\s*/i, \"\")\n .replace(/\\s*```\\s*$/i, \"\")\n .trim();\n let parsed: unknown;\n try {\n parsed = JSON.parse(cleaned);\n } catch (err) {\n throw new Error(\n `Invalid LLM response: could not parse JSON. Raw response: ${cleaned.slice(0, 200)}`,\n );\n }\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"Invalid LLM response: expected a JSON object\");\n }\n\n const obj = parsed as Record<string, unknown>;\n\n if (\n !obj[\"summary\"] ||\n typeof obj[\"summary\"] !== \"object\" ||\n Array.isArray(obj[\"summary\"])\n ) {\n throw new Error('Invalid LLM response: missing \"summary\" object');\n }\n\n const summary = obj[\"summary\"] as Record<string, unknown>;\n if (\n typeof summary[\"path\"] !== \"string\" ||\n typeof summary[\"content\"] !== \"string\"\n ) {\n throw new Error(\n 'Invalid LLM response: \"summary\" must have \"path\" and \"content\" strings',\n );\n }\n\n if (!Array.isArray(obj[\"updates\"])) {\n throw new Error('Invalid LLM response: \"updates\" must be an array');\n }\n\n if (!Array.isArray(obj[\"newPages\"])) {\n throw new Error('Invalid LLM response: \"newPages\" must be an array');\n }\n\n if (typeof obj[\"indexUpdate\"] !== \"string\") {\n throw new Error('Invalid LLM response: \"indexUpdate\" must be a string');\n }\n\n if (typeof obj[\"logEntry\"] !== \"string\") {\n throw new Error('Invalid LLM response: \"logEntry\" must be a string');\n }\n\n const updates = (obj[\"updates\"] as unknown[]).map((u, i) => {\n if (typeof u !== \"object\" || u === null || Array.isArray(u)) {\n throw new Error(`Invalid LLM response: updates[${i}] must be an object`);\n }\n const update = u as Record<string, unknown>;\n if (\n typeof update[\"path\"] !== \"string\" ||\n typeof update[\"content\"] !== \"string\" ||\n typeof update[\"reason\"] !== \"string\"\n ) {\n throw new Error(\n `Invalid LLM response: updates[${i}] must have path, content, and reason strings`,\n );\n }\n return {\n path: update[\"path\"],\n content: update[\"content\"],\n reason: update[\"reason\"],\n };\n });\n\n const newPages = (obj[\"newPages\"] as unknown[]).map((p, i) => {\n if (typeof p !== \"object\" || p === null || Array.isArray(p)) {\n throw new Error(`Invalid LLM response: newPages[${i}] must be an object`);\n }\n const page = p as Record<string, unknown>;\n if (\n typeof page[\"path\"] !== \"string\" ||\n typeof page[\"content\"] !== \"string\" ||\n typeof page[\"reason\"] !== \"string\"\n ) {\n throw new Error(\n `Invalid LLM response: newPages[${i}] must have path, content, and reason strings`,\n );\n }\n return {\n path: page[\"path\"],\n content: page[\"content\"],\n reason: page[\"reason\"],\n };\n });\n\n return {\n summary: { path: summary[\"path\"], content: summary[\"content\"] },\n updates,\n newPages,\n indexUpdate: obj[\"indexUpdate\"] as string,\n logEntry: obj[\"logEntry\"] as string,\n };\n}\n\nasync function applyIngestResult(\n project: Project,\n result: IngestResult,\n sourceContent: string,\n sourceFilename: string,\n): Promise<void> {\n // Write summary\n const summaryAbsPath = join(project.root, result.summary.path);\n assertWithinRoot(summaryAbsPath, project.root);\n await mkdir(dirname(summaryAbsPath), { recursive: true });\n await writeFile(summaryAbsPath, result.summary.content, \"utf8\");\n\n // Write updated pages\n for (const update of result.updates) {\n const absPath = join(project.root, update.path);\n assertWithinRoot(absPath, project.root);\n await mkdir(dirname(absPath), { recursive: true });\n await writeFile(absPath, update.content, \"utf8\");\n }\n\n // Write new pages\n for (const newPage of result.newPages) {\n const absPath = join(project.root, newPage.path);\n assertWithinRoot(absPath, project.root);\n await mkdir(dirname(absPath), { recursive: true });\n await writeFile(absPath, newPage.content, \"utf8\");\n }\n\n // Update _index.md\n const indexPath = join(project.wikiDir, \"_index.md\");\n await writeFile(indexPath, result.indexUpdate, \"utf8\");\n\n // Write source file to sources directory\n const sourceDestPath = join(project.sourcesDir, sourceFilename);\n await mkdir(project.sourcesDir, { recursive: true });\n await writeFile(sourceDestPath, sourceContent, \"utf8\");\n\n // Append to log.md\n const logPath = join(project.wikiDir, \"log.md\");\n const timestamp = new Date().toISOString().split(\"T\")[0];\n const logLine = `- ${timestamp}: ${result.logEntry}\\n`;\n await appendFile(logPath, logLine, \"utf8\");\n\n // Re-index\n await indexProject(project);\n}\n\nexport async function ingestSource(\n project: Project,\n sourcePath: string,\n llm: LlmAdapter,\n options?: IngestOptions,\n): Promise<IngestPlan> {\n const apply = options?.apply ?? false;\n\n // 1. Read source content\n const sourceContent = await readSource(sourcePath);\n\n // 2. Read current wiki index\n const indexPath = join(project.wikiDir, \"_index.md\");\n const currentIndex = await readFileSafe(indexPath);\n\n // 3. Read schema\n const schemaPath = join(project.kbDir, \"schema.md\");\n const schema = await readFileSafe(schemaPath);\n\n // 4. Build user message\n const userMessage = `## Wiki Schema\n${schema}\n\n## Current Wiki Index\n${currentIndex}\n\n## New Source: ${sourceContent.filename}\n${sourceContent.content}\n\nIntegrate this source into the wiki following the schema above.`;\n\n // 5. Call LLM\n const raw = await llm.complete(\n [{ role: \"user\", content: userMessage }],\n SYSTEM_PROMPT,\n );\n\n // 6. Parse response\n const result = parseIngestResult(raw);\n\n // 7. Apply if requested\n if (apply) {\n await applyIngestResult(\n project,\n result,\n sourceContent.content,\n sourceContent.filename,\n );\n }\n\n const sourceFile = join(project.sourcesDir, sourceContent.filename);\n\n return {\n result,\n sourceFile,\n dryRun: !apply,\n };\n}\n","import { readFile, writeFile, mkdir, appendFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join, dirname, resolve } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport type { LlmAdapter } from \"./llm.js\";\nimport { openDb, closeDb } from \"./db.js\";\nimport { searchWiki } from \"./search.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport interface QueryResult {\n answer: string;\n sources: string[];\n}\n\nexport interface QueryOptions {\n save?: string;\n}\n\nconst SYSTEM_PROMPT = `You are a knowledgeable assistant answering questions about a project's knowledge base.\nAnswer concisely using only information from the provided wiki pages.\nUse [[page-name]] wikilink syntax to cite specific wiki pages in your answer.\nFormat your answer in markdown.`;\n\nfunction assertWithinRoot(absPath: string, root: string): void {\n const resolvedPath = resolve(absPath);\n const resolvedRoot = resolve(root) + \"/\";\n if (!resolvedPath.startsWith(resolvedRoot)) {\n throw new Error(\n `Unsafe path rejected: \"${absPath}\" is outside project root`,\n );\n }\n}\n\nasync function readFileSafe(filePath: string): Promise<string> {\n try {\n return await readFile(filePath, \"utf8\");\n } catch {\n return \"\";\n }\n}\n\nexport async function queryWiki(\n project: Project,\n question: string,\n llm: LlmAdapter,\n options?: QueryOptions,\n): Promise<QueryResult> {\n // 1. Auto-index if db doesn't exist\n const dbPath = join(project.kbDir, \"index.db\");\n if (!existsSync(dbPath)) {\n await indexProject(project);\n }\n\n // 2. Search for top relevant pages\n const db = openDb(project);\n let searchResults;\n try {\n searchResults = searchWiki(db, question, project.name, { limit: 10 });\n } finally {\n closeDb(db);\n }\n\n // 3. Read full content of each result page\n const pages: Array<{ path: string; title: string; content: string }> = [];\n for (const result of searchResults) {\n const absPath = join(project.root, result.path);\n const content = await readFileSafe(absPath);\n if (content) {\n pages.push({ path: result.path, title: result.title, content });\n }\n }\n\n // 4. Build user message\n const pagesSection =\n pages.length > 0\n ? pages\n .map((p) => `### ${p.title} (${p.path})\\n${p.content}`)\n .join(\"\\n\\n\")\n : \"(No wiki pages found for this query.)\";\n\n const userMessage = `## Question\\n${question}\\n\\n## Relevant Wiki Pages\\n\\n${pagesSection}`;\n\n // 5. Call LLM\n const answer = await llm.complete(\n [{ role: \"user\", content: userMessage }],\n SYSTEM_PROMPT,\n );\n\n const sources = pages.map((p) => p.path);\n\n // 6. If save option provided, write answer as wiki page and append to log\n if (options?.save) {\n const saveRelPath = options.save;\n const saveAbsPath = join(project.root, saveRelPath);\n assertWithinRoot(saveAbsPath, project.root);\n\n await mkdir(dirname(saveAbsPath), { recursive: true });\n await writeFile(saveAbsPath, answer, \"utf8\");\n\n // Append to log.md\n const logPath = join(project.wikiDir, \"log.md\");\n const timestamp = new Date().toISOString().split(\"T\")[0];\n const logEntry = `\\n## ${timestamp} — Queried: ${question}\\n\\nSaved to: ${saveRelPath}\\n`;\n await appendFile(logPath, logEntry, \"utf8\");\n\n // Re-index so saved page is searchable\n await indexProject(project);\n }\n\n return { answer, sources };\n}\n","import { readdir, stat } from \"node:fs/promises\";\nimport { join, relative, basename, extname } from \"node:path\";\nimport type { Project } from \"./project.js\";\nimport { openDb, closeDb } from \"./db.js\";\nimport { indexProject } from \"./indexer.js\";\n\nexport type LintSeverity = \"warning\" | \"info\";\n\nexport interface LintIssue {\n severity: LintSeverity;\n code: string;\n path: string;\n message: string;\n detail?: string;\n}\n\nexport interface LintResult {\n issues: LintIssue[];\n pagesChecked: number;\n sourcesChecked: number;\n}\n\ninterface PageMetaRow {\n path: string;\n outgoing_links: string;\n word_count: number;\n mtime: number;\n updated_at: number;\n}\n\nasync function collectMdFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile() && e.name.endsWith(\".md\"))\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\nasync function collectSourceFiles(dir: string): Promise<string[]> {\n try {\n const entries = await readdir(dir, {\n recursive: true,\n withFileTypes: true,\n });\n return (\n entries\n .filter((e) => e.isFile())\n // parentPath added Node 21.4+; fall back to the pre-deprecation path property\n .map((e) => join((e as any).parentPath ?? (e as any).path, e.name))\n );\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n return [];\n }\n}\n\n/**\n * Build a set of \"keys\" for wiki pages for wikilink resolution.\n * A wikilink [[foo-bar]] can match:\n * - a page whose filename (without extension) is \"foo-bar\"\n * - a page whose relative path is \"foo-bar\" or \"foo-bar.md\"\n */\nfunction buildPageKeySet(\n relPaths: string[],\n projectRoot: string,\n wikiDir: string,\n): Set<string> {\n const keys = new Set<string>();\n for (const rp of relPaths) {\n // rp is relative to projectRoot, e.g. \"wiki/concepts/foo.md\"\n keys.add(rp);\n // without extension\n keys.add(rp.replace(/\\.md$/i, \"\"));\n // filename without extension\n const fname = basename(rp, \".md\");\n keys.add(fname);\n // relative path from wikiDir\n const absPath = join(projectRoot, rp);\n const relToWiki = relative(wikiDir, absPath);\n keys.add(relToWiki);\n keys.add(relToWiki.replace(/\\.md$/i, \"\"));\n }\n return keys;\n}\n\nexport async function lintProject(project: Project): Promise<LintResult> {\n // Ensure index is up to date\n await indexProject(project);\n\n const issues: LintIssue[] = [];\n\n // Collect all wiki md files\n const absWikiFiles = await collectMdFiles(project.wikiDir);\n const relWikiPaths = absWikiFiles.map((f) => relative(project.root, f));\n\n const pagesChecked = relWikiPaths.length;\n\n // Always collect source files so sourcesChecked is accurate\n const sourceFiles = await collectSourceFiles(project.sourcesDir);\n const sourcesChecked = sourceFiles.filter(\n (f) => basename(f) !== \".gitkeep\",\n ).length;\n\n if (pagesChecked === 0) {\n return { issues, pagesChecked: 0, sourcesChecked };\n }\n\n // Build page key set for wikilink resolution\n const pageKeySet = buildPageKeySet(\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n\n // Query all page_meta rows\n const db = openDb(project);\n let rows: PageMetaRow[];\n try {\n rows = db\n .prepare<\n [],\n PageMetaRow\n >(\"SELECT path, outgoing_links, word_count, mtime, updated_at FROM page_meta\")\n .all();\n } finally {\n closeDb(db);\n }\n\n // Build a map from path -> row for quick lookup\n const metaMap = new Map<string, PageMetaRow>();\n for (const row of rows) {\n metaMap.set(row.path, row);\n }\n\n // Build inbound link map\n const inboundLinks = new Map<string, Set<string>>();\n for (const rp of relWikiPaths) {\n inboundLinks.set(rp, new Set());\n }\n\n for (const row of rows) {\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n // Find which page this link resolves to\n const resolved = resolveLink(\n link,\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n if (resolved !== null) {\n const set = inboundLinks.get(resolved);\n if (set) {\n set.add(row.path);\n }\n }\n }\n }\n\n // Read _index.md outgoing links for MISSING_INDEX check\n const indexPath = relWikiPaths.find((p) => basename(p) === \"_index.md\");\n let indexLinks: Set<string> = new Set();\n if (indexPath) {\n const indexRow = metaMap.get(indexPath);\n if (indexRow) {\n let links: string[] = [];\n try {\n links = JSON.parse(indexRow.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n const resolved = resolveLink(\n link,\n relWikiPaths,\n project.root,\n project.wikiDir,\n );\n if (resolved !== null) {\n indexLinks.add(resolved);\n }\n }\n }\n }\n\n // --- CHECK 1: ORPHAN_PAGE ---\n for (const rp of relWikiPaths) {\n if (basename(rp) === \"_index.md\") continue;\n const inbound = inboundLinks.get(rp);\n if (!inbound || inbound.size === 0) {\n issues.push({\n severity: \"warning\",\n code: \"ORPHAN_PAGE\",\n path: rp,\n message: \"Orphan page (no inbound links)\",\n });\n }\n }\n\n // --- CHECK 2: BROKEN_LINK ---\n for (const row of rows) {\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n for (const link of links) {\n if (!isLinkResolvable(link, pageKeySet)) {\n issues.push({\n severity: \"warning\",\n code: \"BROKEN_LINK\",\n path: row.path,\n message: `Broken wikilink [[${link}]] not found`,\n detail: link,\n });\n }\n }\n }\n\n // --- CHECK 3: STUB_PAGE ---\n for (const row of rows) {\n if (basename(row.path) === \"_index.md\") continue;\n let links: string[] = [];\n try {\n links = JSON.parse(row.outgoing_links) as string[];\n } catch {\n links = [];\n }\n if (links.length === 0 && row.word_count < 50) {\n issues.push({\n severity: \"info\",\n code: \"STUB_PAGE\",\n path: row.path,\n message: `Stub page (no links, < 50 words)`,\n });\n }\n }\n\n // --- CHECK 4: STALE_SUMMARY ---\n // wiki/sources/foo-summary.md <-> sources/foo.*\n const wikiSourcesDir = join(project.wikiDir, \"sources\");\n\n for (const rp of relWikiPaths) {\n // Check if the path is under wiki/sources/\n const absWikiPage = join(project.root, rp);\n const relToWikiSources = relative(wikiSourcesDir, absWikiPage);\n\n // Skip if not under wiki/sources/ (would start with \"..\")\n if (relToWikiSources.startsWith(\"..\")) continue;\n\n // Convention: wiki/sources/foo-summary.md <-> sources/foo.*\n const summaryBasename = basename(rp, \".md\");\n // Strip -summary suffix\n const sourceBasename = summaryBasename.endsWith(\"-summary\")\n ? summaryBasename.slice(0, -\"-summary\".length)\n : summaryBasename;\n\n // Find matching source file\n const matchingSource = sourceFiles.find((sf) => {\n const sfBase = basename(sf, extname(sf));\n return sfBase === sourceBasename;\n });\n\n if (!matchingSource) continue;\n\n try {\n const summaryRow = metaMap.get(rp);\n if (!summaryRow) continue;\n\n const [sourceStat, summaryStat] = await Promise.all([\n stat(matchingSource),\n stat(join(project.root, summaryRow.path)),\n ]);\n\n if (sourceStat.mtimeMs > summaryStat.mtimeMs) {\n issues.push({\n severity: \"warning\",\n code: \"STALE_SUMMARY\",\n path: rp,\n message: \"Source updated after summary\",\n detail: relative(project.root, matchingSource),\n });\n }\n } catch {\n // Ignore stat errors\n }\n }\n\n // --- CHECK 5: MISSING_INDEX ---\n for (const rp of relWikiPaths) {\n if (basename(rp) === \"_index.md\") continue;\n if (!indexPath) {\n // No _index.md exists — skip this check\n continue;\n }\n if (!indexLinks.has(rp)) {\n // Check by filename too\n const fname = basename(rp, \".md\");\n if (!indexLinks.has(fname)) {\n issues.push({\n severity: \"info\",\n code: \"MISSING_INDEX\",\n path: rp,\n message: \"Not in _index.md\",\n });\n }\n }\n }\n\n return { issues, pagesChecked, sourcesChecked };\n}\n\nfunction resolveLink(\n link: string,\n relPaths: string[],\n projectRoot: string,\n wikiDir: string,\n): string | null {\n for (const rp of relPaths) {\n const fname = basename(rp, \".md\");\n if (fname === link) return rp;\n if (rp === link || rp === `${link}.md`) return rp;\n // relative to wikiDir\n const absPath = join(projectRoot, rp);\n const relToWiki = relative(wikiDir, absPath);\n if (relToWiki === link || relToWiki.replace(/\\.md$/i, \"\") === link) {\n return rp;\n }\n }\n return null;\n}\n\nfunction isLinkResolvable(link: string, pageKeySet: Set<string>): boolean {\n return pageKeySet.has(link);\n}\n","// packages/core/src/log-parser.ts\n\nexport interface ParsedLogEntry {\n heading: string;\n body: string;\n}\n\n/**\n * Parses a log.md file into an array of entries.\n * Each entry starts with a level-2 heading (## ...).\n * The top-level \"# Activity Log\" heading is skipped.\n */\nexport function parseLogEntries(content: string): ParsedLogEntry[] {\n const entries: ParsedLogEntry[] = [];\n const sections = content.split(/^(?=## )/m);\n\n for (const section of sections) {\n const trimmed = section.trim();\n if (!trimmed) continue;\n if (trimmed.startsWith(\"# \")) continue;\n if (!trimmed.startsWith(\"## \")) continue;\n\n const newlineIdx = trimmed.indexOf(\"\\n\");\n if (newlineIdx === -1) {\n entries.push({ heading: trimmed.slice(3).trim(), body: \"\" });\n } else {\n const heading = trimmed.slice(3, newlineIdx).trim();\n const body = trimmed.slice(newlineIdx + 1).trim();\n entries.push({ heading, body });\n }\n }\n\n return entries;\n}\n","// Core package — business logic\n\nexport const VERSION = \"0.1.0\";\n\nexport { initProject } from \"./init.js\";\nexport type { InitOptions } from \"./init.js\";\n\nexport { parseConfig } from \"./config.js\";\nexport type { KbConfig } from \"./config.js\";\n\nexport { loadProject, tryLoadProject } from \"./project.js\";\nexport type { Project } from \"./project.js\";\n\nexport { openDb, closeDb } from \"./db.js\";\n\nexport { parsePage } from \"./markdown.js\";\nexport type { ParsedPage } from \"./markdown.js\";\n\nexport { indexProject } from \"./indexer.js\";\nexport type { IndexStats } from \"./indexer.js\";\n\nexport { searchWiki } from \"./search.js\";\nexport type { SearchResult, SearchOptions } from \"./search.js\";\n\nexport { readSource } from \"./source-reader.js\";\nexport type { SourceContent, SourceType } from \"./source-reader.js\";\n\nexport { createLlmAdapter } from \"./llm.js\";\nexport type { LlmAdapter, LlmMessage } from \"./llm.js\";\n\nexport type { IngestResult } from \"./ingest-types.js\";\n\nexport { ingestSource } from \"./ingest.js\";\nexport type { IngestOptions, IngestPlan } from \"./ingest.js\";\n\nexport { queryWiki } from \"./query.js\";\nexport type { QueryResult, QueryOptions } from \"./query.js\";\n\nexport { lintProject } from \"./lint.js\";\nexport type { LintIssue, LintResult, LintSeverity } from \"./lint.js\";\n\nexport { parseLogEntries } from \"./log-parser.js\";\nexport type { ParsedLogEntry } from \"./log-parser.js\";\n","import { readdir, readFile } from \"node:fs/promises\";\nimport type { Dirent } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject } from \"kb-core\";\n\nasync function countWikiPages(wikiDir: string): Promise<number> {\n let entries: string[];\n try {\n entries = await readdir(wikiDir, { recursive: true });\n } catch {\n return 0;\n }\n return entries.filter((f) => f.endsWith(\".md\") && f !== \"_index.md\").length;\n}\n\nasync function countSources(sourcesDir: string): Promise<number> {\n let entries: Dirent[];\n try {\n entries = await readdir(sourcesDir, {\n recursive: true,\n withFileTypes: true,\n });\n } catch {\n return 0;\n }\n return entries.filter((e) => e.isFile() && e.name !== \".gitkeep\").length;\n}\n\nasync function readLastLogEntry(logPath: string): Promise<string | null> {\n let content: string;\n try {\n content = await readFile(logPath, \"utf8\");\n } catch {\n return null;\n }\n\n const lines = content.split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i]!.trim();\n if (line.startsWith(\"## \")) {\n // Strip the \"## \" prefix\n return line.slice(3);\n }\n }\n return null;\n}\n\nexport function makeStatusCommand() {\n const cmd = new Command(\"status\");\n\n cmd.description(\"Show status of the current kb project\").action(async () => {\n try {\n const project = await loadProject(process.cwd());\n const [wikiPages, sourceCount, lastEntry] = await Promise.all([\n countWikiPages(project.wikiDir),\n countSources(project.sourcesDir),\n readLastLogEntry(join(project.root, \"log.md\")),\n ]);\n\n console.log(\n `Project: ${chalk.bold(project.name)} ${chalk.dim(`(v${project.config.project.version})`)}`,\n );\n console.log(`Root: ${chalk.dim(project.root)}`);\n console.log(`Wiki: ${wikiPages} page${wikiPages !== 1 ? \"s\" : \"\"}`);\n console.log(\n `Sources: ${sourceCount} source${sourceCount !== 1 ? \"s\" : \"\"}`,\n );\n if (lastEntry !== null) {\n console.log(`Log: Last entry: ${lastEntry}`);\n } else {\n console.log(`Log: ${chalk.dim(\"(no entries)\")}`);\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, indexProject } from \"kb-core\";\n\nexport function makeIndexCommand(): Command {\n const cmd = new Command(\"index\");\n\n cmd\n .description(\"Index wiki pages into the search database\")\n .option(\"--rebuild\", \"delete all entries and re-index from scratch\", false)\n .action(async (options: { rebuild: boolean }) => {\n try {\n const project = await loadProject(process.cwd());\n console.log(\"Indexing wiki pages...\");\n\n const stats = await indexProject(project, options.rebuild);\n\n const updated = stats.indexed;\n const unchanged = stats.skipped;\n const total = updated + unchanged;\n\n const details: string[] = [];\n if (updated > 0) details.push(`${updated} updated`);\n if (unchanged > 0) details.push(`${unchanged} unchanged`);\n if (stats.deleted > 0) details.push(`${stats.deleted} deleted`);\n if (stats.errors > 0) details.push(`${stats.errors} errors`);\n\n const detailStr = details.length > 0 ? ` (${details.join(\", \")})` : \"\";\n console.log(\n `${chalk.green(\"✓\")} Indexed ${total} page${total !== 1 ? \"s\" : \"\"}${detailStr}`,\n );\n\n if (stats.errors > 0) {\n process.exit(1);\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport {\n loadProject,\n indexProject,\n openDb,\n closeDb,\n searchWiki,\n} from \"kb-core\";\nimport type { SearchResult } from \"kb-core\";\n\nexport function makeSearchCommand(): Command {\n const cmd = new Command(\"search\");\n\n cmd\n .description(\"Search wiki pages using full-text search\")\n .argument(\"<query>\", \"search query\")\n .option(\"-l, --limit <n>\", \"maximum number of results\", \"10\")\n .option(\"--json\", \"output results as JSON\", false)\n .option(\"--tags <tags>\", \"filter by tags (comma-separated, AND logic)\")\n .action(\n async (\n query: string,\n options: { limit: string; json: boolean; tags?: string },\n ) => {\n try {\n const project = await loadProject(process.cwd());\n\n // Auto-index if DB doesn't exist or is empty\n const dbPath = join(project.kbDir, \"index.db\");\n if (!existsSync(dbPath)) {\n if (!options.json) {\n console.log(\"Index not found. Indexing wiki pages...\");\n }\n await indexProject(project);\n } else {\n // Check if pages table is empty\n const db = openDb(project);\n const countRow = db\n .prepare<\n [],\n { count: number }\n >(\"SELECT count(*) as count FROM pages\")\n .get();\n closeDb(db);\n\n if (!countRow || countRow.count === 0) {\n if (!options.json) {\n console.log(\"Index is empty. Indexing wiki pages...\");\n }\n await indexProject(project);\n }\n }\n\n const limit = parseInt(options.limit, 10);\n if (isNaN(limit) || limit < 1) {\n console.error(\n chalk.red(\"Error: --limit must be a positive integer\"),\n );\n process.exit(1);\n }\n const tags = options.tags\n ? options.tags\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0)\n : undefined;\n\n const db = openDb(project);\n let results: SearchResult[];\n try {\n results = searchWiki(db, query, project.name, { limit, tags });\n } finally {\n closeDb(db);\n }\n\n if (options.json) {\n console.log(JSON.stringify(results, null, 2));\n return;\n }\n\n if (results.length === 0) {\n console.log(`No results found for \"${query}\".`);\n return;\n }\n\n console.log(\n `\\nFound ${results.length} result${results.length !== 1 ? \"s\" : \"\"} for \"${query}\":\\n`,\n );\n\n for (let i = 0; i < results.length; i++) {\n const r = results[i];\n console.log(` ${chalk.bold(`${i + 1}.`)} ${chalk.cyan(r.path)}`);\n console.log(` ${chalk.white(r.title)}`);\n if (r.snippet) {\n console.log(` ${chalk.gray(r.snippet)}`);\n }\n if (r.tags.length > 0) {\n console.log(` ${chalk.yellow(\"Tags:\")} ${r.tags.join(\", \")}`);\n }\n console.log();\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n },\n );\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readdir, stat } from \"node:fs/promises\";\nimport { join, basename } from \"node:path\";\nimport { loadProject, ingestSource, createLlmAdapter } from \"kb-core\";\nimport type { IngestPlan } from \"kb-core\";\n\nfunction printPlan(plan: IngestPlan, sourcePath: string): void {\n const sourceBase = basename(sourcePath);\n const sourceFilename = basename(plan.sourceFile);\n const { result } = plan;\n\n console.log(chalk.yellow(\"Dry run — use --apply to write changes\\n\"));\n console.log(\n `Source: ${chalk.cyan(sourceBase)} → ${chalk.cyan(`sources/${sourceFilename}`)}`,\n );\n\n const hasChanges =\n result.newPages.length > 0 ||\n result.updates.length > 0 ||\n result.summary.path;\n\n if (!hasChanges) {\n console.log(chalk.gray(\"\\nNo changes would be made.\"));\n return;\n }\n\n console.log(chalk.bold(\"\\nWould create:\"));\n console.log(\n ` ${chalk.green(\"+\")} ${result.summary.path} ${chalk.gray(\"(new page)\")}`,\n );\n for (const p of result.newPages) {\n console.log(` ${chalk.green(\"+\")} ${p.path} ${chalk.gray(`(new page)`)}`);\n }\n\n if (result.updates.length > 0) {\n console.log(chalk.bold(\"\\nWould update:\"));\n for (const u of result.updates) {\n console.log(\n ` ${chalk.yellow(\"~\")} ${u.path} ${chalk.gray(`(${u.reason})`)}`,\n );\n }\n }\n\n console.log(`\\nWould update index: ${chalk.cyan(\"wiki/_index.md\")}`);\n console.log(`Log entry: ${chalk.gray(`\"${result.logEntry}\"`)}`);\n console.log(chalk.gray(\"\\nRun with --apply to write these changes.\"));\n}\n\nfunction printApplied(plan: IngestPlan, sourcePath: string): void {\n const sourceBase = basename(sourcePath);\n const sourceFilename = basename(plan.sourceFile);\n const { result } = plan;\n\n console.log(\n `${chalk.green(\"✓\")} Ingested ${chalk.cyan(sourceBase)} → ${chalk.cyan(`sources/${sourceFilename}`)}`,\n );\n\n console.log(` ${chalk.green(\"+\")} ${result.summary.path}`);\n for (const p of result.newPages) {\n console.log(` ${chalk.green(\"+\")} ${p.path}`);\n }\n for (const u of result.updates) {\n console.log(` ${chalk.yellow(\"~\")} ${u.path}`);\n }\n console.log(` ${chalk.yellow(\"~\")} wiki/_index.md`);\n console.log(chalk.gray(` Log: \"${result.logEntry}\"`));\n}\n\nasync function collectFiles(dirPath: string): Promise<string[]> {\n const entries = await readdir(dirPath, { withFileTypes: true });\n return entries.filter((e) => e.isFile()).map((e) => join(dirPath, e.name));\n}\n\nexport function makeIngestCommand(): Command {\n const cmd = new Command(\"ingest\");\n\n cmd\n .description(\"Ingest a source document into the wiki using LLM\")\n .argument(\"<source-path>\", \"path to file or URL to ingest\")\n .option(\"--apply\", \"write changes to wiki (default: dry-run)\", false)\n .option(\"--batch\", \"process all files in a directory\", false)\n .action(\n async (\n sourcePath: string,\n options: { apply: boolean; batch: boolean },\n ) => {\n try {\n const project = await loadProject(process.cwd());\n const llm = createLlmAdapter(project.config);\n\n let sources: string[];\n\n if (options.batch) {\n const s = await stat(sourcePath);\n if (!s.isDirectory()) {\n console.error(\n chalk.red(\"Error: --batch requires a directory path\"),\n );\n process.exit(1);\n }\n sources = await collectFiles(sourcePath);\n if (sources.length === 0) {\n console.log(chalk.gray(\"No files found in directory.\"));\n return;\n }\n } else {\n sources = [sourcePath];\n }\n\n for (const src of sources) {\n if (options.batch) {\n console.log(chalk.bold(`\\nProcessing: ${basename(src)}`));\n }\n\n const plan = await ingestSource(project, src, llm, {\n apply: options.apply,\n });\n\n if (plan.dryRun) {\n printPlan(plan, src);\n } else {\n printApplied(plan, src);\n }\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n },\n );\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, queryWiki, createLlmAdapter } from \"kb-core\";\n\nexport function makeQueryCommand(): Command {\n const cmd = new Command(\"query\");\n\n cmd\n .description(\"Ask a question about the wiki knowledge base\")\n .argument(\"<question>\", \"question to ask\")\n .option(\"--save <path>\", \"save answer as a wiki page at the given path\")\n .action(async (question: string, options: { save?: string }) => {\n try {\n const project = await loadProject(process.cwd());\n const llm = createLlmAdapter(project.config);\n\n const result = await queryWiki(project, question, llm, {\n save: options.save,\n });\n\n console.log(result.answer);\n\n if (result.sources.length > 0) {\n console.log(\n `\\n${chalk.gray(\"Sources:\")} ${result.sources.join(\", \")}`,\n );\n }\n\n if (options.save) {\n console.log(chalk.green(`\\nSaved to ${options.save}`));\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { loadProject, parseLogEntries, type ParsedLogEntry } from \"kb-core\";\n\nexport function makeLogCommand(): Command {\n const cmd = new Command(\"log\");\n\n cmd\n .description(\"Show recent activity log entries\")\n .option(\"--last <n>\", \"number of entries to show\", \"10\")\n .action(async (options: { last: string }) => {\n try {\n const project = await loadProject(process.cwd());\n const logPath = join(project.wikiDir, \"log.md\");\n\n let content: string;\n try {\n content = await readFile(logPath, \"utf8\");\n } catch {\n console.log(chalk.gray(\"No activity log found.\"));\n return;\n }\n\n const n = parseInt(options.last, 10);\n if (isNaN(n) || n < 1) {\n console.error(chalk.red(\"Error: --last must be a positive integer\"));\n process.exit(1);\n }\n\n const entries = parseLogEntries(content);\n\n if (entries.length === 0) {\n console.log(chalk.gray(\"Activity log is empty.\"));\n return;\n }\n\n const last = entries.slice(-n);\n\n for (const entry of last) {\n console.log(chalk.bold(`## ${entry.heading}`));\n if (entry.body) {\n console.log(entry.body);\n }\n console.log();\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject, lintProject } from \"kb-core\";\n\nexport function makeLintCommand(): Command {\n const cmd = new Command(\"lint\");\n\n cmd\n .description(\"Check wiki health for broken links, orphan pages, and more\")\n .option(\"--deep\", \"LLM-assisted checks (Phase 2)\", false)\n .action(async (options: { deep: boolean }) => {\n try {\n if (options.deep) {\n console.log(chalk.yellow(\"--deep requires LLM, not yet implemented\"));\n return;\n }\n\n const project = await loadProject(process.cwd());\n console.log(\"Checking wiki health...\\n\");\n\n const result = await lintProject(project);\n\n if (result.issues.length === 0) {\n console.log(\n chalk.green(\n `✓ Wiki is healthy (${result.pagesChecked} pages checked)`,\n ),\n );\n return;\n }\n\n for (const issue of result.issues) {\n const code = chalk.gray(`[${issue.code}]`);\n if (issue.severity === \"warning\") {\n if (issue.code === \"BROKEN_LINK\") {\n console.log(\n `${chalk.yellow(\"⚠\")} ${chalk.cyan(issue.path)} → [[${issue.detail}]] not found ${code}`,\n );\n } else {\n console.log(\n `${chalk.yellow(\"⚠\")} ${chalk.cyan(issue.path)} — ${issue.message} ${code}`,\n );\n }\n } else {\n console.log(\n `${chalk.blue(\"ℹ\")} ${chalk.cyan(issue.path)} — ${issue.message} ${code}`,\n );\n }\n }\n\n const warnings = result.issues.filter(\n (i) => i.severity === \"warning\",\n ).length;\n const infos = result.issues.filter((i) => i.severity === \"info\").length;\n\n const parts: string[] = [];\n if (warnings > 0)\n parts.push(\n `${chalk.yellow(String(warnings))} warning${warnings !== 1 ? \"s\" : \"\"}`,\n );\n if (infos > 0) parts.push(`${chalk.blue(String(infos))} info`);\n\n console.log(\n `\\nFound ${parts.join(\", \")}. Run with --deep for LLM-assisted checks.`,\n );\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport { startMcpServer } from \"kb-mcp\";\n\nexport function makeMcpCommand(): Command {\n return new Command(\"mcp\")\n .description(\"Start MCP server (stdio)\")\n .action(async () => {\n await startMcpServer();\n });\n}\n","import { readFile, writeFile, access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadProject } from \"kb-core\";\n\nexport async function readSchemaLines(schemaPath: string): Promise<string> {\n let content: string;\n try {\n content = await readFile(schemaPath, \"utf8\");\n } catch {\n return \"_No `.kb/schema.md` found in this project._\";\n }\n const lines = content.split(\"\\n\").slice(0, 20);\n return lines.join(\"\\n\");\n}\n\nexport async function buildBlock(\n projectName: string,\n schemaLines: string,\n): Promise<string> {\n return `## Knowledge Base: ${projectName}\n\nThis project has an LLM-maintained knowledge base at \\`./wiki/\\`.\n- Wiki index: \\`wiki/_index.md\\`\n- Schema/conventions: \\`.kb/schema.md\\`\n- Raw sources: \\`sources/\\`\n- Activity log: \\`log.md\\`\n\n### Available CLI commands\n- \\`kb search <query>\\` — Search the wiki\n- \\`kb ingest <path> --apply\\` — Process a new source into the wiki\n- \\`kb query <question>\\` — Ask a question against the wiki\n- \\`kb lint\\` — Health-check the wiki\n- \\`kb lint --deep\\` — LLM-assisted deep health check\n\n### MCP tools available\nThis project exposes an MCP server via \\`kb mcp\\`.\nTools: kb_search, kb_get_page, kb_get_index, kb_ingest, kb_lint, kb_backlinks, kb_status.\n\n### Wiki conventions\n${schemaLines}`;\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function makeAgentContextCommand(): Command {\n const cmd = new Command(\"agent-context\");\n\n cmd\n .description(\"Generate a markdown context block for CLAUDE.md / AGENTS.md\")\n .option(\"--write\", \"Append block to CLAUDE.md in project root\", false)\n .action(async (options: { write: boolean }) => {\n try {\n const project = await loadProject(process.cwd());\n const schemaPath = join(project.root, \".kb\", \"schema.md\");\n const schemaLines = await readSchemaLines(schemaPath);\n const block = await buildBlock(project.name, schemaLines);\n\n if (!options.write) {\n console.log(block);\n return;\n }\n\n const claudeMdPath = join(project.root, \"CLAUDE.md\");\n const exists = await fileExists(claudeMdPath);\n\n if (exists) {\n const existing = await readFile(claudeMdPath, \"utf8\");\n await writeFile(claudeMdPath, `${existing}\\n---\\n${block}`, \"utf8\");\n } else {\n await writeFile(claudeMdPath, block, \"utf8\");\n }\n\n console.log(chalk.green(\"Written to CLAUDE.md\"));\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(`Error: ${message}`));\n process.exit(1);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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","names":["exports","module","str","exports","module","exports","module","exports","module","exports","module","Date","exports","module","exports","module","exports","module","str","exports","module","str","resolve","index","blocksize","exports","module","resolve","exports","module","exports","module","tomlType","str","exports","exports","module","exports","module","exports","module","exports","module","options","exports","module","exports","module","exports","module","exports","module","options","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","isInteger","exports","module","isFloat","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","options","exports","module","CHAR_COMMA","CHAR_COLON","CHAR_EQUALS","options","str","string","detectType","exports","module","require_js_yaml","exports","module","yaml","options","exports","module","str","exports","str","exports","module","engines","options","exports","module","options","require_stringify","exports","module","options","str","matter","exports","module","options","exports","module","options","require_parse","exports","module","str","options","exports","module","engines","parse","matter","options","str","Command","basename","resolve","import_toml","access","join","readFile","basename","writeFile","mkdir","dirname","resolve","options","TOML","access","join","join","readFile","matter","options","content","filename","raw","basename","resolve","mkdir","dirname","writeFile","resolve","basename","readdir","readFile","join","Command","chalk","readdir","readFile","Command","join","chalk","Command","chalk","Command","options","chalk","Command","chalk","join","Command","options","join","db","chalk","Command","chalk","readdir","stat","join","basename","basename","chalk","readdir","join","Command","options","stat","Command","chalk","loadProject","createLlmAdapter","options","Command","chalk","readFile","join","loadProject","options","Command","chalk","loadProject","options","Command","readFile","writeFile","access","join","Command","chalk","loadProject","options","Command"]}