@cloudflare/workers-utils 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-BbMtmAbH.d.mts +2190 -0
- package/dist/browser.d.mts +3 -0
- package/dist/browser.mjs +1 -0
- package/dist/chunk-LFBFF6MG.mjs +533 -0
- package/dist/index.d.mts +6 -2192
- package/dist/index.mjs +4 -551
- package/dist/metafile-esm.json +1 -1
- package/package.json +57 -51
- package/dist/index.mjs.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/parser.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/create-datetime.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/format-num.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/create-datetime-float.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/create-date.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/create-time.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/lib/toml-parser.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/parse-pretty-error.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/parse-string.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/parse-async.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/parse-stream.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/parse.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/stringify.js","../../../node_modules/.pnpm/@iarna+toml@3.0.0/node_modules/@iarna/toml/toml.js","../src/config/config.ts","../src/config/index.ts","../src/parse.ts","../../../node_modules/.pnpm/jsonc-parser@3.2.0/node_modules/jsonc-parser/lib/esm/impl/scanner.js","../../../node_modules/.pnpm/jsonc-parser@3.2.0/node_modules/jsonc-parser/lib/esm/impl/format.js","../../../node_modules/.pnpm/jsonc-parser@3.2.0/node_modules/jsonc-parser/lib/esm/impl/parser.js","../../../node_modules/.pnpm/jsonc-parser@3.2.0/node_modules/jsonc-parser/lib/esm/impl/edit.js","../../../node_modules/.pnpm/jsonc-parser@3.2.0/node_modules/jsonc-parser/lib/esm/main.js","../src/errors.ts","../../../node_modules/.pnpm/locate-path@7.1.0/node_modules/locate-path/index.js","../../../node_modules/.pnpm/find-up@6.3.0/node_modules/find-up/index.js","../../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/src/index.ts","../src/constants.ts","../src/config/config-helpers.ts","../src/config/patch-config.ts","../../containers-shared/src/client/models/ApplicationRollout.ts","../../containers-shared/src/client/models/BadRequestWithCodeError.ts","../../containers-shared/src/client/models/CreateApplicationRolloutRequest.ts","../../containers-shared/src/client/models/DeploymentNotFoundError.ts","../../containers-shared/src/client/models/ImageRegistryAlreadyExistsError.ts","../../containers-shared/src/client/models/ImageRegistryIsPublic.ts","../../containers-shared/src/client/models/ImageRegistryNotAllowedError.ts","../../containers-shared/src/client/models/ImageRegistryNotFoundError.ts","../../containers-shared/src/client/models/ImageRegistryProtocolAlreadyExists.ts","../../containers-shared/src/client/models/ImageRegistryProtocolIsReferencedError.ts","../../containers-shared/src/client/models/ImageRegistryProtocolNotFound.ts","../../containers-shared/src/client/models/ProvisionerConfiguration.ts","../../containers-shared/src/client/models/RolloutStep.ts","../../containers-shared/src/client/models/SecretNameAlreadyExists.ts","../../containers-shared/src/client/models/SecretNotFound.ts","../../containers-shared/src/client/models/SSHPublicKeyNotFoundError.ts","../../containers-shared/src/client/models/UpdateApplicationRolloutRequest.ts","../../containers-shared/src/error.ts","../../containers-shared/src/utils.ts","../../workflows-shared/src/lib/validators.ts","../src/config/diagnostics.ts","../src/config/validation-helpers.ts","../src/config/validation.ts","../src/config/validation-pages.ts","../src/assert-never.ts","../src/format-compatibility-date.ts","../src/map-worker-metadata-bindings.ts","../src/construct-wrangler-config.ts"],"names":["exports","module","Date","resolve","index","blocksize","tomlType","str","import_toml","value","isDigit","CharacterCodes","ParseOptions","path","edit","ScanError","SyntaxKind","parse","ParseErrorCode","format","TOML","fsReadFileSync","process","toPath","fileURLToPath","i","ApplicationRollout","kind","strategy","status","BadRequestWithCodeError","error","CreateApplicationRolloutRequest","step_percentage","DeploymentNotFoundError","ImageRegistryAlreadyExistsError","ImageRegistryIsPublic","ImageRegistryNotAllowedError","ImageRegistryNotFoundError","ImageRegistryProtocolAlreadyExists","ImageRegistryProtocolIsReferencedError","ImageRegistryProtocolNotFound","ProvisionerConfiguration","type","RolloutStep","SecretNameAlreadyExists","SecretNotFound","SSHPublicKeyNotFoundError","UpdateApplicationRolloutRequest","action","UserError","existsSync","validateDurableObjectBinding"],"mappings":"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","file":"index.mjs","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])) {\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 target[_declared] = true\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 } else if (this.char === CHAR_DEL || (this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I)) {\n throw this.errorControlCharIn('comments')\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.errorControlCharIn('strings')\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.errorControlCharIn('strings')\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.next(this.parseLiteralMultiEnd3)\n } else {\n this.state.buf += \"''\"\n return this.goto(this.parseLiteralMultiStringContent)\n }\n }\n parseLiteralMultiEnd3 () {\n if (this.char === CHAR_APOS) {\n this.state.buf += \"'\"\n return this.next(this.parseLiteralMultiEnd4)\n } else {\n return this.returnNow()\n }\n }\n parseLiteralMultiEnd4 () {\n if (this.char === CHAR_APOS) {\n this.state.buf += \"'\"\n return this.return()\n } else {\n return this.returnNow()\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.errorControlCharIn('strings')\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.errorControlCharIn('strings')\n } else {\n this.consume()\n }\n } while (this.nextChar())\n }\n errorControlCharIn (type) {\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 ${type}, 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.next(this.parseMultiEnd3)\n } else {\n this.state.buf += '\"\"'\n return this.goto(this.parseMultiStringContent)\n }\n }\n parseMultiEnd3 () {\n if (this.char === CHAR_QUOT) {\n this.state.buf += '\"'\n return this.next(this.parseMultiEnd4)\n } else {\n return this.returnNow()\n }\n }\n parseMultiEnd4 () {\n if (this.char === CHAR_QUOT) {\n this.state.buf += '\"'\n return this.return()\n } else {\n return this.returnNow()\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 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.parseInlineTablePostComma)\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 parseInlineTablePostComma () {\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 throw this.error(new TomlError('Empty elements in inline tables are not permitted'))\n } else if (this.char === CHAR_RCUB) {\n throw this.error(new TomlError('Trailing commas in inline tables are not permitted'))\n } else {\n return this.goto(this.parseInlineTable)\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 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 let inlineKeys\n let complexKeys\n inlineKeys = getInlineKeys(obj)\n complexKeys = getComplexKeys(obj)\n const result = []\n const 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 const 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 const 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 const [int, dec] = String(value).split('.')\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 stringifyInlineArray (values) {\n values = toJSON(values)\n let result = '['\n const stringified = values.map(_ => stringifyInline(_))\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 const 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 const 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 const firstValueType = tomlType(values[0])\n /* istanbul ignore if */\n if (firstValueType !== 'table') throw typeError(firstValueType)\n const fullKey = prefix + stringifyKey(key)\n let 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 const fullKey = prefix + stringifyKey(key)\n let 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","import type {\n\tContainerEngine,\n\tEnvironment,\n\tRawEnvironment,\n} from \"./environment\";\n\n/**\n * This is the static type definition for the configuration object.\n *\n * It reflects a normalized and validated version of the configuration that you can write in a Wrangler configuration file,\n * and optionally augment with arguments passed directly to wrangler.\n *\n * For more information about the configuration object, see the\n * documentation at https://developers.cloudflare.com/workers/cli-wrangler/configuration\n *\n * Notes:\n *\n * - Fields that are only specified in `ConfigFields` and not `Environment` can only appear\n * in the top level config and should not appear in any environments.\n * - Fields that are specified in `PagesConfigFields` are only relevant for Pages projects\n * - All top level fields in config and environments are optional in the Wrangler configuration file.\n *\n * Legend for the annotations:\n *\n * - `@breaking`: the deprecation/optionality is a breaking change from Wrangler v1.\n * - `@todo`: there's more work to be done (with details attached).\n */\nexport type Config = ComputedFields &\n\tConfigFields<DevConfig> &\n\tPagesConfigFields &\n\tEnvironment;\n\nexport type RawConfig = Partial<ConfigFields<RawDevConfig>> &\n\tPagesConfigFields &\n\tRawEnvironment &\n\tEnvironmentMap & { $schema?: string };\n\nexport type RedirectedRawConfig = RawConfig & Partial<ComputedFields>;\n\nexport interface ComputedFields {\n\t/** The path to the Wrangler configuration file (if any, and possibly redirected from the user Wrangler configuration) used to create this configuration. */\n\tconfigPath: string | undefined;\n\t/** The path to the user's Wrangler configuration file (if any), which may have been redirected to another file that used to create this configuration. */\n\tuserConfigPath: string | undefined;\n\t/**\n\t * The original top level name for the Worker in the raw configuration.\n\t *\n\t * When a raw configuration has been flattened to a single environment the worker name may have been replaced or transformed.\n\t * It can be useful to know what the top-level name was before the flattening.\n\t */\n\ttopLevelName: string | undefined;\n\t/** A list of environment names declared in the raw configuration. */\n\tdefinedEnvironments: string[] | undefined;\n\t/** The name of the environment being targeted. */\n\ttargetEnvironment: string | undefined;\n}\n\nexport interface ConfigFields<Dev extends RawDevConfig> {\n\t/**\n\t * A boolean to enable \"legacy\" style wrangler environments (from Wrangler v1).\n\t * These have been superseded by Services, but there may be projects that won't\n\t * (or can't) use them. If you're using a legacy environment, you can set this\n\t * to `true` to enable it.\n\t */\n\tlegacy_env: boolean;\n\n\t/**\n\t * Whether Wrangler should send usage metrics to Cloudflare for this project.\n\t *\n\t * When defined this will override any user settings.\n\t * Otherwise, Wrangler will use the user's preference.\n\t */\n\tsend_metrics: boolean | undefined;\n\n\t/**\n\t * Options to configure the development server that your worker will use.\n\t *\n\t * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#local-development-settings\n\t */\n\tdev: Dev;\n\n\t/**\n\t * The definition of a Worker Site, a feature that lets you upload\n\t * static assets with your Worker.\n\t *\n\t * More details at https://developers.cloudflare.com/workers/platform/sites\n\t *\n\t * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#workers-sites\n\t */\n\tsite:\n\t\t| {\n\t\t\t\t/**\n\t\t\t\t * The directory containing your static assets.\n\t\t\t\t *\n\t\t\t\t * It must be a path relative to your Wrangler configuration file.\n\t\t\t\t * Example: bucket = \"./public\"\n\t\t\t\t *\n\t\t\t\t * If there is a `site` field then it must contain this `bucket` field.\n\t\t\t\t */\n\t\t\t\tbucket: string;\n\n\t\t\t\t/**\n\t\t\t\t * The location of your Worker script.\n\t\t\t\t *\n\t\t\t\t * @deprecated DO NOT use this (it's a holdover from Wrangler v1.x). Either use the top level `main` field, or pass the path to your entry file as a command line argument.\n\t\t\t\t * @breaking\n\t\t\t\t */\n\t\t\t\t\"entry-point\"?: string;\n\n\t\t\t\t/**\n\t\t\t\t * An exclusive list of .gitignore-style patterns that match file\n\t\t\t\t * or directory names from your bucket location. Only matched\n\t\t\t\t * items will be uploaded. Example: include = [\"upload_dir\"]\n\t\t\t\t *\n\t\t\t\t * @optional\n\t\t\t\t * @default []\n\t\t\t\t */\n\t\t\t\tinclude?: string[];\n\n\t\t\t\t/**\n\t\t\t\t * A list of .gitignore-style patterns that match files or\n\t\t\t\t * directories in your bucket that should be excluded from\n\t\t\t\t * uploads. Example: exclude = [\"ignore_dir\"]\n\t\t\t\t *\n\t\t\t\t * @optional\n\t\t\t\t * @default []\n\t\t\t\t */\n\t\t\t\texclude?: string[];\n\t\t }\n\t\t| undefined;\n\n\t/**\n\t * A list of wasm modules that your worker should be bound to. This is\n\t * the \"legacy\" way of binding to a wasm module. ES module workers should\n\t * do proper module imports.\n\t */\n\twasm_modules:\n\t\t| {\n\t\t\t\t[key: string]: string;\n\t\t }\n\t\t| undefined;\n\n\t/**\n\t * A list of text files that your worker should be bound to. This is\n\t * the \"legacy\" way of binding to a text file. ES module workers should\n\t * do proper module imports.\n\t */\n\ttext_blobs:\n\t\t| {\n\t\t\t\t[key: string]: string;\n\t\t }\n\t\t| undefined;\n\n\t/**\n\t * A list of data files that your worker should be bound to. This is\n\t * the \"legacy\" way of binding to a data file. ES module workers should\n\t * do proper module imports.\n\t */\n\tdata_blobs:\n\t\t| {\n\t\t\t\t[key: string]: string;\n\t\t }\n\t\t| undefined;\n\n\t/**\n\t * A map of module aliases. Lets you swap out a module for any others.\n\t * Corresponds with esbuild's `alias` config\n\t *\n\t * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#module-aliasing\n\t */\n\talias: { [key: string]: string } | undefined;\n\n\t/**\n\t * By default, the Wrangler configuration file is the source of truth for your environment configuration, like a terraform file.\n\t *\n\t * If you change your vars in the dashboard, wrangler *will* override/delete them on its next deploy.\n\t *\n\t * If you want to keep your dashboard vars when wrangler deploys, set this field to true.\n\t *\n\t * @default false\n\t * @nonInheritable\n\t */\n\tkeep_vars?: boolean;\n}\n\n// Pages-specific configuration fields\ninterface PagesConfigFields {\n\t/**\n\t * The directory of static assets to serve.\n\t *\n\t * The presence of this field in a Wrangler configuration file indicates a Pages project,\n\t * and will prompt the handling of the configuration file according to the\n\t * Pages-specific validation rules.\n\t */\n\tpages_build_output_dir?: string;\n}\n\nexport interface DevConfig {\n\t/**\n\t * IP address for the local dev server to listen on,\n\t *\n\t * @default localhost\n\t */\n\tip: string;\n\n\t/**\n\t * Port for the local dev server to listen on\n\t *\n\t * @default 8787\n\t */\n\tport: number | undefined;\n\n\t/**\n\t * Port for the local dev server's inspector to listen on\n\t *\n\t * @default 9229\n\t */\n\tinspector_port: number | undefined;\n\n\t/**\n\t * Protocol that local wrangler dev server listens to requests on.\n\t *\n\t * @default http\n\t */\n\tlocal_protocol: \"http\" | \"https\";\n\n\t/**\n\t * Protocol that wrangler dev forwards requests on\n\t *\n\t * Setting this to `http` is not currently implemented for remote mode.\n\t * See https://github.com/cloudflare/workers-sdk/issues/583\n\t *\n\t * @default https\n\t */\n\tupstream_protocol: \"https\" | \"http\";\n\n\t/**\n\t * Host to forward requests to, defaults to the host of the first route of project\n\t */\n\thost: string | undefined;\n\n\t/**\n\t * When developing, whether to build and connect to containers. This requires a Docker daemon to be running.\n\t * Defaults to `true`.\n\t *\n\t * @default true\n\t */\n\tenable_containers: boolean;\n\n\t/**\n\t * Either the Docker unix socket i.e. `unix:///var/run/docker.sock` or a full configuration.\n\t * Note that windows is only supported via WSL at the moment\n\t */\n\tcontainer_engine: ContainerEngine | undefined;\n}\n\nexport type RawDevConfig = Partial<DevConfig>;\n\ninterface EnvironmentMap {\n\t/**\n\t * The `env` section defines overrides for the configuration for different environments.\n\t *\n\t * All environment fields can be specified at the top level of the config indicating the default environment settings.\n\t *\n\t * - Some fields are inherited and overridable in each environment.\n\t * - But some are not inherited and must be explicitly specified in every environment, if they are specified at the top level.\n\t *\n\t * For more information, see the documentation at https://developers.cloudflare.com/workers/cli-wrangler/configuration#environments\n\t *\n\t * @default {}\n\t */\n\tenv?: {\n\t\t[envName: string]: RawEnvironment;\n\t};\n}\n\nexport const defaultWranglerConfig: Config = {\n\t/* COMPUTED_FIELDS */\n\tconfigPath: undefined,\n\tuserConfigPath: undefined,\n\ttopLevelName: undefined,\n\tdefinedEnvironments: undefined,\n\ttargetEnvironment: undefined,\n\n\t/*====================================================*/\n\t/* Fields supported by both Workers & Pages */\n\t/*====================================================*/\n\t/* TOP-LEVEL ONLY FIELDS */\n\tpages_build_output_dir: undefined,\n\tsend_metrics: undefined,\n\tdev: {\n\t\tip: process.platform === \"win32\" ? \"127.0.0.1\" : \"localhost\",\n\t\tport: undefined, // the default of 8787 is set at runtime\n\t\tinspector_port: undefined, // the default of 9229 is set at runtime\n\t\tlocal_protocol: \"http\",\n\t\tupstream_protocol: \"http\",\n\t\thost: undefined,\n\t\t// Note this one is also workers only\n\t\tenable_containers: true,\n\t\tcontainer_engine: undefined,\n\t},\n\n\t/** INHERITABLE ENVIRONMENT FIELDS **/\n\tname: undefined,\n\tcompatibility_date: undefined,\n\tcompatibility_flags: [],\n\tlimits: undefined,\n\tplacement: undefined,\n\n\t/** NON-INHERITABLE ENVIRONMENT FIELDS **/\n\tvars: {},\n\tdurable_objects: { bindings: [] },\n\tkv_namespaces: [],\n\tqueues: {\n\t\tproducers: [],\n\t\tconsumers: [], // WORKERS SUPPORT ONLY!!\n\t},\n\tr2_buckets: [],\n\td1_databases: [],\n\tvectorize: [],\n\thyperdrive: [],\n\tworkflows: [],\n\tsecrets_store_secrets: [],\n\tservices: [],\n\tanalytics_engine_datasets: [],\n\tai: undefined,\n\timages: undefined,\n\tmedia: undefined,\n\tversion_metadata: undefined,\n\tunsafe_hello_world: [],\n\tratelimits: [],\n\tworker_loaders: [],\n\n\t/*====================================================*/\n\t/* Fields supported by Workers only */\n\t/*====================================================*/\n\t/* TOP-LEVEL ONLY FIELDS */\n\tlegacy_env: true,\n\tsite: undefined,\n\twasm_modules: undefined,\n\ttext_blobs: undefined,\n\tdata_blobs: undefined,\n\tkeep_vars: undefined,\n\talias: undefined,\n\n\t/** INHERITABLE ENVIRONMENT FIELDS **/\n\taccount_id: undefined,\n\tmain: undefined,\n\tfind_additional_modules: undefined,\n\tpreserve_file_names: undefined,\n\tbase_dir: undefined,\n\tworkers_dev: undefined,\n\tpreview_urls: undefined,\n\troute: undefined,\n\troutes: undefined,\n\ttsconfig: undefined,\n\tjsx_factory: \"React.createElement\",\n\tjsx_fragment: \"React.Fragment\",\n\tmigrations: [],\n\ttriggers: {\n\t\tcrons: undefined,\n\t},\n\trules: [],\n\tbuild: { command: undefined, watch_dir: \"./src\", cwd: undefined },\n\tno_bundle: undefined,\n\tminify: undefined,\n\tkeep_names: undefined,\n\tdispatch_namespaces: [],\n\tfirst_party_worker: undefined,\n\tlogfwdr: { bindings: [] },\n\tlogpush: undefined,\n\tupload_source_maps: undefined,\n\tassets: undefined,\n\tobservability: { enabled: true },\n\t/** The default here is undefined so that we can delegate to the CLOUDFLARE_COMPLIANCE_REGION environment variable. */\n\tcompliance_region: undefined,\n\tpython_modules: { exclude: [\"**/*.pyc\"] },\n\n\t/** NON-INHERITABLE ENVIRONMENT FIELDS **/\n\tdefine: {},\n\tcloudchamber: {},\n\tcontainers: undefined,\n\tsend_email: [],\n\tbrowser: undefined,\n\tunsafe: {},\n\tmtls_certificates: [],\n\ttail_consumers: undefined,\n\tpipelines: [],\n\tvpc_services: [],\n};\n","import TOML from \"@iarna/toml\";\nimport { parseJSONC, parseTOML, readFileSync } from \"../parse\";\nimport { resolveWranglerConfigPath } from \"./config-helpers\";\nimport type { Config, RawConfig } from \"./config\";\nimport type { ResolveConfigPathOptions } from \"./config-helpers\";\nimport type { NormalizeAndValidateConfigArgs } from \"./validation\";\n\nexport type {\n\tConfig,\n\tConfigFields,\n\tDevConfig,\n\tRawConfig,\n\tRawDevConfig,\n} from \"./config\";\nexport type {\n\tConfigModuleRuleType,\n\tEnvironment,\n\tRawEnvironment,\n} from \"./environment\";\n\nexport function configFormat(\n\tconfigPath: string | undefined\n): \"jsonc\" | \"toml\" | \"none\" {\n\tif (configPath?.endsWith(\"toml\")) {\n\t\treturn \"toml\";\n\t} else if (configPath?.endsWith(\"json\") || configPath?.endsWith(\"jsonc\")) {\n\t\treturn \"jsonc\";\n\t}\n\treturn \"none\";\n}\n\nexport function configFileName(configPath: string | undefined) {\n\tconst format = configFormat(configPath);\n\tif (format === \"toml\") {\n\t\treturn \"wrangler.toml\";\n\t} else if (format === \"jsonc\") {\n\t\treturn \"wrangler.json\";\n\t} else {\n\t\treturn \"Wrangler configuration\";\n\t}\n}\n\nexport function formatConfigSnippet(\n\tsnippet: RawConfig,\n\tconfigPath: Config[\"configPath\"],\n\tformatted = true\n) {\n\tconst format = configFormat(configPath);\n\tif (format === \"toml\") {\n\t\treturn TOML.stringify(snippet as TOML.JsonMap);\n\t} else {\n\t\treturn formatted\n\t\t\t? JSON.stringify(snippet, null, 2)\n\t\t\t: JSON.stringify(snippet);\n\t}\n}\n\nexport const sharedResourceCreationArgs = {\n\t\"use-remote\": {\n\t\ttype: \"boolean\",\n\t\tdescription:\n\t\t\t\"Use a remote binding when adding the newly created resource to your config\",\n\t},\n\t\"update-config\": {\n\t\ttype: \"boolean\",\n\t\tdescription:\n\t\t\t\"Automatically update your config file with the newly added resource\",\n\t},\n\tbinding: {\n\t\ttype: \"string\",\n\t\tdescription: \"The binding name of this resource in your Worker\",\n\t},\n} as const;\n\nexport type ReadConfigCommandArgs = NormalizeAndValidateConfigArgs & {\n\tconfig?: string;\n\tscript?: string;\n};\n\nexport type ReadConfigOptions = ResolveConfigPathOptions & {\n\thideWarnings?: boolean;\n\t// Used by the Vite plugin\n\t// If set to `true`, the `main` field is not converted to an absolute path\n\tpreserveOriginalMain?: boolean;\n};\n\nexport type ConfigBindingOptions = Pick<\n\tConfig,\n\t| \"ai\"\n\t| \"browser\"\n\t| \"d1_databases\"\n\t| \"dispatch_namespaces\"\n\t| \"durable_objects\"\n\t| \"queues\"\n\t| \"r2_buckets\"\n\t| \"services\"\n\t| \"kv_namespaces\"\n\t| \"mtls_certificates\"\n\t| \"vectorize\"\n\t| \"workflows\"\n\t| \"vpc_services\"\n>;\n\nconst parseRawConfigFile = (configPath: string): RawConfig => {\n\tif (configPath.endsWith(\".toml\")) {\n\t\treturn parseTOML(readFileSync(configPath), configPath);\n\t}\n\n\tif (configPath.endsWith(\".json\") || configPath.endsWith(\".jsonc\")) {\n\t\treturn parseJSONC(readFileSync(configPath), configPath) as RawConfig;\n\t}\n\n\treturn {};\n};\n\nexport const experimental_readRawConfig = (\n\targs: ReadConfigCommandArgs,\n\toptions: ReadConfigOptions = {}\n): {\n\trawConfig: RawConfig;\n\tconfigPath: string | undefined;\n\tuserConfigPath: string | undefined;\n\tdeployConfigPath: string | undefined;\n\tredirected: boolean;\n} => {\n\t// Load the configuration from disk if available\n\tconst { configPath, userConfigPath, deployConfigPath, redirected } =\n\t\tresolveWranglerConfigPath(args, options);\n\n\tconst rawConfig = parseRawConfigFile(configPath ?? \"\");\n\n\treturn {\n\t\trawConfig,\n\t\tconfigPath,\n\t\tuserConfigPath,\n\t\tdeployConfigPath,\n\t\tredirected,\n\t};\n};\n","import { readFileSync as fsReadFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport TOML from \"@iarna/toml\";\nimport * as jsoncParser from \"jsonc-parser\";\nimport { UserError } from \"./errors\";\nimport type { TelemetryMessage } from \"./errors\";\nimport type { ParseError as JsoncParseError } from \"jsonc-parser\";\n\nexport type Message = {\n\ttext: string;\n\tlocation?: Location;\n\tnotes?: Message[];\n\tkind?: \"warning\" | \"error\";\n} & TelemetryMessage;\n\nexport type Location = File & {\n\tline: number;\n\tcolumn: number;\n\tlength?: number;\n\tlineText?: string;\n\tsuggestion?: string;\n};\n\nexport type File = {\n\tfile?: string;\n\tfileText?: string;\n};\n\n/**\n * An error that's thrown when something fails to parse.\n */\nexport class ParseError extends UserError implements Message {\n\treadonly text: string;\n\treadonly notes: Message[];\n\treadonly location?: Location;\n\treadonly kind: \"warning\" | \"error\";\n\n\tconstructor({ text, notes, location, kind, telemetryMessage }: Message) {\n\t\tsuper(text, { telemetryMessage });\n\t\tthis.name = this.constructor.name;\n\t\tthis.text = text;\n\t\tthis.notes = notes ?? [];\n\t\tthis.location = location;\n\t\tthis.kind = kind ?? \"error\";\n\t}\n}\n\n// `ParseError`s shouldn't generally be reported to Sentry, but Wrangler has\n// relied on `ParseError` for any sort of error with additional notes.\n// In particular, API errors which we'd like to report are `ParseError`s.\n// Therefore, allow particular `ParseError`s to be marked `reportable`.\nexport class APIError extends ParseError {\n\t#status?: number;\n\tcode?: number;\n\taccountTag?: string;\n\n\tconstructor({ status, ...rest }: Message & { status?: number }) {\n\t\tsuper(rest);\n\t\tthis.name = this.constructor.name;\n\t\tthis.#status = status;\n\t}\n\n\tisGatewayError() {\n\t\tif (this.#status !== undefined) {\n\t\t\treturn [524].includes(this.#status);\n\t\t}\n\t\treturn false;\n\t}\n\n\tisRetryable() {\n\t\treturn String(this.#status).startsWith(\"5\");\n\t}\n\n\t// Allow `APIError`s to be marked as handled.\n\t#reportable = true;\n\tget reportable() {\n\t\treturn this.#reportable;\n\t}\n\tpreventReport() {\n\t\tthis.#reportable = false;\n\t}\n}\n\nconst TOML_ERROR_NAME = \"TomlError\";\nconst TOML_ERROR_SUFFIX = \" at row \";\n\ntype TomlError = Error & {\n\tline: number;\n\tcol: number;\n};\n\n/**\n * A wrapper around `TOML.parse` that throws a `ParseError`.\n */\nexport function parseTOML<T>(input: string, file?: string): T | never {\n\ttry {\n\t\t// Normalize CRLF to LF to avoid hitting https://github.com/iarna/iarna-toml/issues/33.\n\t\tconst normalizedInput = input.replace(/\\r\\n/g, \"\\n\");\n\t\treturn TOML.parse(normalizedInput) as T;\n\t} catch (err) {\n\t\tconst { name, message, line, col } = err as TomlError;\n\t\tif (name !== TOML_ERROR_NAME) {\n\t\t\tthrow err;\n\t\t}\n\t\tconst text = message.substring(0, message.lastIndexOf(TOML_ERROR_SUFFIX));\n\t\tconst lineText = input.split(\"\\n\")[line];\n\t\tconst location = {\n\t\t\tlineText,\n\t\t\tline: line + 1,\n\t\t\tcolumn: col - 1,\n\t\t\tfile,\n\t\t\tfileText: input,\n\t\t};\n\t\tthrow new ParseError({\n\t\t\ttext,\n\t\t\tlocation,\n\t\t\ttelemetryMessage: \"TOML parse error\",\n\t\t});\n\t}\n}\n\n/**\n * A minimal type describing a package.json file.\n */\nexport type PackageJSON = {\n\tdevDependencies?: Record<string, unknown>;\n\tdependencies?: Record<string, unknown>;\n\tscripts?: Record<string, unknown>;\n};\n\n/**\n * A typed version of `parseJSON()`.\n */\nexport function parsePackageJSON(input: string, file?: string): PackageJSON {\n\treturn parseJSON(input, file) as PackageJSON;\n}\n\n/**\n * Parses JSON and throws a `ParseError`.\n */\nexport function parseJSON(input: string, file?: string): unknown {\n\treturn parseJSONC(input, file, {\n\t\tallowEmptyContent: false,\n\t\tallowTrailingComma: false,\n\t\tdisallowComments: true,\n\t});\n}\n\n/**\n * A wrapper around `JSONC.parse` that throws a `ParseError`.\n */\nexport function parseJSONC(\n\tinput: string,\n\tfile?: string,\n\toptions: jsoncParser.ParseOptions = { allowTrailingComma: true }\n): unknown {\n\tconst errors: JsoncParseError[] = [];\n\tconst data = jsoncParser.parse(input, errors, options);\n\tif (errors.length) {\n\t\tthrow new ParseError({\n\t\t\ttext: jsoncParser.printParseErrorCode(errors[0].error),\n\t\t\tlocation: {\n\t\t\t\t...indexLocation({ file, fileText: input }, errors[0].offset + 1),\n\t\t\t\tlength: errors[0].length,\n\t\t\t},\n\t\t\ttelemetryMessage: \"JSON(C) parse error\",\n\t\t});\n\t}\n\treturn data;\n}\n\n/**\n * Reads a file into a node Buffer.\n */\nexport function readFileSyncToBuffer(file: string): Buffer {\n\ttry {\n\t\treturn fsReadFileSync(file);\n\t} catch (err) {\n\t\tconst { message } = err as Error;\n\t\tthrow new ParseError({\n\t\t\ttext: `Could not read file: ${file}`,\n\t\t\tnotes: [\n\t\t\t\t{\n\t\t\t\t\ttext: message.replace(file, resolve(file)),\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n}\n\n/**\n * Reads a file and parses it based on its type.\n */\nexport function readFileSync(file: string): string {\n\ttry {\n\t\tconst buffer = fsReadFileSync(file);\n\t\treturn removeBOMAndValidate(buffer, file);\n\t} catch (err) {\n\t\tif (err instanceof ParseError) {\n\t\t\tthrow err;\n\t\t}\n\n\t\tconst { message } = err as Error;\n\t\tthrow new ParseError({\n\t\t\ttext: `Could not read file: ${file}`,\n\t\t\tnotes: [\n\t\t\t\t{\n\t\t\t\t\ttext: message.replace(file, resolve(file)),\n\t\t\t\t},\n\t\t\t],\n\t\t\ttelemetryMessage: \"Could not read file\",\n\t\t});\n\t}\n}\n\n/**\n * Calculates the line and column location from an index.\n */\nexport function indexLocation(file: File, index: number): Location {\n\tlet lineText,\n\t\tline = 0,\n\t\tcolumn = 0,\n\t\tcursor = 0;\n\tconst { fileText = \"\" } = file;\n\tfor (const row of fileText.split(\"\\n\")) {\n\t\tline++;\n\t\tcursor += row.length + 1;\n\t\tif (cursor >= index) {\n\t\t\tlineText = row;\n\t\t\tcolumn = row.length - (cursor - index);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineText, line, column, ...file };\n}\n\n/**\n * Guesses the line and column location of a search query.\n */\nexport function searchLocation(file: File, query: unknown): Location {\n\tlet lineText,\n\t\tlength,\n\t\tline = 0,\n\t\tcolumn = 0;\n\tconst queryText = String(query);\n\tconst { fileText = \"\" } = file;\n\tfor (const content of fileText.split(\"\\n\")) {\n\t\tline++;\n\t\tconst index = content.indexOf(queryText);\n\t\tif (index >= 0) {\n\t\t\tlineText = content;\n\t\t\tcolumn = index;\n\t\t\tlength = queryText.length;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineText, line, column, length, ...file };\n}\n\nconst units = {\n\tnanoseconds: 0.000000001,\n\tnanosecond: 0.000000001,\n\tmicroseconds: 0.000001,\n\tmicrosecond: 0.000001,\n\tmilliseconds: 0.001,\n\tmillisecond: 0.001,\n\tseconds: 1,\n\tsecond: 1,\n\tminutes: 60,\n\tminute: 60,\n\thours: 3600,\n\thour: 3600,\n\tdays: 86400,\n\tday: 86400,\n\tweeks: 604800,\n\tweek: 604800,\n\tmonth: 18144000,\n\tyear: 220752000,\n\n\tnsecs: 0.000000001,\n\tnsec: 0.000000001,\n\tusecs: 0.000001,\n\tusec: 0.000001,\n\tmsecs: 0.001,\n\tmsec: 0.001,\n\tsecs: 1,\n\tsec: 1,\n\tmins: 60,\n\tmin: 60,\n\n\tns: 0.000000001,\n\tus: 0.000001,\n\tms: 0.001,\n\tmo: 18144000,\n\tyr: 220752000,\n\n\ts: 1,\n\tm: 60,\n\th: 3600,\n\td: 86400,\n\tw: 604800,\n\ty: 220752000,\n};\n\n/**\n * Parse a human-readable time duration in seconds (including fractional)\n *\n * Invalid values will return NaN\n */\nexport function parseHumanDuration(s: string): number {\n\tconst unitsMap = new Map(Object.entries(units));\n\ts = s.trim().toLowerCase();\n\tlet base = 1;\n\tfor (const [name, _] of unitsMap) {\n\t\tif (s.endsWith(name)) {\n\t\t\ts = s.substring(0, s.length - name.length);\n\t\t\tbase = unitsMap.get(name) || 1;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn Number(s) * base;\n}\n\nexport function parseNonHyphenedUuid(uuid: string | null): string | null {\n\tif (uuid == null || uuid.includes(\"-\")) {\n\t\treturn uuid;\n\t}\n\n\tif (uuid.length != 32) {\n\t\treturn null;\n\t}\n\n\tconst uuid_parts: string[] = [];\n\tuuid_parts.push(uuid.slice(0, 8));\n\tuuid_parts.push(uuid.slice(8, 12));\n\tuuid_parts.push(uuid.slice(12, 16));\n\tuuid_parts.push(uuid.slice(16, 20));\n\tuuid_parts.push(uuid.slice(20));\n\n\tlet hyphenated = \"\";\n\tuuid_parts.forEach((part) => (hyphenated += part + \"-\"));\n\n\treturn hyphenated.slice(0, 36);\n}\n\nexport function parseByteSize(\n\ts: string,\n\tbase: number | undefined = undefined\n): number {\n\tconst match = s.match(\n\t\t/^(\\d*\\.*\\d*)\\s*([kKmMgGtTpP]{0,1})([i]{0,1}[bB]{0,1})$/\n\t);\n\tif (!match) {\n\t\treturn NaN;\n\t}\n\n\tconst size = match[1];\n\tif (size.length === 0 || isNaN(Number(size))) {\n\t\treturn NaN;\n\t}\n\n\tconst unit = match[2].toLowerCase();\n\tconst sizeUnits = {\n\t\tk: 1,\n\t\tm: 2,\n\t\tg: 3,\n\t\tt: 4,\n\t\tp: 5,\n\t} as const;\n\tif (unit.length !== 0 && !(unit in sizeUnits)) {\n\t\treturn NaN;\n\t}\n\n\tconst binary = match[3].toLowerCase() == \"ib\";\n\tif (binary && unit.length === 0) {\n\t\t// Plain \"ib\" without a size unit is invalid\n\t\treturn NaN;\n\t}\n\n\tconst pow = sizeUnits[unit as keyof typeof sizeUnits] || 0;\n\n\treturn Math.floor(\n\t\tNumber(size) * Math.pow(base ?? (binary ? 1024 : 1000), pow)\n\t);\n}\n\nconst UNSUPPORTED_BOMS = [\n\t{\n\t\tbuffer: Buffer.from([0x00, 0x00, 0xfe, 0xff]),\n\t\tencoding: \"UTF-32 BE\",\n\t},\n\t{\n\t\tbuffer: Buffer.from([0xff, 0xfe, 0x00, 0x00]),\n\t\tencoding: \"UTF-32 LE\",\n\t},\n\t{\n\t\tbuffer: Buffer.from([0xfe, 0xff]),\n\t\tencoding: \"UTF-16 BE\",\n\t},\n\t{\n\t\tbuffer: Buffer.from([0xff, 0xfe]),\n\t\tencoding: \"UTF-16 LE\",\n\t},\n];\n\n/**\n * Removes UTF-8 BOM if present and validates that no other BOMs are present.\n * Throws ParseError for non-UTF-8 BOMs with descriptive error messages.\n */\nfunction removeBOMAndValidate(buffer: Buffer, file: string): string {\n\tfor (const bom of UNSUPPORTED_BOMS) {\n\t\tif (\n\t\t\tbuffer.length >= bom.buffer.length &&\n\t\t\tbuffer.subarray(0, bom.buffer.length).equals(bom.buffer)\n\t\t) {\n\t\t\tthrow new ParseError({\n\t\t\t\ttext: `Configuration file contains ${bom.encoding} byte order marker`,\n\t\t\t\tnotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: `The file \"${file}\" appears to be encoded as ${bom.encoding}. Please save the file as UTF-8 without BOM.`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tlocation: { file, line: 1, column: 0 },\n\t\t\t\ttelemetryMessage: `${bom.encoding} BOM detected`,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst content = buffer.toString(\"utf-8\");\n\n\tif (content.charCodeAt(0) === 0xfeff) {\n\t\treturn content.slice(1);\n\t}\n\n\treturn content;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia = false) {\n const len = text.length;\n let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n function scanHexDigits(count, exact) {\n let digits = 0;\n let value = 0;\n while (digits < count || !exact) {\n let ch = text.charCodeAt(pos);\n if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n }\n else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n }\n else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* SyntaxKind.Unknown */;\n scanError = 0 /* ScanError.None */;\n }\n function scanNumber() {\n let start = pos;\n if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n let result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === 34 /* CharacterCodes.doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* CharacterCodes.backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* CharacterCodes.doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* CharacterCodes.backslash */:\n result += '\\\\';\n break;\n case 47 /* CharacterCodes.slash */:\n result += '/';\n break;\n case 98 /* CharacterCodes.b */:\n result += '\\b';\n break;\n case 102 /* CharacterCodes.f */:\n result += '\\f';\n break;\n case 110 /* CharacterCodes.n */:\n result += '\\n';\n break;\n case 114 /* CharacterCodes.r */:\n result += '\\r';\n break;\n case 116 /* CharacterCodes.t */:\n result += '\\t';\n break;\n case 117 /* CharacterCodes.u */:\n const ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* ScanError.InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* ScanError.InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* ScanError.None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* SyntaxKind.EOF */;\n }\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* SyntaxKind.Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* SyntaxKind.LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* CharacterCodes.openBrace */:\n pos++;\n return token = 1 /* SyntaxKind.OpenBraceToken */;\n case 125 /* CharacterCodes.closeBrace */:\n pos++;\n return token = 2 /* SyntaxKind.CloseBraceToken */;\n case 91 /* CharacterCodes.openBracket */:\n pos++;\n return token = 3 /* SyntaxKind.OpenBracketToken */;\n case 93 /* CharacterCodes.closeBracket */:\n pos++;\n return token = 4 /* SyntaxKind.CloseBracketToken */;\n case 58 /* CharacterCodes.colon */:\n pos++;\n return token = 6 /* SyntaxKind.ColonToken */;\n case 44 /* CharacterCodes.comma */:\n pos++;\n return token = 5 /* SyntaxKind.CommaToken */;\n // strings\n case 34 /* CharacterCodes.doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* SyntaxKind.StringLiteral */;\n // comments\n case 47 /* CharacterCodes.slash */:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* SyntaxKind.LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n pos += 2;\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n // numbers\n case 45 /* CharacterCodes.minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* CharacterCodes._0 */:\n case 49 /* CharacterCodes._1 */:\n case 50 /* CharacterCodes._2 */:\n case 51 /* CharacterCodes._3 */:\n case 52 /* CharacterCodes._4 */:\n case 53 /* CharacterCodes._5 */:\n case 54 /* CharacterCodes._6 */:\n case 55 /* CharacterCodes._7 */:\n case 56 /* CharacterCodes._8 */:\n case 57 /* CharacterCodes._9 */:\n value += scanNumber();\n return token = 11 /* SyntaxKind.NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n }\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* CharacterCodes.closeBrace */:\n case 93 /* CharacterCodes.closeBracket */:\n case 123 /* CharacterCodes.openBrace */:\n case 91 /* CharacterCodes.openBracket */:\n case 34 /* CharacterCodes.doubleQuote */:\n case 58 /* CharacterCodes.colon */:\n case 44 /* CharacterCodes.comma */:\n case 47 /* CharacterCodes.slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n let result;\n do {\n result = scanNext();\n } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nexport function format(documentText, range, options) {\n let initialIndentLevel;\n let formatText;\n let formatTextStart;\n let rangeStart;\n let rangeEnd;\n if (range) {\n rangeStart = range.offset;\n rangeEnd = rangeStart + range.length;\n formatTextStart = rangeStart;\n while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n formatTextStart--;\n }\n let endOffset = rangeEnd;\n while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n endOffset++;\n }\n formatText = documentText.substring(formatTextStart, endOffset);\n initialIndentLevel = computeIndentLevel(formatText, options);\n }\n else {\n formatText = documentText;\n initialIndentLevel = 0;\n formatTextStart = 0;\n rangeStart = 0;\n rangeEnd = documentText.length;\n }\n const eol = getEOL(options, documentText);\n let numberLineBreaks = 0;\n let indentLevel = 0;\n let indentValue;\n if (options.insertSpaces) {\n indentValue = repeat(' ', options.tabSize || 4);\n }\n else {\n indentValue = '\\t';\n }\n let scanner = createScanner(formatText, false);\n let hasError = false;\n function newLinesAndIndent() {\n if (numberLineBreaks > 1) {\n return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n else {\n return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n }\n function scanNext() {\n let token = scanner.scan();\n numberLineBreaks = 0;\n while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {\n if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {\n numberLineBreaks += 1;\n }\n else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {\n numberLineBreaks = 1;\n }\n token = scanner.scan();\n }\n hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;\n return token;\n }\n const editOperations = [];\n function addEdit(text, startOffset, endOffset) {\n if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {\n editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n }\n }\n let firstToken = scanNext();\n if (options.keepLines && numberLineBreaks > 0) {\n addEdit(repeat(eol, numberLineBreaks), 0, 0);\n }\n if (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n let initialIndent = repeat(indentValue, initialIndentLevel);\n addEdit(initialIndent, formatTextStart, firstTokenStart);\n }\n while (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n let secondToken = scanNext();\n let replaceContent = '';\n let needsLineBreak = false;\n while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n let commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(' ', firstTokenEnd, commentTokenStart);\n firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;\n replaceContent = needsLineBreak ? newLinesAndIndent() : '';\n secondToken = scanNext();\n }\n if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {\n if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = ' ';\n }\n }\n else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {\n if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = ' ';\n }\n }\n else {\n switch (firstToken) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n case 1 /* SyntaxKind.OpenBraceToken */:\n indentLevel++;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = ' ';\n }\n break;\n case 5 /* SyntaxKind.CommaToken */:\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = ' ';\n }\n break;\n case 12 /* SyntaxKind.LineCommentTrivia */:\n replaceContent = newLinesAndIndent();\n break;\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = ' ';\n }\n break;\n case 6 /* SyntaxKind.ColonToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = ' ';\n }\n break;\n case 10 /* SyntaxKind.StringLiteral */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {\n replaceContent = '';\n }\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n case 8 /* SyntaxKind.TrueKeyword */:\n case 9 /* SyntaxKind.FalseKeyword */:\n case 11 /* SyntaxKind.NumericLiteral */:\n case 2 /* SyntaxKind.CloseBraceToken */:\n case 4 /* SyntaxKind.CloseBracketToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {\n replaceContent = ' ';\n }\n else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {\n hasError = true;\n }\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n hasError = true;\n break;\n }\n if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n replaceContent = newLinesAndIndent();\n }\n }\n if (secondToken === 17 /* SyntaxKind.EOF */) {\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = options.insertFinalNewline ? eol : '';\n }\n }\n const secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n firstToken = secondToken;\n }\n return editOperations;\n}\nfunction repeat(s, count) {\n let result = '';\n for (let i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\nfunction computeIndentLevel(content, options) {\n let i = 0;\n let nChars = 0;\n const tabSize = options.tabSize || 4;\n while (i < content.length) {\n let ch = content.charAt(i);\n if (ch === ' ') {\n nChars++;\n }\n else if (ch === '\\t') {\n nChars += tabSize;\n }\n else {\n break;\n }\n i++;\n }\n return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n for (let i = 0; i < text.length; i++) {\n const ch = text.charAt(i);\n if (ch === '\\r') {\n if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n return '\\r\\n';\n }\n return '\\r';\n }\n else if (ch === '\\n') {\n return '\\n';\n }\n }\n return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n const segments = []; // strings or numbers\n const earlyReturnException = new Object();\n let previousNode = undefined;\n const previousNodeInst = {\n value: {},\n offset: 0,\n length: 0,\n type: 'object',\n parent: undefined\n };\n let isAtPropertyKey = false;\n function setPreviousNode(value, offset, length, type) {\n previousNodeInst.value = value;\n previousNodeInst.offset = offset;\n previousNodeInst.length = length;\n previousNodeInst.type = type;\n previousNodeInst.colonOffset = undefined;\n previousNode = previousNodeInst;\n }\n try {\n visit(text, {\n onObjectBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n isAtPropertyKey = position > offset;\n segments.push(''); // push a placeholder (will be replaced)\n },\n onObjectProperty: (name, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(name, offset, length, 'property');\n segments[segments.length - 1] = name;\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onObjectEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onArrayBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.push(0);\n },\n onArrayEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onLiteralValue: (value, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(value, offset, length, getNodeType(value));\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onSeparator: (sep, offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n if (sep === ':' && previousNode && previousNode.type === 'property') {\n previousNode.colonOffset = offset;\n isAtPropertyKey = false;\n previousNode = undefined;\n }\n else if (sep === ',') {\n const last = segments[segments.length - 1];\n if (typeof last === 'number') {\n segments[segments.length - 1] = last + 1;\n }\n else {\n isAtPropertyKey = true;\n segments[segments.length - 1] = '';\n }\n previousNode = undefined;\n }\n }\n });\n }\n catch (e) {\n if (e !== earlyReturnException) {\n throw e;\n }\n }\n return {\n path: segments,\n previousNode,\n isAtPropertyKey,\n matches: (pattern) => {\n let k = 0;\n for (let i = 0; k < pattern.length && i < segments.length; i++) {\n if (pattern[k] === segments[i] || pattern[k] === '*') {\n k++;\n }\n else if (pattern[k] !== '**') {\n return false;\n }\n }\n return k === pattern.length;\n }\n };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentProperty = null;\n let currentParent = [];\n const previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n const visitor = {\n onObjectBegin: () => {\n const object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: (name) => {\n currentProperty = name;\n },\n onObjectEnd: () => {\n currentParent = previousParents.pop();\n },\n onArrayBegin: () => {\n const array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: () => {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n function ensurePropertyComplete(endOffset) {\n if (currentParent.type === 'property') {\n currentParent.length = endOffset - currentParent.offset;\n currentParent = currentParent.parent;\n }\n }\n function onValue(valueNode) {\n currentParent.children.push(valueNode);\n return valueNode;\n }\n const visitor = {\n onObjectBegin: (offset) => {\n currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });\n },\n onObjectProperty: (name, offset, length) => {\n currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });\n currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });\n },\n onObjectEnd: (offset, length) => {\n ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onArrayBegin: (offset, length) => {\n currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });\n },\n onArrayEnd: (offset, length) => {\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onLiteralValue: (value, offset, length) => {\n onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });\n ensurePropertyComplete(offset + length);\n },\n onSeparator: (sep, offset, length) => {\n if (currentParent.type === 'property') {\n if (sep === ':') {\n currentParent.colonOffset = offset;\n }\n else if (sep === ',') {\n ensurePropertyComplete(offset);\n }\n }\n },\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n const result = currentParent.children[0];\n if (result) {\n delete result.parent;\n }\n return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n if (!root) {\n return undefined;\n }\n let node = root;\n for (let segment of path) {\n if (typeof segment === 'string') {\n if (node.type !== 'object' || !Array.isArray(node.children)) {\n return undefined;\n }\n let found = false;\n for (const propertyNode of node.children) {\n if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {\n node = propertyNode.children[1];\n found = true;\n break;\n }\n }\n if (!found) {\n return undefined;\n }\n }\n else {\n const index = segment;\n if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n return undefined;\n }\n node = node.children[index];\n }\n }\n return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n const path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n const key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n const index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n const obj = Object.create(null);\n for (let prop of node.children) {\n const valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nexport function contains(node, offset, includeRightBound = false) {\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound = false) {\n if (contains(node, offset, includeRightBound)) {\n const children = node.children;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options = ParseOptions.DEFAULT) {\n const _scanner = createScanner(text, false);\n // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n // to not affect visitor functions which stored a reference to a previous JSONPath\n const _jsonPath = [];\n function toNoArgVisit(visitFunction) {\n return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toNoArgVisitWithPath(visitFunction) {\n return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisitWithPath(visitFunction) {\n return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n const disallowComments = options && options.disallowComments;\n const allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n const token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* ScanError.InvalidUnicode */:\n handleError(14 /* ParseErrorCode.InvalidUnicode */);\n break;\n case 5 /* ScanError.InvalidEscapeCharacter */:\n handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n break;\n case 3 /* ScanError.UnexpectedEndOfNumber */:\n handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n break;\n case 1 /* ScanError.UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n }\n break;\n case 2 /* ScanError.UnexpectedEndOfString */:\n handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n break;\n case 6 /* ScanError.InvalidCharacter */:\n handleError(16 /* ParseErrorCode.InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n handleError(1 /* ParseErrorCode.InvalidSymbol */);\n break;\n case 15 /* SyntaxKind.Trivia */:\n case 14 /* SyntaxKind.LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter = [], skipUntil = []) {\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = _scanner.getToken();\n while (token !== 17 /* SyntaxKind.EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n const value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n // add property name afterwards\n _jsonPath.push(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* SyntaxKind.NumericLiteral */:\n const tokenValue = _scanner.getTokenValue();\n let value = Number(tokenValue);\n if (isNaN(value)) {\n handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n value = 0;\n }\n onLiteralValue(value);\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* SyntaxKind.TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* SyntaxKind.FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n }\n else {\n handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n _jsonPath.pop(); // remove processed property name\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n let needsComma = false;\n while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n let isFirstElement = true;\n let needsComma = false;\n while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (isFirstElement) {\n _jsonPath.push(0);\n isFirstElement = false;\n }\n else {\n _jsonPath[_jsonPath.length - 1]++;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (!isFirstElement) {\n _jsonPath.pop(); // remove array index\n }\n if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n return parseArray();\n case 1 /* SyntaxKind.OpenBraceToken */:\n return parseObject();\n case 10 /* SyntaxKind.StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n }\n return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n do {\n pos = _scanner.getPosition();\n kind = _scanner.scan();\n switch (kind) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n case 17 /* SyntaxKind.EOF */:\n if (offset !== pos) {\n parts.push(text.substring(offset, pos));\n }\n if (replaceCh !== undefined) {\n parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n }\n offset = _scanner.getPosition();\n break;\n }\n } while (kind !== 17 /* SyntaxKind.EOF */);\n return parts.join('');\n}\nexport function getNodeType(value) {\n switch (typeof value) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'object': {\n if (!value) {\n return 'null';\n }\n else if (Array.isArray(value)) {\n return 'array';\n }\n return 'object';\n }\n default: return 'null';\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { format, isEOL } from './format';\nimport { parseTree, findNodeAtLocation } from './parser';\nexport function removeProperty(text, path, options) {\n return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n const path = originalPath.slice();\n const errors = [];\n const root = parseTree(text, errors);\n let parent = void 0;\n let lastSegment = void 0;\n while (path.length > 0) {\n lastSegment = path.pop();\n parent = findNodeAtLocation(root, path);\n if (parent === void 0 && value !== void 0) {\n if (typeof lastSegment === 'string') {\n value = { [lastSegment]: value };\n }\n else {\n value = [value];\n }\n }\n else {\n break;\n }\n }\n if (!parent) {\n // empty document\n if (value === void 0) { // delete\n throw new Error('Can not delete in empty document');\n }\n return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n }\n else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n const existing = findNodeAtLocation(parent, [lastSegment]);\n if (existing !== void 0) {\n if (value === void 0) { // delete\n if (!existing.parent) {\n throw new Error('Malformed AST');\n }\n const propertyIndex = parent.children.indexOf(existing.parent);\n let removeBegin;\n let removeEnd = existing.parent.offset + existing.parent.length;\n if (propertyIndex > 0) {\n // remove the comma of the previous node\n let previous = parent.children[propertyIndex - 1];\n removeBegin = previous.offset + previous.length;\n }\n else {\n removeBegin = parent.offset + 1;\n if (parent.children.length > 1) {\n // remove the comma of the next node\n let next = parent.children[1];\n removeEnd = next.offset;\n }\n }\n return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n }\n else {\n // set value of existing property\n return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n }\n }\n else {\n if (value === void 0) { // delete\n return []; // property does not exist, nothing to do\n }\n const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;\n const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;\n let edit;\n if (index > 0) {\n let previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n else if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n }\n return withFormatting(text, edit, options);\n }\n }\n else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n const insertIndex = lastSegment;\n if (insertIndex === -1) {\n // Insert\n const newProperty = `${JSON.stringify(value)}`;\n let edit;\n if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n const previous = parent.children[parent.children.length - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else if (value === void 0 && parent.children.length >= 0) {\n // Removal\n const removalIndex = lastSegment;\n const toRemove = parent.children[removalIndex];\n let edit;\n if (parent.children.length === 1) {\n // only item\n edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n }\n else if (parent.children.length - 1 === removalIndex) {\n // last item\n let previous = parent.children[removalIndex - 1];\n let offset = previous.offset + previous.length;\n let parentEndOffset = parent.offset + parent.length;\n edit = { offset, length: parentEndOffset - 2 - offset, content: '' };\n }\n else {\n edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n }\n return withFormatting(text, edit, options);\n }\n else if (value !== void 0) {\n let edit;\n const newProperty = `${JSON.stringify(value)}`;\n if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n const toModify = parent.children[lastSegment];\n edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n }\n else if (parent.children.length === 0 || lastSegment === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n }\n else {\n const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n const previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else {\n throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);\n }\n }\n else {\n throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);\n }\n}\nfunction withFormatting(text, edit, options) {\n if (!options.formattingOptions) {\n return [edit];\n }\n // apply the edit\n let newText = applyEdit(text, edit);\n // format the new text\n let begin = edit.offset;\n let end = edit.offset + edit.content.length;\n if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n while (begin > 0 && !isEOL(newText, begin - 1)) {\n begin--;\n }\n while (end < newText.length && !isEOL(newText, end)) {\n end++;\n }\n }\n const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });\n // apply the formatting edits and track the begin and end offsets of the changes\n for (let i = edits.length - 1; i >= 0; i--) {\n const edit = edits[i];\n newText = applyEdit(newText, edit);\n begin = Math.min(begin, edit.offset);\n end = Math.max(end, edit.offset + edit.length);\n end += edit.content.length - edit.length;\n }\n // create a single edit with all changes\n const editLength = text.length - (newText.length - end) - begin;\n return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport * as formatter from './impl/format';\nimport * as edit from './impl/edit';\nimport * as scanner from './impl/scanner';\nimport * as parser from './impl/parser';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport const createScanner = scanner.createScanner;\nexport var ScanError;\n(function (ScanError) {\n ScanError[ScanError[\"None\"] = 0] = \"None\";\n ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport const getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport const parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport const parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport const findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport const findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport const getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport const getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport const visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport const stripComments = parser.stripComments;\nexport var ParseErrorCode;\n(function (ParseErrorCode) {\n ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\nexport function printParseErrorCode(code) {\n switch (code) {\n case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';\n case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';\n case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';\n case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';\n case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';\n case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';\n case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';\n case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';\n case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';\n case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';\n case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';\n case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';\n }\n return '<unknown ParseErrorCode>';\n}\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function format(documentText, range, options) {\n return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edit operations needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function modify(text, path, value, options) {\n return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to an input string.\n * @param text The input text\n * @param edits Edit operations following the format described in {@linkcode EditResult}.\n * @returns The text with the applied edits.\n * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.\n */\nexport function applyEdits(text, edits) {\n let sortedEdits = edits.slice(0).sort((a, b) => {\n const diff = a.offset - b.offset;\n if (diff === 0) {\n return a.length - b.length;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n if (e.offset + e.length <= lastModifiedOffset) {\n text = edit.applyEdit(text, e);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = e.offset;\n }\n return text;\n}\n","/**\n * This is used to provide telemetry with a sanitised error\n * message that could not have any user-identifying information.\n * Set to `true` to duplicate `message`.\n * */\nexport type TelemetryMessage = {\n\ttelemetryMessage?: string | true;\n};\n/**\n * Base class for errors where the user has done something wrong. These are not\n * reported to Sentry. API errors are intentionally *not* `UserError`s, and are\n * reported to Sentry. This will help us understand which API errors need better\n * messaging.\n */\nexport class UserError extends Error {\n\ttelemetryMessage: string | undefined;\n\tconstructor(\n\t\tmessage?: string | undefined,\n\t\toptions?: (ErrorOptions & TelemetryMessage) | undefined\n\t) {\n\t\tsuper(message, options);\n\t\t// Restore prototype chain:\n\t\t// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t\tthis.telemetryMessage =\n\t\t\toptions?.telemetryMessage === true ? message : options?.telemetryMessage;\n\t}\n}\n\nexport class DeprecationError extends UserError {\n\tconstructor(message: string, options?: TelemetryMessage) {\n\t\tsuper(`Deprecation:\\n${message}`, options);\n\t}\n}\n\nexport class FatalError extends UserError {\n\tconstructor(\n\t\tmessage?: string,\n\t\treadonly code?: number | undefined,\n\t\toptions?: TelemetryMessage\n\t) {\n\t\tsuper(message, options);\n\t}\n}\n\nexport class CommandLineArgsError extends UserError {}\n\n/**\n * JsonFriendlyFatalError is used to output JSON when wrangler crashes, useful for --json mode.\n *\n * To use, pass stringify'd json into the constructor like so:\n * ```js\n * throw new JsonFriendlyFatalError(JSON.stringify({ error: messageToDisplay });\n * ```\n */\nexport class JsonFriendlyFatalError extends FatalError {\n\tconstructor(\n\t\tmessage?: string,\n\t\treadonly code?: number,\n\t\toptions?: TelemetryMessage\n\t) {\n\t\tsuper(message, code, options);\n\t}\n}\n\nexport class MissingConfigError extends Error {\n\ttelemetryMessage: string | undefined;\n\tconstructor(key: string) {\n\t\tsuper(`Missing config value for ${key}`);\n\t\tthis.telemetryMessage = `Missing config value for ${key}`;\n\t}\n}\n\n/**\n * Create either a FatalError or JsonFriendlyFatalError depending upon `isJson` parameter.\n *\n * If `isJson` is true, then the `message` is JSON stringified.\n */\nexport function createFatalError(\n\tmessage: unknown,\n\tisJson: boolean,\n\tcode?: number,\n\ttelemetryMessage?: TelemetryMessage\n): Error {\n\tif (isJson) {\n\t\treturn new JsonFriendlyFatalError(\n\t\t\tJSON.stringify(message),\n\t\t\tcode,\n\t\t\ttelemetryMessage\n\t\t);\n\t} else {\n\t\treturn new FatalError(`${message}`, code, telemetryMessage);\n\t}\n}\n","import process from 'node:process';\nimport path from 'node:path';\nimport fs, {promises as fsPromises} from 'node:fs';\nimport {fileURLToPath} from 'node:url';\nimport pLocate from 'p-locate';\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile',\n};\n\nfunction checkType(type) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport async function locatePath(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t\tconcurrency,\n\t\tpreserveOrder,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFunction(path.resolve(cwd, path_));\n\t\t\treturn matchType(type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, {concurrency, preserveOrder});\n}\n\nexport function locatePathSync(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFunction(path.resolve(cwd, path_));\n\n\t\t\tif (matchType(type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n}\n","import path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport {locatePath, locatePathSync} from 'locate-path';\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport const findUpStop = Symbol('findUpStop');\n\nexport async function findUpMultiple(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) || '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, options.stopAt || root);\n\tconst limit = options.limit || Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport function findUpMultipleSync(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) || '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = options.stopAt || root;\n\tconst limit = options.limit || Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePathSync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePathSync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport async function findUp(name, options = {}) {\n\tconst matches = await findUpMultiple(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport function findUpSync(name, options = {}) {\n\tconst matches = findUpMultipleSync(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport {\n\tpathExists,\n\tpathExistsSync,\n} from 'path-exists';\n","export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n }, <number[]>[]);\n\n // 3. Remove the common indentation from all strings.\n if (indentLengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n\n strings = strings.map((str) => str.replace(pattern, '\\n'));\n }\n\n // 4. Remove leading whitespace.\n strings[0] = strings[0].replace(/^\\r?\\n/, '');\n\n // 5. Perform interpolation.\n let string = strings[0];\n\n values.forEach((value, i) => {\n // 5.1 Read current indentation level\n const endentations = string.match(/(?:^|\\n)( *)$/)\n const endentation = endentations ? endentations[1] : ''\n let indentedValue = value\n // 5.2 Add indentation to values with multiline strings\n if (typeof value === 'string' && value.includes('\\n')) {\n indentedValue = String(value)\n .split('\\n')\n .map((str, i) => {\n return i === 0 ? str : `${endentation}${str}`\n })\n .join('\\n');\n }\n\n string += indentedValue + strings[i + 1];\n });\n\n return string;\n}\n\nexport default dedent;\n","/**\n * A symbol to inherit a binding from the deployed worker.\n */\nexport const INHERIT_SYMBOL = Symbol.for(\"inherit_binding\");\n\nexport const SERVICE_TAG_PREFIX = \"cf:service=\";\nexport const ENVIRONMENT_TAG_PREFIX = \"cf:environment=\";\n\nexport const PATH_TO_DEPLOY_CONFIG = \".wrangler/deploy/config.json\";\n","import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { findUpSync } from \"find-up\";\nimport dedent from \"ts-dedent\";\nimport { PATH_TO_DEPLOY_CONFIG } from \"../constants\";\nimport { UserError } from \"../errors\";\nimport { parseJSONC, readFileSync } from \"../parse\";\nimport type { RawConfig, RedirectedRawConfig } from \"./config\";\n\nexport type ResolveConfigPathOptions = {\n\tuseRedirectIfAvailable?: boolean;\n};\n\nexport type ConfigPaths = {\n\t/** Absolute path to the actual configuration being used (possibly redirected from the user's config). */\n\tconfigPath: string | undefined;\n\t/** Absolute path to the user's configuration, which may not be the same as `configPath` if it was redirected. */\n\tuserConfigPath: string | undefined;\n\t/** Absolute path to the deploy config path used */\n\tdeployConfigPath: string | undefined;\n\t/** Was a redirected config file read? */\n\tredirected: boolean;\n};\n\n/**\n * Resolve the path to the configuration file, given the `config` and `script` optional command line arguments.\n * `config` takes precedence, then `script`, then we just use the cwd.\n *\n * Returns an object with two paths: `configPath` and `userConfigPath`. If defined these are absolute file paths.\n */\nexport function resolveWranglerConfigPath(\n\t{\n\t\tconfig,\n\t\tscript,\n\t}: {\n\t\tconfig?: string;\n\t\tscript?: string;\n\t},\n\toptions: { useRedirectIfAvailable?: boolean }\n): ConfigPaths {\n\tif (config !== undefined) {\n\t\treturn {\n\t\t\tuserConfigPath: config,\n\t\t\tconfigPath: config,\n\t\t\tdeployConfigPath: undefined,\n\t\t\tredirected: false,\n\t\t};\n\t}\n\n\tconst leafPath = script !== undefined ? path.dirname(script) : process.cwd();\n\n\treturn findWranglerConfig(leafPath, options);\n}\n\n/**\n * Find the wrangler configuration file by searching up the file-system\n * from the current working directory.\n */\nexport function findWranglerConfig(\n\treferencePath: string = process.cwd(),\n\t{ useRedirectIfAvailable = false } = {}\n): ConfigPaths {\n\tconst userConfigPath =\n\t\tfindUpSync(`wrangler.json`, { cwd: referencePath }) ??\n\t\tfindUpSync(`wrangler.jsonc`, { cwd: referencePath }) ??\n\t\tfindUpSync(`wrangler.toml`, { cwd: referencePath });\n\n\tif (!useRedirectIfAvailable) {\n\t\treturn {\n\t\t\tuserConfigPath,\n\t\t\tconfigPath: userConfigPath,\n\t\t\tdeployConfigPath: undefined,\n\t\t\tredirected: false,\n\t\t};\n\t}\n\n\tconst { configPath, deployConfigPath, redirected } =\n\t\tfindRedirectedWranglerConfig(referencePath, userConfigPath);\n\n\treturn {\n\t\tuserConfigPath,\n\t\tconfigPath,\n\t\tdeployConfigPath,\n\t\tredirected,\n\t};\n}\n\n/**\n * Check whether there is a configuration file that indicates that we should redirect the user configuration.\n * @param cwd\n * @param userConfigPath\n * @returns\n */\nfunction findRedirectedWranglerConfig(\n\tcwd: string,\n\tuserConfigPath: string | undefined\n): {\n\tconfigPath: string | undefined;\n\tdeployConfigPath: string | undefined;\n\tredirected: boolean;\n} {\n\tconst deployConfigPath = findUpSync(PATH_TO_DEPLOY_CONFIG, { cwd });\n\tif (deployConfigPath === undefined) {\n\t\treturn { configPath: userConfigPath, deployConfigPath, redirected: false };\n\t}\n\n\tlet redirectedConfigPath: string | undefined;\n\tconst deployConfigFile = readFileSync(deployConfigPath);\n\ttry {\n\t\tconst deployConfig = parseJSONC(deployConfigFile, deployConfigPath) as {\n\t\t\tconfigPath?: string;\n\t\t};\n\t\tredirectedConfigPath =\n\t\t\tdeployConfig.configPath &&\n\t\t\tpath.resolve(path.dirname(deployConfigPath), deployConfig.configPath);\n\t} catch (e) {\n\t\tthrow new UserError(\n\t\t\t`Failed to parse the deploy configuration file at ${path.relative(\".\", deployConfigPath)}`,\n\t\t\t{ cause: e }\n\t\t);\n\t}\n\tif (!redirectedConfigPath) {\n\t\tthrow new UserError(dedent`\n\t\t\tA deploy configuration file was found at \"${path.relative(\".\", deployConfigPath)}\".\n\t\t\tBut this is not valid - the required \"configPath\" property was not found.\n\t\t\tInstead this file contains:\n\t\t\t\\`\\`\\`\n\t\t\t${deployConfigFile}\n\t\t\t\\`\\`\\`\n\t\t`);\n\t}\n\n\tif (!existsSync(redirectedConfigPath)) {\n\t\tthrow new UserError(dedent`\n\t\t\t\tThere is a deploy configuration at \"${path.relative(\".\", deployConfigPath)}\".\n\t\t\t\tBut the redirected configuration path it points to, \"${path.relative(\".\", redirectedConfigPath)}\", does not exist.\n\t\t\t`);\n\t}\n\tif (userConfigPath) {\n\t\tif (\n\t\t\tpath.join(path.dirname(userConfigPath), PATH_TO_DEPLOY_CONFIG) !==\n\t\t\tdeployConfigPath\n\t\t) {\n\t\t\tthrow new UserError(dedent`\n\t\t\t\t\tFound both a user configuration file at \"${path.relative(\".\", userConfigPath)}\"\n\t\t\t\t\tand a deploy configuration file at \"${path.relative(\".\", deployConfigPath)}\".\n\t\t\t\t\tBut these do not share the same base path so it is not clear which should be used.\n\t\t\t\t`);\n\t\t}\n\t}\n\n\treturn {\n\t\tconfigPath: redirectedConfigPath,\n\t\tdeployConfigPath,\n\t\tredirected: true,\n\t};\n}\n\nexport function isRedirectedRawConfig(\n\trawConfig: RawConfig,\n\tconfigPath: string | undefined,\n\tuserConfigPath: string | undefined\n): rawConfig is RedirectedRawConfig {\n\treturn configPath !== undefined && configPath !== userConfigPath;\n}\n","import { writeFileSync } from \"fs\";\nimport TOML from \"@iarna/toml\";\nimport { applyEdits, format, modify } from \"jsonc-parser\";\nimport { parseJSONC, parseTOML, readFileSync } from \"../parse\";\nimport type { RawConfig } from \"./config\";\nimport type { JSONPath } from \"jsonc-parser\";\n\nexport const experimental_patchConfig = (\n\tconfigPath: string,\n\t/**\n\t * if you want to add something new, e.g. a binding, you can just provide that {kv_namespace:[{binding:\"KV\"}]}\n\t * and set isArrayInsertion = true\n\t *\n\t * if you want to edit or delete existing array elements, you have to provide the whole array\n\t * e.g. {kv_namespace:[{binding:\"KV\", id:\"new-id\"}, {binding:\"KV2\", id:\"untouched\"}]}\n\t * and set isArrayInsertion = false\n\t */\n\tpatch: RawConfig,\n\tisArrayInsertion: boolean = true\n) => {\n\tlet configString = readFileSync(configPath);\n\n\tif (configPath.endsWith(\"toml\")) {\n\t\t// the TOML parser we use does not preserve comments\n\t\tif (configString.includes(\"#\")) {\n\t\t\tthrow new PatchConfigError(\n\t\t\t\t\"cannot patch .toml config if comments are present\"\n\t\t\t);\n\t\t} else {\n\t\t\t// for simplicity, use the JSONC editor to make all edits\n\t\t\t// toml -> js object -> json string -> edits -> js object -> toml\n\t\t\tconfigString = JSON.stringify(parseTOML(configString));\n\t\t}\n\t}\n\n\tconst patchPaths: JSONPath[] = [];\n\tgetJSONPath(patch, patchPaths, isArrayInsertion);\n\tfor (const patchPath of patchPaths) {\n\t\tconst value = patchPath.pop();\n\t\tconst edit = modify(configString, patchPath, value, {\n\t\t\tisArrayInsertion,\n\t\t});\n\t\tconfigString = applyEdits(configString, edit);\n\t}\n\tconst formatEdit = format(configString, undefined, {});\n\tconfigString = applyEdits(configString, formatEdit);\n\n\tif (configPath.endsWith(\".toml\")) {\n\t\tconfigString = TOML.stringify(parseJSONC(configString) as TOML.JsonMap);\n\t}\n\twriteFileSync(configPath, configString);\n\treturn configString;\n};\n\n/**\n *\n * Gets all the JSON paths for a given object by recursing through the object, recording the properties encountered.\n * e.g. {a : { b: \"c\", d: [\"e\", \"f\"]}} -> [[\"a\", \"b\", \"c\"], [\"a\", \"d\", 0], [\"a\", \"d\", 1]]\n * The jsonc-parser library requires JSON paths for each edit.\n * Note the final 'path' segment is the value we want to insert,\n * so in the above example,[\"a\", \"b\"] would be the path and we would insert \"c\"\n *\n * If isArrayInsertion = false, when we encounter an array, we use the item index as part of the path and continue\n * If isArrayInsertion = false, we stop recursing down and treat the whole array item as the final path segment/value.\n *\n */\nconst getJSONPath = (\n\tobj: RawConfig,\n\tallPaths: JSONPath[],\n\tisArrayInsertion: boolean,\n\tprevPath: JSONPath = []\n) => {\n\tfor (const [k, v] of Object.entries(obj)) {\n\t\tconst currentPath = [...prevPath, k];\n\t\tif (Array.isArray(v)) {\n\t\t\tv.forEach((x, i) => {\n\t\t\t\tif (isArrayInsertion) {\n\t\t\t\t\t// makes sure we insert new array items at the end\n\t\t\t\t\tallPaths.push([...currentPath, -1, x]);\n\t\t\t\t} else if (typeof x === \"object\") {\n\t\t\t\t\tgetJSONPath(x, allPaths, isArrayInsertion, [...currentPath, i]);\n\t\t\t\t} else {\n\t\t\t\t\tallPaths.push([...currentPath, i, x]);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (typeof v === \"object\") {\n\t\t\tgetJSONPath(v, allPaths, isArrayInsertion, currentPath);\n\t\t} else {\n\t\t\tallPaths.push([...currentPath, v]);\n\t\t}\n\t}\n};\n\n/**\n * Custom error class for config patching errors\n */\nexport class PatchConfigError extends Error {}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ApplicationHealth } from \"./ApplicationHealth\";\nimport type { ApplicationRolloutProgress } from \"./ApplicationRolloutProgress\";\nimport type { ISO8601Timestamp } from \"./ISO8601Timestamp\";\nimport type { ModifyUserDeploymentConfiguration } from \"./ModifyUserDeploymentConfiguration\";\nimport type { RolloutID } from \"./RolloutID\";\nimport type { RolloutStep } from \"./RolloutStep\";\n\n/**\n * Represents the status and metadata of a rollout process for an application.\n */\nexport type ApplicationRollout = {\n\tdescription: string;\n\tid: RolloutID;\n\tcreated_at: ISO8601Timestamp;\n\t/**\n\t * Timestamp of the most recent update to status, health, or progress\n\t */\n\tlast_updated_at: ISO8601Timestamp;\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t * - \"durable_objects_auto\": Default when the application is a DO application.\n\t *\n\t */\n\tkind: ApplicationRollout.kind;\n\t/**\n\t * The rollout strategy\n\t */\n\tstrategy: ApplicationRollout.strategy;\n\t/**\n\t * Current application version before the rollout.\n\t */\n\tcurrent_version: number;\n\t/**\n\t * Target application version after the rollout is complete and applied to all current instances.\n\t */\n\ttarget_version: number;\n\tcurrent_configuration: ModifyUserDeploymentConfiguration;\n\ttarget_configuration: ModifyUserDeploymentConfiguration;\n\t/**\n\t * Current status of the rollout.\n\t */\n\tstatus: ApplicationRollout.status;\n\thealth: ApplicationHealth;\n\tsteps: Array<RolloutStep>;\n\tprogress: ApplicationRolloutProgress;\n\t/**\n\t * Timestamp when the rollout started.\n\t */\n\tstarted_at?: string;\n};\n\nexport namespace ApplicationRollout {\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t * - \"durable_objects_auto\": Default when the application is a DO application.\n\t *\n\t */\n\texport enum kind {\n\t\tFULL_AUTO = \"full_auto\",\n\t\tFULL_MANUAL = \"full_manual\",\n\t\tDURABLE_OBJECTS_AUTO = \"durable_objects_auto\",\n\t}\n\n\t/**\n\t * The rollout strategy\n\t */\n\texport enum strategy {\n\t\tROLLING = \"rolling\",\n\t}\n\n\t/**\n\t * Current status of the rollout.\n\t */\n\texport enum status {\n\t\tPENDING = \"pending\",\n\t\tPROGRESSING = \"progressing\",\n\t\tCOMPLETED = \"completed\",\n\t\tREVERTED = \"reverted\",\n\t\tREPLACED = \"replaced\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type BadRequestWithCodeError = {\n\t/**\n\t * If VALIDATE_INPUT, you should see the inputs that were wrong in the details object.\n\t */\n\terror: BadRequestWithCodeError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace BadRequestWithCodeError {\n\t/**\n\t * If VALIDATE_INPUT, you should see the inputs that were wrong in the details object.\n\t */\n\texport enum error {\n\t\tVALIDATE_INPUT = \"VALIDATE_INPUT\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ModifyUserDeploymentConfiguration } from \"./ModifyUserDeploymentConfiguration\";\nimport type { RolloutStepRequest } from \"./RolloutStepRequest\";\n\n/**\n * Request body to create a new rollout for an application.\n */\nexport type CreateApplicationRolloutRequest = {\n\ttarget_configuration: ModifyUserDeploymentConfiguration;\n\t/**\n\t * Strategy used for the rollout. Currently supports only \"rolling\".\n\t */\n\tstrategy: CreateApplicationRolloutRequest.strategy;\n\t/**\n\t * Percentage of rollout to increase in each step when \"steps\" is not specificed. Applicable values are 5, 10, 20, 25, 50, 100.\n\t * These create rollouts with 20, 10, 5, 4, 2, 1 steps respectively.\n\t *\n\t */\n\tstep_percentage?: CreateApplicationRolloutRequest.step_percentage;\n\t/**\n\t * Steps defining the rollout process, when \"step_percentage\" is not defined.\n\t * Only one of \"step_percentage\" or \"steps\" can be defined when creating a rollout.\n\t * \"steps\" allow granular control over each step.\n\t *\n\t */\n\tsteps?: Array<RolloutStepRequest>;\n\t/**\n\t * Description of the rollout process.\n\t */\n\tdescription: string;\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t *\n\t */\n\tkind?: CreateApplicationRolloutRequest.kind;\n};\n\nexport namespace CreateApplicationRolloutRequest {\n\t/**\n\t * Strategy used for the rollout. Currently supports only \"rolling\".\n\t */\n\texport enum strategy {\n\t\tROLLING = \"rolling\",\n\t}\n\n\t/**\n\t * Percentage of rollout to increase in each step when \"steps\" is not specificed. Applicable values are 5, 10, 20, 25, 50, 100.\n\t * These create rollouts with 20, 10, 5, 4, 2, 1 steps respectively.\n\t *\n\t */\n\texport enum step_percentage {\n\t\t\"_5\" = 5,\n\t\t\"_10\" = 10,\n\t\t\"_20\" = 20,\n\t\t\"_25\" = 25,\n\t\t\"_50\" = 50,\n\t\t\"_100\" = 100,\n\t}\n\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t *\n\t */\n\texport enum kind {\n\t\tFULL_AUTO = \"full_auto\",\n\t\tFULL_MANUAL = \"full_manual\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Response when the deployment that is backing the resource is not found.\n *\n */\nexport type DeploymentNotFoundError = {\n\terror: DeploymentNotFoundError.error;\n};\n\nexport namespace DeploymentNotFoundError {\n\texport enum error {\n\t\tDEPLOYMENT_NOT_FOUND = \"DEPLOYMENT_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry already exists\n */\nexport type ImageRegistryAlreadyExistsError = {\n\t/**\n\t * The domain of the registry already exists\n\t */\n\terror: ImageRegistryAlreadyExistsError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace ImageRegistryAlreadyExistsError {\n\t/**\n\t * The domain of the registry already exists\n\t */\n\texport enum error {\n\t\tIMAGE_REGISTRY_ALREADY_EXISTS = \"IMAGE_REGISTRY_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry is configured to be public, so it does not have a public key\n */\nexport type ImageRegistryIsPublic = {\n\terror: ImageRegistryIsPublic.error;\n};\n\nexport namespace ImageRegistryIsPublic {\n\texport enum error {\n\t\tIMAGE_REGISTRY_IS_PUBLIC = \"IMAGE_REGISTRY_IS_PUBLIC\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The registry is not allowed to be added\n */\nexport type ImageRegistryNotAllowedError = {\n\t/**\n\t * The domain of the registry is not allowed to be added\n\t */\n\terror: ImageRegistryNotAllowedError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace ImageRegistryNotAllowedError {\n\t/**\n\t * The domain of the registry is not allowed to be added\n\t */\n\texport enum error {\n\t\tIMAGE_REGISTRY_NOT_ALLOWED = \"IMAGE_REGISTRY_NOT_ALLOWED\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry does not exist\n */\nexport type ImageRegistryNotFoundError = {\n\terror: ImageRegistryNotFoundError.error;\n};\n\nexport namespace ImageRegistryNotFoundError {\n\texport enum error {\n\t\tIMAGE_REGISTRY_NOT_FOUND = \"IMAGE_REGISTRY_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type ImageRegistryProtocolAlreadyExists = {\n\terror: ImageRegistryProtocolAlreadyExists.error;\n};\n\nexport namespace ImageRegistryProtocolAlreadyExists {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTOCOL_ALREADY_EXISTS = \"IMAGE_REGISTRY_PROTOCOL_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Returned when deleting an image registry protocol and it is referenced by a resource.\n */\nexport type ImageRegistryProtocolIsReferencedError = {\n\terror: ImageRegistryProtocolIsReferencedError.error;\n};\n\nexport namespace ImageRegistryProtocolIsReferencedError {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTO_IS_REFERENCED = \"IMAGE_REGISTRY_PROTO_IS_REFERENCED\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry protocol does not exist\n */\nexport type ImageRegistryProtocolNotFound = {\n\terror: ImageRegistryProtocolNotFound.error;\n};\n\nexport namespace ImageRegistryProtocolNotFound {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTOCOL_NOT_FOUND = \"IMAGE_REGISTRY_PROTOCOL_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Configuration for a VM provisioner.\n */\nexport type ProvisionerConfiguration = {\n\t/**\n\t * The provisioner to use.\n\t */\n\ttype: ProvisionerConfiguration.type;\n};\n\nexport namespace ProvisionerConfiguration {\n\t/**\n\t * The provisioner to use.\n\t */\n\texport enum type {\n\t\tNONE = \"none\",\n\t\tCLOUDINIT = \"cloudinit\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ISO8601Timestamp } from \"./ISO8601Timestamp\";\n\n/**\n * Steps within the rollout process.\n */\nexport type RolloutStep = {\n\t/**\n\t * The sequential order of the rollout step, automatically assigned starting from 1, based on the total number of steps in the rollout process.\n\t */\n\tid: number;\n\tstep_size: {\n\t\t/**\n\t\t * Percentage of instances affected in this step. Min 10% and Max 100%.\n\t\t */\n\t\tpercentage: number;\n\t};\n\t/**\n\t * Description of the rollout step.\n\t */\n\tdescription: string;\n\t/**\n\t * Status of the rollout step.\n\t */\n\tstatus: RolloutStep.status;\n\t/**\n\t * Reason why the step has the current status\n\t */\n\treason?: string;\n\tstarted_at?: ISO8601Timestamp;\n\tcompleted_at?: ISO8601Timestamp;\n};\n\nexport namespace RolloutStep {\n\t/**\n\t * Status of the rollout step.\n\t */\n\texport enum status {\n\t\tPENDING = \"pending\",\n\t\tPROGRESSING = \"progressing\",\n\t\tREVERTING = \"reverting\",\n\t\tCOMPLETED = \"completed\",\n\t\tREVERTED = \"reverted\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { GenericErrorDetails } from \"./GenericErrorDetails\";\n\n/**\n * The secret name already exists\n */\nexport type SecretNameAlreadyExists = {\n\t/**\n\t * The secret name already exists in this account\n\t */\n\terror: SecretNameAlreadyExists.error;\n\tdetails?: GenericErrorDetails;\n};\n\nexport namespace SecretNameAlreadyExists {\n\t/**\n\t * The secret name already exists in this account\n\t */\n\texport enum error {\n\t\tSECRET_NAME_ALREADY_EXISTS = \"SECRET_NAME_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The secret name does not exist\n */\nexport type SecretNotFound = {\n\terror: SecretNotFound.error;\n};\n\nexport namespace SecretNotFound {\n\texport enum error {\n\t\tSECRET_NAME_NOT_FOUND = \"SECRET_NAME_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The ssh public key does not exist\n */\nexport type SSHPublicKeyNotFoundError = {\n\terror: SSHPublicKeyNotFoundError.error;\n};\n\nexport namespace SSHPublicKeyNotFoundError {\n\texport enum error {\n\t\tSSH_PUBLIC_KEY_NOT_FOUND = \"SSH_PUBLIC_KEY_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Request body to update a rollout within an application.\n */\nexport type UpdateApplicationRolloutRequest = {\n\t/**\n\t * Action to perform on the rollout.\n\t * - next: The rollout will go forward one step. It will succeed if the current step is finished.\n\t * - previous: The rollout will go back one step.\n\t * - revert: The rollout goes back to the first step in one go.\n\t *\n\t */\n\taction: UpdateApplicationRolloutRequest.action;\n};\n\nexport namespace UpdateApplicationRolloutRequest {\n\t/**\n\t * Action to perform on the rollout.\n\t * - next: The rollout will go forward one step. It will succeed if the current step is finished.\n\t * - previous: The rollout will go back one step.\n\t * - revert: The rollout goes back to the first step in one go.\n\t *\n\t */\n\texport enum action {\n\t\tNEXT = \"next\",\n\t\tPREVIOUS = \"previous\",\n\t\tREVERT = \"revert\",\n\t}\n}\n","/**\n * This is used to provide telemetry with a sanitised error\n * message that could not have any user-identifying information.\n * Set to `true` to duplicate `message`.\n * */\ntype TelemetryMessage = {\n\ttelemetryMessage?: string | true;\n};\n\n/**\n * Base class for errors where the user has done something wrong. These are not\n * reported to Sentry. API errors are intentionally *not* `UserError`s, and are\n * reported to Sentry. This will help us understand which API errors need better\n * messaging.\n */\nexport class UserError extends Error {\n\ttelemetryMessage: string | undefined;\n\tconstructor(\n\t\tmessage?: string | undefined,\n\t\toptions?:\n\t\t\t| ({\n\t\t\t\t\tcause?: unknown;\n\t\t\t } & TelemetryMessage)\n\t\t\t| undefined\n\t) {\n\t\tsuper(message, options);\n\t\t// Restore prototype chain:\n\t\t// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n\t\tObject.setPrototypeOf(this, new.target.prototype);\n\t\tthis.telemetryMessage =\n\t\t\toptions?.telemetryMessage === true ? message : options?.telemetryMessage;\n\t}\n}\n","import { execFileSync, spawn } from \"child_process\";\nimport { randomUUID } from \"crypto\";\nimport { existsSync, statSync } from \"fs\";\nimport path from \"path\";\nimport { UserError } from \"./error\";\nimport { dockerImageInspect } from \"./inspect\";\nimport type { ContainerDevOptions } from \"./types\";\nimport type { StdioOptions } from \"child_process\";\n\n/** helper for simple docker command call that don't require any io handling */\nexport const runDockerCmd = (\n\tdockerPath: string,\n\targs: string[],\n\tstdio?: StdioOptions\n): {\n\tabort: () => void;\n\tready: Promise<{ aborted: boolean }>;\n\t// Note: we make the return type a thenable just for convenience so that callers can directly await it\n\tthen: (resolve: () => void, reject: () => void) => void;\n} => {\n\tlet aborted = false;\n\tlet resolve: (args: { aborted: boolean }) => void;\n\tlet reject: (err: unknown) => void;\n\tconst ready = new Promise<{ aborted: boolean }>((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\tconst child = spawn(dockerPath, args, {\n\t\tstdio: stdio ?? \"inherit\",\n\t\t// We need to set detached to true so that the child process\n\t\t// will control all of its child processed and we can kill\n\t\t// all of them in case we need to abort the build process\n\t\tdetached: true,\n\t});\n\tlet errorHandled = false;\n\n\tchild.on(\"close\", (code) => {\n\t\tif (code === 0 || aborted) {\n\t\t\tresolve({ aborted });\n\t\t} else if (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(new UserError(`Docker command exited with code: ${code}`));\n\t\t}\n\t});\n\tchild.on(\"error\", (err) => {\n\t\tif (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(new UserError(`Docker command failed: ${err.message}`));\n\t\t}\n\t});\n\treturn {\n\t\tabort: () => {\n\t\t\taborted = true;\n\t\t\tchild.unref();\n\t\t\tif (child.pid !== undefined) {\n\t\t\t\t// kill run on the negative PID kills the whole group controlled by the child process\n\t\t\t\tprocess.kill(-child.pid);\n\t\t\t}\n\t\t},\n\t\tready,\n\t\tthen: async (onResolve, onReject) => ready.then(onResolve).catch(onReject),\n\t};\n};\n\nexport const runDockerCmdWithOutput = (dockerPath: string, args: string[]) => {\n\ttry {\n\t\tconst stdout = execFileSync(dockerPath, args, { encoding: \"utf8\" });\n\t\treturn stdout.trim();\n\t} catch (error) {\n\t\tthrow new UserError(\n\t\t\t`Failed running docker command: ${(error as Error).message}. Command: ${dockerPath} ${args.join(\" \")}`\n\t\t);\n\t}\n};\n\n/** Checks whether docker is running on the system */\nexport const isDockerRunning = async (dockerPath: string) => {\n\ttry {\n\t\tawait runDockerCmd(dockerPath, [\"info\"], [\"inherit\", \"pipe\", \"pipe\"]);\n\t} catch {\n\t\t// We assume this command is unlikely to fail for reasons other than the Docker daemon not running, or the Docker CLI not being installed or in the PATH.\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/** throws when docker is not installed */\nexport const verifyDockerInstalled = async (\n\tdockerPath: string,\n\tisDev = true\n) => {\n\tconst dockerIsRunning = await isDockerRunning(dockerPath);\n\tif (!dockerIsRunning) {\n\t\tthrow new UserError(\n\t\t\t`The Docker CLI could not be launched. Please ensure that the Docker CLI is installed and the daemon is running.\\n` +\n\t\t\t\t`Other container tooling that is compatible with the Docker CLI and engine may work, but is not yet guaranteed to do so. You can specify an executable with the environment variable WRANGLER_DOCKER_BIN and a socket with DOCKER_HOST.` +\n\t\t\t\t`${isDev ? \"\\nTo suppress this error if you do not intend on triggering any container instances, set dev.enable_containers to false in your Wrangler config or passing in --enable-containers=false.\" : \"\"}`\n\t\t);\n\t}\n};\n\nexport function isDir(inputPath: string) {\n\tconst stats = statSync(inputPath);\n\treturn stats.isDirectory();\n}\n\n/** returns true if it is a dockerfile, false if it is a registry link, throws if neither */\nexport const isDockerfile = (\n\timage: string,\n\tconfigPath: string | undefined\n): boolean => {\n\tconst baseDir = configPath ? path.dirname(configPath) : process.cwd();\n\tconst maybeDockerfile = path.resolve(baseDir, image);\n\tif (existsSync(maybeDockerfile)) {\n\t\tif (isDir(maybeDockerfile)) {\n\t\t\tthrow new UserError(\n\t\t\t\t`${image} is a directory, you should specify a path to the Dockerfile`\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst errorPrefix = `The image \"${image}\" does not appear to be a valid path to a Dockerfile, or a valid image registry path:\\n`;\n\t// not found, not a dockerfile, let's try parsing the image ref as an URL?\n\ttry {\n\t\tnew URL(`https://${image}`);\n\t} catch (e) {\n\t\tif (e instanceof Error) {\n\t\t\tthrow new UserError(errorPrefix + e.message);\n\t\t}\n\t\tthrow e;\n\t}\n\tconst imageParts = image.split(\"/\");\n\n\tif (!imageParts[imageParts.length - 1]?.includes(\":\")) {\n\t\tthrow new UserError(\n\t\t\terrorPrefix +\n\t\t\t\t`If this is an image registry path, it needs to include at least a tag ':' (e.g: docker.io/httpd:1)`\n\t\t);\n\t}\n\n\t// validate URL\n\tif (image.includes(\"://\")) {\n\t\tthrow new UserError(\n\t\t\terrorPrefix +\n\t\t\t\t`Image reference should not include the protocol part (e.g: docker.io/httpd:1, not https://docker.io/httpd:1)`\n\t\t);\n\t}\n\treturn false;\n};\n\n/**\n * Kills and removes any containers which come from the given image tag\n */\nexport const cleanupContainers = (\n\tdockerPath: string,\n\timageTags: Set<string>\n) => {\n\ttry {\n\t\t// Find all containers (stopped and running) for each built image\n\t\tconst containerIds = getContainerIdsByImageTags(dockerPath, imageTags);\n\n\t\tif (containerIds.length === 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Workerd should have stopped all containers, but clean up any in case. Sends a sigkill.\n\t\trunDockerCmdWithOutput(dockerPath, [\"rm\", \"--force\", ...containerIds]);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/**\n * See https://docs.docker.com/reference/cli/docker/container/ls/#ancestor\n *\n * @param dockerPath The path to the Docker executable\n * @param imageTags A set of ancestor image tags\n * @returns The ids of all containers that share the given image tags as ancestors.\n */\nexport function getContainerIdsByImageTags(\n\tdockerPath: string,\n\timageTags: Set<string>\n): string[] {\n\tconst ids = new Set<string>();\n\n\tfor (const imageTag of imageTags) {\n\t\tconst containerIdsFromImage = getContainerIdsFromImage(\n\t\t\tdockerPath,\n\t\t\timageTag\n\t\t);\n\t\tcontainerIdsFromImage.forEach((id) => ids.add(id));\n\t}\n\n\treturn Array.from(ids);\n}\n\nexport const getContainerIdsFromImage = (\n\tdockerPath: string,\n\tancestorImage: string\n) => {\n\tconst output = runDockerCmdWithOutput(dockerPath, [\n\t\t\"ps\",\n\t\t\"-a\",\n\t\t\"--filter\",\n\t\t`ancestor=${ancestorImage}`,\n\t\t\"--format\",\n\t\t\"{{.ID}}\",\n\t]);\n\treturn output.split(\"\\n\").filter((line) => line.trim());\n};\n\n/**\n * While all ports are exposed in prod, a limitation of local dev with docker is that\n * users will have to manually expose ports in their Dockerfile.\n * We want to fail early and clearly if a user tries to develop with a container\n * that has no ports exposed and is definitely not accessible.\n *\n * (A user could still use `getTCPPort()` on a port that is not exposed, but we leave that error for runtime.)\n */\nexport async function checkExposedPorts(\n\tdockerPath: string,\n\toptions: ContainerDevOptions\n) {\n\tconst output = await dockerImageInspect(dockerPath, {\n\t\timageTag: options.image_tag,\n\t\tformatString: \"{{ len .Config.ExposedPorts }}\",\n\t});\n\tif (output === \"0\") {\n\t\tthrow new UserError(\n\t\t\t`The container \"${options.class_name}\" does not expose any ports. In your Dockerfile, please expose any ports you intend to connect to.\\n` +\n\t\t\t\t\"For additional information please see: https://developers.cloudflare.com/containers/local-dev/#exposing-ports.\\n\"\n\t\t);\n\t}\n}\n\n/**\n * Generates a random container build id\n */\nexport function generateContainerBuildId() {\n\treturn randomUUID().slice(0, 8);\n}\n\n/**\n * Output of docker context ls --format json\n */\ntype DockerContext = {\n\tCurrent: boolean;\n\tDescription: string;\n\tDockerEndpoint: string;\n\tError: string;\n\tName: string;\n};\n\n/**\n * Run `docker context ls` to get the socket from the currently active Docker context\n * @returns The socket path or null if we are not able to determine it\n */\nexport function getDockerSocketFromContext(dockerPath: string): string | null {\n\ttry {\n\t\tconst output = runDockerCmdWithOutput(dockerPath, [\n\t\t\t\"context\",\n\t\t\t\"ls\",\n\t\t\t\"--format\",\n\t\t\t\"json\",\n\t\t]);\n\n\t\t// Parse each line as a separate JSON object\n\t\tconst lines = output.trim().split(\"\\n\");\n\t\tconst contexts: DockerContext[] = lines.map((line) => JSON.parse(line));\n\n\t\t// Find the current context\n\t\tconst currentContext = contexts.find((context) => context.Current === true);\n\n\t\tif (currentContext && currentContext.DockerEndpoint) {\n\t\t\treturn currentContext.DockerEndpoint;\n\t\t}\n\t} catch {\n\t\t// Fall back to null if docker context inspection fails so that we can use platform defaults\n\t}\n\treturn null;\n}\n/**\n * Resolve Docker host as follows:\n * 1. Check WRANGLER_DOCKER_HOST environment variable\n * 2. Check DOCKER_HOST environment variable\n * 3. Try to get socket from active Docker context\n * 4. Fall back to platform-specific defaults\n */\nexport function resolveDockerHost(dockerPath: string): string {\n\tif (process.env.WRANGLER_DOCKER_HOST) {\n\t\treturn process.env.WRANGLER_DOCKER_HOST;\n\t}\n\n\tif (process.env.DOCKER_HOST) {\n\t\treturn process.env.DOCKER_HOST;\n\t}\n\n\t// 3. Try to get socket from by running `docker context ls`\n\n\tconst contextSocket = getDockerSocketFromContext(dockerPath);\n\tif (contextSocket) {\n\t\treturn contextSocket;\n\t}\n\n\t// 4. Fall back to platform-specific defaults\n\t// (note windows doesn't work yet due to a runtime limitation)\n\treturn process.platform === \"win32\"\n\t\t? \"//./pipe/docker_engine\"\n\t\t: \"unix:///var/run/docker.sock\";\n}\n\n/**\n *\n * Get docker host from environment variables or platform defaults.\n * Does not use the docker context ls command, so we\n */\nexport const getDockerHostFromEnv = (): string => {\n\tconst fromEnv = process.env.WRANGLER_DOCKER_HOST ?? process.env.DOCKER_HOST;\n\n\treturn fromEnv ?? process.platform === \"win32\"\n\t\t? \"//./pipe/docker_engine\"\n\t\t: \"unix:///var/run/docker.sock\";\n};\n\n/**\n * Get all repository tags for a given image\n */\nexport async function getImageRepoTags(\n\tdockerPath: string,\n\timageTag: string\n): Promise<string[]> {\n\ttry {\n\t\tconst output = await dockerImageInspect(dockerPath, {\n\t\t\timageTag,\n\t\t\tformatString: \"{{ range .RepoTags }}{{ . }}\\n{{ end }}\",\n\t\t});\n\t\treturn output.split(\"\\n\").filter((tag) => tag.trim() !== \"\");\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n/**\n * Checks if the given image has any duplicate tags from previous dev sessions,\n * and remove them if so.\n */\nexport async function cleanupDuplicateImageTags(\n\tdockerPath: string,\n\timageTag: string\n): Promise<void> {\n\ttry {\n\t\tconst repoTags = await getImageRepoTags(dockerPath, imageTag);\n\t\t// Remove all cloudflare-dev tags from previous sessions except the current one\n\t\tconst tagsToRemove = repoTags.filter(\n\t\t\t(tag) => tag !== imageTag && tag.startsWith(\"cloudflare-dev\")\n\t\t);\n\t\tif (tagsToRemove.length > 0) {\n\t\t\trunDockerCmdWithOutput(dockerPath, [\"rmi\", ...tagsToRemove]);\n\t\t}\n\t} catch {}\n}\n","export const MAX_WORKFLOW_NAME_LENGTH = 64;\n\nexport const MAX_WORKFLOW_INSTANCE_ID_LENGTH = 100;\n\nexport const MAX_STEP_NAME_LENGTH = 256;\n\nexport const ALLOWED_STRING_ID_PATTERN = \"^[a-zA-Z0-9_][a-zA-Z0-9-_]*$\";\nconst ALLOWED_WORKFLOW_INSTANCE_ID_REGEX = new RegExp(\n\tALLOWED_STRING_ID_PATTERN\n);\nconst ALLOWED_WORKFLOW_NAME_REGEX = ALLOWED_WORKFLOW_INSTANCE_ID_REGEX;\n\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHAR_REGEX = new RegExp(\"[\\x00-\\x1F]\");\n\nexport function isValidWorkflowName(name: string): boolean {\n\tif (typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tif (name.length > MAX_WORKFLOW_NAME_LENGTH) {\n\t\treturn false;\n\t}\n\n\treturn ALLOWED_WORKFLOW_NAME_REGEX.test(name);\n}\n\nexport function isValidWorkflowInstanceId(id: string): boolean {\n\tif (typeof id !== \"string\") {\n\t\treturn false;\n\t}\n\n\tif (id.length > MAX_WORKFLOW_INSTANCE_ID_LENGTH) {\n\t\treturn false;\n\t}\n\n\treturn ALLOWED_WORKFLOW_INSTANCE_ID_REGEX.test(id);\n}\n\nexport function isValidStepName(name: string): boolean {\n\tif (name.length > MAX_STEP_NAME_LENGTH) {\n\t\treturn false;\n\t}\n\n\treturn !CONTROL_CHAR_REGEX.test(name);\n}\n","/**\n * Diagnostic errors and warnings.\n *\n * The structure is a tree, where each node can contain zero or more errors, warnings and child diagnostics objects.\n * You can check whether the overall tree has errors or warnings, and you can render a string representation of the errors or warnings.\n */\nexport class Diagnostics {\n\terrors: string[] = [];\n\twarnings: string[] = [];\n\tchildren: Diagnostics[] = [];\n\n\t/**\n\t * Create a new Diagnostics object.\n\t * @param description A general description of this collection of messages.\n\t */\n\tconstructor(public description: string) {}\n\n\t/**\n\t * Merge the given `diagnostics` into this as a child.\n\t */\n\taddChild(diagnostics: Diagnostics): void {\n\t\tif (diagnostics.hasErrors() || diagnostics.hasWarnings()) {\n\t\t\tthis.children.push(diagnostics);\n\t\t}\n\t}\n\n\t/** Does this or any of its children have errors. */\n\thasErrors(): boolean {\n\t\tif (this.errors.length > 0) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn this.children.some((child) => child.hasErrors());\n\t\t}\n\t}\n\n\t/** Render the errors of this and all its children. */\n\trenderErrors(): string {\n\t\treturn this.render(\"errors\");\n\t}\n\n\t/** Does this or any of its children have warnings. */\n\thasWarnings(): boolean {\n\t\tif (this.warnings.length > 0) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn this.children.some((child) => child.hasWarnings());\n\t\t}\n\t}\n\n\t/** Render the warnings of this and all its children. */\n\trenderWarnings(): string {\n\t\treturn this.render(\"warnings\");\n\t}\n\n\tprivate render(field: \"errors\" | \"warnings\"): string {\n\t\tconst hasMethod = field === \"errors\" ? \"hasErrors\" : \"hasWarnings\";\n\t\treturn indentText(\n\t\t\t`${this.description}\\n` +\n\t\t\t\t// Output all the fields (errors or warnings) at this level\n\t\t\t\tthis[field].map((message) => `- ${indentText(message)}`).join(\"\\n\") +\n\t\t\t\t// Output all the child diagnostics at the next level\n\t\t\t\tthis.children\n\t\t\t\t\t.map((child) =>\n\t\t\t\t\t\tchild[hasMethod]() ? \"\\n- \" + child.render(field) : \"\"\n\t\t\t\t\t)\n\t\t\t\t\t.filter((output) => output !== \"\")\n\t\t\t\t\t.join(\"\\n\")\n\t\t);\n\t}\n}\n\n/** Indent all the but the first line by two spaces. */\nfunction indentText(str: string): string {\n\treturn str\n\t\t.split(\"\\n\")\n\t\t.map((line, index) =>\n\t\t\t(index === 0 ? line : ` ${line}`).replace(/^\\s*$/, \"\")\n\t\t)\n\t\t.join(\"\\n\");\n}\n","import type { RawConfig } from \"./config\";\nimport type { Diagnostics } from \"./diagnostics\";\nimport type { Environment, RawEnvironment } from \"./environment\";\n\n/**\n * Mark a field as deprecated.\n *\n * This function will add a diagnostics warning if the deprecated field is found in the `rawEnv` (or an error if it's also a breaking deprecation)\n * The `fieldPath` is a dot separated property path, e.g. `\"build.upload.format\"`.\n */\nexport function deprecated<T extends object>(\n\tdiagnostics: Diagnostics,\n\tconfig: T,\n\tfieldPath: DeepKeyOf<T>,\n\tmessage: string,\n\tremove: boolean,\n\ttitle = \"Deprecation\",\n\ttype: \"warning\" | \"error\" = \"warning\"\n): void {\n\tconst BOLD = \"\\x1b[1m\";\n\tconst NORMAL = \"\\x1b[0m\";\n\tconst diagnosticMessage = `${BOLD}${title}${NORMAL}: \"${fieldPath}\":\\n${message}`;\n\tconst result = unwindPropertyPath(config, fieldPath);\n\tif (result !== undefined && result.field in result.container) {\n\t\tdiagnostics[`${type}s`].push(diagnosticMessage);\n\t\tif (remove) {\n\t\t\tdelete (result.container as Record<string, unknown>)[result.field];\n\t\t}\n\t}\n}\n\n/**\n * Mark a field as experimental.\n *\n * This function will add a diagnostics warning if the experimental field is found in the `rawEnv`.\n * The `fieldPath` is a dot separated property path, e.g. `\"build.upload.format\"`.\n */\nexport function experimental<T extends object>(\n\tdiagnostics: Diagnostics,\n\tconfig: T,\n\tfieldPath: DeepKeyOf<T>\n): void {\n\tconst result = unwindPropertyPath(config, fieldPath);\n\tif (\n\t\tresult !== undefined &&\n\t\tresult.field in result.container &&\n\t\t!(\"WRANGLER_DISABLE_EXPERIMENTAL_WARNING\" in process.env)\n\t) {\n\t\tdiagnostics.warnings.push(\n\t\t\t`\"${fieldPath}\" fields are experimental and may change or break at any time.`\n\t\t);\n\t}\n}\n\n/**\n * Get an inheritable environment field, after computing and validating its value.\n *\n * If the field is not defined in the given environment, then fallback to the value from the top-level config,\n * and then the `defaultValue`.\n */\nexport function inheritable<K extends keyof Environment>(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment,\n\tfield: K,\n\tvalidate: ValidatorFn,\n\tdefaultValue: Environment[K],\n\ttransformFn: TransformFn<Environment[K]> = (v) => v\n): Environment[K] {\n\tvalidate(diagnostics, field, rawEnv[field], topLevelEnv);\n\treturn (\n\t\t// `rawEnv === topLevelEnv` is a special case where the user has provided an environment name\n\t\t// but that named environment is not actually defined in the configuration.\n\t\t// In that case we have reused the topLevelEnv as the rawEnv,\n\t\t// and so we need to process the `transformFn()` anyway rather than just using the field in the `rawEnv`.\n\t\t(rawEnv !== topLevelEnv ? (rawEnv[field] as Environment[K]) : undefined) ??\n\t\ttransformFn(topLevelEnv?.[field]) ??\n\t\tdefaultValue\n\t);\n}\n\n/**\n * Get an inheritable environment field, but only if we are in legacy environments\n */\nexport function inheritableInWranglerEnvironments<K extends keyof Environment>(\n\tdiagnostics: Diagnostics,\n\tuseServiceEnvironments: boolean | undefined,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment,\n\tfield: K,\n\tvalidate: ValidatorFn,\n\ttransformFn: TransformFn<Environment[K]> = (v) => v,\n\tdefaultValue: Environment[K]\n): Environment[K] {\n\tconst usingServiceEnvironments =\n\t\tuseServiceEnvironments && topLevelEnv !== undefined;\n\treturn usingServiceEnvironments\n\t\t? notAllowedInNamedServiceEnvironment(\n\t\t\t\tdiagnostics,\n\t\t\t\ttopLevelEnv,\n\t\t\t\trawEnv,\n\t\t\t\tfield\n\t\t\t)\n\t\t: inheritable(\n\t\t\t\tdiagnostics,\n\t\t\t\ttopLevelEnv,\n\t\t\t\trawEnv,\n\t\t\t\tfield,\n\t\t\t\tvalidate,\n\t\t\t\tdefaultValue,\n\t\t\t\ttransformFn\n\t\t\t);\n}\n\n/**\n * Type of function that is used to transform an inheritable environment field.\n */\ntype TransformFn<T> = (fieldValue: T | undefined) => T | undefined;\n\n/**\n * Transform an environment field by appending current environment name to it.\n */\nexport const appendEnvName =\n\t(envName: string): TransformFn<string | undefined> =>\n\t(fieldValue) =>\n\t\tfieldValue ? `${fieldValue}-${envName}` : undefined;\n\n/**\n * Log an error if this named environment is trying to override the value in the top-level\n * environment, which is not allow for this field.\n */\nfunction notAllowedInNamedServiceEnvironment<K extends keyof Environment>(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment,\n\trawEnv: RawEnvironment,\n\tfield: K\n): Environment[K] {\n\tif (field in rawEnv) {\n\t\tdiagnostics.errors.push(\n\t\t\t`The \"${field}\" field is not allowed in named service environments.\\n` +\n\t\t\t\t`Please remove the field from this environment.`\n\t\t);\n\t}\n\treturn topLevelEnv[field];\n}\n\n/**\n * Get a not inheritable environment field, after computing and validating its value.\n *\n * If the field is not defined in the given environment but it is defined in the top-level config,\n * then log a warning and return the `defaultValue`.\n */\nexport function notInheritable<K extends keyof Environment>(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawConfig: RawConfig | undefined,\n\trawEnv: RawEnvironment,\n\tenvName: string,\n\tfield: K,\n\tvalidate: ValidatorFn,\n\tdefaultValue: Environment[K]\n): Environment[K] {\n\tif (rawEnv[field] !== undefined) {\n\t\tvalidate(diagnostics, field, rawEnv[field], topLevelEnv);\n\t} else {\n\t\tif (rawConfig?.[field] !== undefined) {\n\t\t\tdiagnostics.warnings.push(\n\t\t\t\t`\"${field}\" exists at the top level, but not on \"env.${envName}\".\\n` +\n\t\t\t\t\t`This is not what you probably want, since \"${field}\" is not inherited by environments.\\n` +\n\t\t\t\t\t`Please add \"${field}\" to \"env.${envName}\".`\n\t\t\t);\n\t\t}\n\t}\n\treturn (rawEnv[field] as Environment[K]) ?? defaultValue;\n}\n\n// Idea taken from https://stackoverflow.com/a/66661477\ntype DeepKeyOf<T> = (\n\tT extends object\n\t\t? {\n\t\t\t\t[K in Exclude<keyof T, symbol>]: `${K}${DotPrefix<DeepKeyOf<T[K]>>}`;\n\t\t\t}[Exclude<keyof T, symbol>]\n\t\t: \"\"\n) extends infer D\n\t? Extract<D, string>\n\t: never;\n\ntype DotPrefix<T extends string> = T extends \"\" ? \"\" : `.${T}`;\n\n/**\n * Return a container object and field name for the last property in a given property path.\n *\n * For example, given a path of `\"build.upload.format\"`) and a starting `root` object\n * this will return:\n *\n * ```\n * { container: root.build.upload, field: \"format\" }\n * ```\n */\nfunction unwindPropertyPath<T extends object>(\n\troot: T,\n\tpath: DeepKeyOf<T>\n): { container: object; field: string } | undefined {\n\tlet container: object = root;\n\tconst parts = (path as string).split(\".\");\n\tfor (let i = 0; i < parts.length - 1; i++) {\n\t\tif (!hasProperty(container, parts[i])) {\n\t\t\treturn;\n\t\t}\n\t\tcontainer = container[parts[i]];\n\t}\n\treturn { container, field: parts[parts.length - 1] };\n}\n\n/**\n * The type of a function that can be used to validate a configuration field.\n */\nexport type ValidatorFn = (\n\tdiagnostics: Diagnostics,\n\tfield: string,\n\tvalue: unknown,\n\ttopLevelEnv: Environment | undefined\n) => boolean;\n\n/**\n * Validate that the field is a string.\n */\nexport const isString: ValidatorFn = (diagnostics, field, value) => {\n\tif (value !== undefined && typeof value !== \"string\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be of type string but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/**\n * Validate that the `name` field is compliant with EWC constraints.\n */\nexport const isValidName: ValidatorFn = (diagnostics, field, value) => {\n\tif (\n\t\t(typeof value === \"string\" && /^$|^[a-z0-9_][a-z0-9-_]*$/.test(value)) ||\n\t\tvalue === undefined\n\t) {\n\t\treturn true;\n\t} else {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be of type string, alphanumeric and lowercase with dashes only but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n};\n\n/**\n * Validate that the field is a valid ISO-8601 date time string\n * see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format\n * or https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date-time-string-format\n */\nexport const isValidDateTimeStringFormat = (\n\tdiagnostics: Diagnostics,\n\tfield: string,\n\tvalue: string\n): boolean => {\n\tlet isValid = true;\n\n\t// en/em dashes are not valid characters in the JS date time string format.\n\t// While they would be caught by the `isNaN(data.getTime())` check below,\n\t// we want to single these use cases out, and throw a more specific error\n\tif (\n\t\tvalue.includes(\"–\") || // en-dash\n\t\tvalue.includes(\"—\") // em-dash\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" field should use ISO-8601 accepted hyphens (-) rather than en-dashes (–) or em-dashes (—).`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\t// en/em dashes were already handled above. Let's replace them with hyphens,\n\t// which is a valid date time string format character, and evaluate the\n\t// resulting date time string further. This ensures we validate for hyphens\n\t// only once!\n\tconst data = new Date(value.replaceAll(/–|—/g, \"-\"));\n\n\tif (isNaN(data.getTime())) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" field should be a valid ISO-8601 date (YYYY-MM-DD), but got ${JSON.stringify(value)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\treturn isValid;\n};\n\n/**\n * Validate that the field is an array of strings.\n */\nexport const isStringArray: ValidatorFn = (diagnostics, field, value) => {\n\tif (\n\t\tvalue !== undefined &&\n\t\t(!Array.isArray(value) || value.some((item) => typeof item !== \"string\"))\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be of type string array but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/**\n * Validate that the field is an object containing the given properties.\n */\nexport const isObjectWith =\n\t(...properties: string[]): ValidatorFn =>\n\t(diagnostics, field, value) => {\n\t\tif (\n\t\t\tvalue !== undefined &&\n\t\t\t(typeof value !== \"object\" ||\n\t\t\t\tvalue === null ||\n\t\t\t\t!properties.every((prop) => prop in value))\n\t\t) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`Expected \"${field}\" to be of type object, containing only properties ${properties}, but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t\t// it's an object with the field as desired,\n\t\t// but let's also check for unexpected fields\n\t\tif (value !== undefined) {\n\t\t\tconst restFields = Object.keys(value).filter(\n\t\t\t\t(key) => !properties.includes(key)\n\t\t\t);\n\t\t\tvalidateAdditionalProperties(diagnostics, field, restFields, []);\n\t\t}\n\n\t\treturn true;\n\t};\n\n/**\n * Validate that the field value is one of the given choices.\n */\nexport const isOneOf =\n\t(...choices: unknown[]): ValidatorFn =>\n\t(diagnostics, field, value) => {\n\t\tif (value !== undefined && !choices.some((choice) => value === choice)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`Expected \"${field}\" field to be one of ${JSON.stringify(\n\t\t\t\t\tchoices\n\t\t\t\t)} but got ${JSON.stringify(value)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n/**\n * Aggregate multiple validator functions\n */\nexport const all = (...validations: ValidatorFn[]): ValidatorFn => {\n\treturn (diagnostics, field, value, config) => {\n\t\tlet passedValidations = true;\n\n\t\tfor (const validate of validations) {\n\t\t\tif (!validate(diagnostics, field, value, config)) {\n\t\t\t\tpassedValidations = false;\n\t\t\t}\n\t\t}\n\n\t\treturn passedValidations;\n\t};\n};\n\n/**\n * Check that the field is mutually exclusive with a list of other fields.\n *\n * @param container the container of the fields to check against.\n * @param fields the names of the fields to check against.\n */\nexport const isMutuallyExclusiveWith = <T extends RawEnvironment | RawConfig>(\n\tcontainer: T,\n\t...fields: (keyof T)[]\n): ValidatorFn => {\n\treturn (diagnostics, field, value) => {\n\t\tif (value === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\tfor (const exclusiveWith of fields) {\n\t\t\tif (container[exclusiveWith] !== undefined) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Expected exactly one of the following fields ${JSON.stringify([\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\t...fields,\n\t\t\t\t\t])}.`\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n};\n\n/**\n * Validate that the field is a boolean.\n */\nexport const isBoolean: ValidatorFn = (diagnostics, field, value) => {\n\tif (value !== undefined && typeof value !== \"boolean\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be of type boolean but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/**\n * Validate that the required field exists and has the expected type.\n */\nexport const validateRequiredProperty = (\n\tdiagnostics: Diagnostics,\n\tcontainer: string,\n\tkey: string,\n\tvalue: unknown,\n\ttype: TypeofType,\n\tchoices?: unknown[]\n): boolean => {\n\tif (container) {\n\t\tcontainer += \".\";\n\t}\n\tif (value === undefined) {\n\t\tdiagnostics.errors.push(`\"${container}${key}\" is a required field.`);\n\t\treturn false;\n\t} else if (typeof value !== type) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${container}${key}\" to be of type ${type} but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t} else if (choices) {\n\t\tif (\n\t\t\t!isOneOf(...choices)(diagnostics, `${container}${key}`, value, undefined)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\n/**\n * Validate that at least one of the properties in the list is required.\n */\nexport const validateAtLeastOnePropertyRequired = (\n\tdiagnostics: Diagnostics,\n\tcontainer: string,\n\tproperties: {\n\t\tkey: string;\n\t\tvalue: unknown;\n\t\ttype: TypeofType;\n\t}[]\n): boolean => {\n\tconst containerPath = container ? `${container}.` : \"\";\n\n\tif (properties.every((property) => property.value === undefined)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`${properties.map(({ key }) => `\"${containerPath}${key}\"`).join(\" or \")} is required.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tconst errors = [];\n\tfor (const prop of properties) {\n\t\tif (typeof prop.value === prop.type) {\n\t\t\treturn true;\n\t\t}\n\t\terrors.push(\n\t\t\t`Expected \"${containerPath}${prop.key}\" to be of type ${prop.type} but got ${JSON.stringify(\n\t\t\t\tprop.value\n\t\t\t)}.`\n\t\t);\n\t}\n\n\tdiagnostics.errors.push(...errors);\n\treturn false;\n};\n\n/**\n * Validate that, if the optional field exists, then it has the expected type.\n */\nexport const validateOptionalProperty = (\n\tdiagnostics: Diagnostics,\n\tcontainer: string,\n\tkey: string,\n\tvalue: unknown,\n\ttype: TypeofType,\n\tchoices?: unknown[]\n): boolean => {\n\tif (value !== undefined) {\n\t\treturn validateRequiredProperty(\n\t\t\tdiagnostics,\n\t\t\tcontainer,\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype,\n\t\t\tchoices\n\t\t);\n\t}\n\treturn true;\n};\n\n/**\n * Validate that the field is an array of elements of the given type.\n */\nexport const validateTypedArray = (\n\tdiagnostics: Diagnostics,\n\tcontainer: string,\n\tvalue: unknown,\n\ttype: TypeofType\n): boolean => {\n\tlet isValid = true;\n\tif (!Array.isArray(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${container}\" to be an array of ${type}s but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\tisValid = false;\n\t} else {\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tisValid =\n\t\t\t\tvalidateRequiredProperty(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tcontainer,\n\t\t\t\t\t`[${i}]`,\n\t\t\t\t\tvalue[i],\n\t\t\t\t\ttype\n\t\t\t\t) && isValid;\n\t\t}\n\t}\n\treturn isValid;\n};\n\n/**\n * Validate that, if the optional field exists, it is an array of elements of the given type.\n */\nexport const validateOptionalTypedArray = (\n\tdiagnostics: Diagnostics,\n\tcontainer: string,\n\tvalue: unknown,\n\ttype: TypeofType\n) => {\n\tif (value !== undefined) {\n\t\treturn validateTypedArray(diagnostics, container, value, type);\n\t}\n\treturn true;\n};\n\n/**\n * Test to see if `obj` has the required property `prop` of type `type`.\n */\nexport const isRequiredProperty = <T extends object>(\n\tobj: object,\n\tprop: keyof T,\n\ttype: TypeofType,\n\tchoices?: unknown[]\n): obj is T =>\n\thasProperty<T>(obj, prop) &&\n\ttypeof obj[prop] === type &&\n\t(choices === undefined || choices.includes(obj[prop]));\n\n/**\n * Test to see if `obj` has the optional property `prop` of type `type`.\n */\nexport const isOptionalProperty = <T extends object>(\n\tobj: object,\n\tprop: keyof T,\n\ttype: TypeofType\n): obj is T => !hasProperty<T>(obj, prop) || typeof obj[prop] === type;\n\n/**\n * Test to see if `obj` has the property `prop`.\n */\nexport const hasProperty = <T extends object>(\n\tobj: object,\n\tproperty: keyof T\n): obj is T => property in obj;\n\n/**\n * Add warning messages about any properties in the given field that are not expected to be there.\n */\nexport const validateAdditionalProperties = (\n\tdiagnostics: Diagnostics,\n\tfieldPath: string,\n\trestProps: Iterable<string>,\n\tknownProps: Iterable<string>\n): boolean => {\n\tconst restPropSet = new Set(restProps);\n\tfor (const knownProp of knownProps) {\n\t\trestPropSet.delete(knownProp);\n\t}\n\tif (restPropSet.size > 0) {\n\t\tconst fields = Array.from(restPropSet.keys()).map((field) => `\"${field}\"`);\n\t\tdiagnostics.warnings.push(\n\t\t\t`Unexpected fields found in ${fieldPath} field: ${fields}`\n\t\t);\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/**\n * Get the names of the bindings collection in `value`.\n *\n * Will return an empty array if it doesn't understand the value\n * passed in, so another form of validation should be\n * performed externally.\n */\nexport const getBindingNames = (value: unknown): string[] => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn [];\n\t}\n\tif (isBindingList(value)) {\n\t\treturn value.bindings.map(({ name }) => name);\n\t} else if (isNamespaceList(value)) {\n\t\treturn value.map(({ binding }) => binding);\n\t} else if (isRecord(value)) {\n\t\t// browser and AI bindings are single values with a similar shape\n\t\t// { binding = \"name\" }\n\t\tif (value[\"binding\"] !== undefined) {\n\t\t\treturn [value[\"binding\"] as string];\n\t\t}\n\t\treturn Object.keys(value).filter((k) => value[k] !== undefined);\n\t} else {\n\t\treturn [];\n\t}\n};\n\nconst isBindingList = (\n\tvalue: unknown\n): value is {\n\tbindings: {\n\t\tname: string;\n\t}[];\n} =>\n\tisRecord(value) &&\n\t\"bindings\" in value &&\n\tArray.isArray(value.bindings) &&\n\tvalue.bindings.every(\n\t\t(binding) =>\n\t\t\tisRecord(binding) && \"name\" in binding && typeof binding.name === \"string\"\n\t);\n\nconst isNamespaceList = (value: unknown): value is { binding: string }[] =>\n\tArray.isArray(value) &&\n\tvalue.every(\n\t\t(entry) =>\n\t\t\tisRecord(entry) && \"binding\" in entry && typeof entry.binding === \"string\"\n\t);\n\nconst isRecord = (\n\tvalue: unknown\n): value is Record<string | number | symbol, unknown> =>\n\ttypeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/**\n * Ensure that all bindings in an array have unique `name` properties.\n */\nexport const validateUniqueNameProperty: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (Array.isArray(value)) {\n\t\tconst nameCount = new Map<string, number>();\n\n\t\tObject.entries(value).forEach(([_, entry]) => {\n\t\t\tnameCount.set(entry.name, (nameCount.get(entry.name) ?? 0) + 1);\n\t\t});\n\n\t\tconst duplicates = Array.from(nameCount.entries())\n\t\t\t.filter(([_, count]) => count > 1)\n\t\t\t.map(([name]) => name);\n\n\t\tif (duplicates.length > 0) {\n\t\t\tconst list = duplicates.join('\", \"');\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" bindings must have unique \"name\" values; duplicate(s) found: \"${list}\"`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\n/**\n * JavaScript `typeof` operator return values.\n */\nexport type TypeofType =\n\t| \"string\"\n\t| \"number\"\n\t| \"bigint\"\n\t| \"boolean\"\n\t| \"symbol\"\n\t| \"undefined\"\n\t| \"object\"\n\t| \"function\";\n","import assert from \"node:assert\";\nimport path from \"node:path\";\nimport { isDockerfile } from \"@cloudflare/containers-shared\";\nimport { isValidWorkflowName } from \"@cloudflare/workflows-shared/src/lib/validators\";\nimport { dedent } from \"ts-dedent\";\nimport { UserError } from \"../errors\";\nimport { isRedirectedRawConfig } from \"./config-helpers\";\nimport { Diagnostics } from \"./diagnostics\";\nimport {\n\tall,\n\tappendEnvName,\n\tdeprecated,\n\texperimental,\n\tgetBindingNames,\n\thasProperty,\n\tinheritable,\n\tinheritableInWranglerEnvironments,\n\tisBoolean,\n\tisMutuallyExclusiveWith,\n\tisOneOf,\n\tisOptionalProperty,\n\tisRequiredProperty,\n\tisString,\n\tisStringArray,\n\tisValidDateTimeStringFormat,\n\tisValidName,\n\tnotInheritable,\n\tvalidateAdditionalProperties,\n\tvalidateAtLeastOnePropertyRequired,\n\tvalidateOptionalProperty,\n\tvalidateOptionalTypedArray,\n\tvalidateRequiredProperty,\n\tvalidateTypedArray,\n\tvalidateUniqueNameProperty,\n} from \"./validation-helpers\";\nimport { configFileName, formatConfigSnippet } from \".\";\nimport type { CfWorkerInit } from \"../worker\";\nimport type { Config, DevConfig, RawConfig, RawDevConfig } from \"./config\";\nimport type {\n\tAssets,\n\tDispatchNamespaceOutbound,\n\tEnvironment,\n\tObservability,\n\tRawEnvironment,\n\tRule,\n\tTailConsumer,\n} from \"./environment\";\nimport type { TypeofType, ValidatorFn } from \"./validation-helpers\";\n\n/**\n * R2 bucket names must:\n * - contain lower case letters, numbers, and `-`\n * - start and end with with a lower case letter or number\n * - be between 6 and 63 characters long\n *\n * See https://developers.cloudflare.com/r2/buckets/create-buckets/#bucket-level-operations\n */\nexport function isValidR2BucketName(name: string | undefined): name is string {\n\treturn (\n\t\ttypeof name === \"string\" && /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/.test(name)\n\t);\n}\n\nexport const bucketFormatMessage = `Bucket names must begin and end with an alphanumeric character, only contain lowercase letters, numbers, and hyphens, and be between 3 and 63 characters long.`;\n\nexport const friendlyBindingNames: Record<\n\tkeyof CfWorkerInit[\"bindings\"],\n\tstring\n> = {\n\tdata_blobs: \"Data Blob\",\n\tdurable_objects: \"Durable Object\",\n\tkv_namespaces: \"KV Namespace\",\n\tsend_email: \"Send Email\",\n\tqueues: \"Queue\",\n\td1_databases: \"D1 Database\",\n\tvectorize: \"Vectorize Index\",\n\thyperdrive: \"Hyperdrive Config\",\n\tr2_buckets: \"R2 Bucket\",\n\tlogfwdr: \"logfwdr\",\n\tservices: \"Worker\",\n\tanalytics_engine_datasets: \"Analytics Engine Dataset\",\n\ttext_blobs: \"Text Blob\",\n\tbrowser: \"Browser\",\n\tai: \"AI\",\n\timages: \"Images\",\n\tmedia: \"Media\",\n\tversion_metadata: \"Worker Version Metadata\",\n\tunsafe: \"Unsafe Metadata\",\n\tvars: \"Environment Variable\",\n\twasm_modules: \"Wasm Module\",\n\tdispatch_namespaces: \"Dispatch Namespace\",\n\tmtls_certificates: \"mTLS Certificate\",\n\tworkflows: \"Workflow\",\n\tpipelines: \"Pipeline\",\n\tsecrets_store_secrets: \"Secrets Store Secret\",\n\tratelimits: \"Rate Limit\",\n\tassets: \"Assets\",\n\tunsafe_hello_world: \"Hello World\",\n\tworker_loaders: \"Worker Loader\",\n\tvpc_services: \"VPC Service\",\n} as const;\n\nexport type NormalizeAndValidateConfigArgs = {\n\tname?: string;\n\tenv?: string;\n\t\"legacy-env\"?: boolean;\n\t// This is not relevant in dev. It's only purpose is loosening Worker name validation when deploying to a dispatch namespace\n\t\"dispatch-namespace\"?: string;\n\tremote?: boolean;\n\tlocalProtocol?: string;\n\tupstreamProtocol?: string;\n\tscript?: string;\n\tenableContainers?: boolean;\n};\n\nconst ENGLISH = new Intl.ListFormat(\"en-US\");\n\nconst ALLOWED_INSTANCE_TYPES = [\n\t\"lite\",\n\t\"basic\",\n\t\"standard-1\",\n\t\"standard-2\",\n\t\"standard-3\",\n\t\"standard-4\",\n\t\"dev\", // legacy\n\t\"standard\", // legacy\n];\n\nexport function isPagesConfig(rawConfig: RawConfig): boolean {\n\treturn rawConfig.pages_build_output_dir !== undefined;\n}\n\n/**\n * Validate the given `rawConfig` object that was loaded from `configPath`.\n *\n * The configuration is normalized, which includes using default values for missing field,\n * and copying over inheritable fields into named environments.\n *\n * Any errors or warnings from the validation are available in the returned `diagnostics` object.\n *\n * @param rawConfig The config loaded from `configPath`\n * @param configPath The path to the config file\n * @param userConfigPath\n * @param args\n * @param preserveOriginalMain\n * @returns The normalized `config` and `diagnostics` message\n */\nexport function normalizeAndValidateConfig(\n\trawConfig: RawConfig,\n\tconfigPath: string | undefined,\n\tuserConfigPath: string | undefined,\n\targs: NormalizeAndValidateConfigArgs,\n\tpreserveOriginalMain = false\n): {\n\tconfig: Config;\n\tdiagnostics: Diagnostics;\n} {\n\tconst diagnostics = new Diagnostics(\n\t\t`Processing ${\n\t\t\tconfigPath ? path.relative(process.cwd(), configPath) : \"wrangler\"\n\t\t} configuration:`\n\t);\n\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"\",\n\t\t\"legacy_env\",\n\t\trawConfig.legacy_env,\n\t\t\"boolean\"\n\t);\n\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"\",\n\t\t\"send_metrics\",\n\t\trawConfig.send_metrics,\n\t\t\"boolean\"\n\t);\n\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"\",\n\t\t\"keep_vars\",\n\t\trawConfig.keep_vars,\n\t\t\"boolean\"\n\t);\n\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"\",\n\t\t\"pages_build_output_dir\",\n\t\trawConfig.pages_build_output_dir,\n\t\t\"string\"\n\t);\n\n\t// Support explicit JSON schema setting\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"\",\n\t\t\"$schema\",\n\t\trawConfig.$schema,\n\t\t\"string\"\n\t);\n\n\t/**\n\t * Legacy env refers to wrangler environments, which are not actually legacy in any way.\n\t * This is opposed to service environments, which are deprecated.\n\t * Unfortunately legacy-env is a public facing arg and config option, so we have to leave the name.\n\t * However we can change the internal handling to be less confusing.\n\t */\n\n\tconst useServiceEnvironments = !(\n\t\targs[\"legacy-env\"] ??\n\t\trawConfig.legacy_env ??\n\t\ttrue\n\t);\n\n\tif (useServiceEnvironments) {\n\t\tdiagnostics.warnings.push(\n\t\t\t\"Service environments are deprecated, and will be removed in the future. DO NOT USE IN PRODUCTION.\"\n\t\t);\n\t}\n\n\tconst isDispatchNamespace =\n\t\ttypeof args[\"dispatch-namespace\"] === \"string\" &&\n\t\targs[\"dispatch-namespace\"].trim() !== \"\";\n\n\tconst topLevelEnv = normalizeAndValidateEnvironment(\n\t\tdiagnostics,\n\t\tconfigPath,\n\t\trawConfig,\n\t\tisDispatchNamespace,\n\t\tpreserveOriginalMain\n\t);\n\n\tconst isRedirectedConfig = isRedirectedRawConfig(\n\t\trawConfig,\n\t\tconfigPath,\n\t\tuserConfigPath\n\t);\n\n\tconst definedEnvironments = Object.keys(rawConfig.env ?? {});\n\n\tif (isRedirectedConfig && definedEnvironments.length > 0) {\n\t\tdiagnostics.errors.push(\n\t\t\tdedent`\n\t\t\t\tRedirected configurations cannot include environments but the following have been found:\\n${definedEnvironments\n\t\t\t\t\t.map((env) => `\t- ${env}`)\n\t\t\t\t\t.join(\"\\n\")}\n\n\n\t\t\t\tSuch configurations are generated by tools, meaning that one of the tools\n\t\t\t\tyour application is using is generating the incorrect configuration.\n\t\t\t\tReport this issue to the tool's author so that this can be fixed there.\n\t\t\t\t`\n\t\t);\n\t}\n\n\t//TODO: find a better way to define the type of Args that can be passed to the normalizeAndValidateConfig()\n\tconst envName = args.env;\n\tassert(envName === undefined || typeof envName === \"string\");\n\n\tlet activeEnv = topLevelEnv;\n\n\tif (envName) {\n\t\tif (isRedirectedConfig) {\n\t\t\t// Note: we error if the user is specifying an environment, but not for pages\n\t\t\t// commands where the environment is always set (to either \"preview\" or \"production\")\n\t\t\tif (!isPagesConfig(rawConfig)) {\n\t\t\t\tdiagnostics.errors.push(dedent`\n\t\t\t\t\tYou have specified the environment \"${envName}\", but are using a redirected configuration, produced by a build tool such as Vite.\n\t\t\t\t\tYou need to set the environment in your build tool, rather than via Wrangler.\n\t\t\t\t\tFor example, if you are using Vite, refer to these docs: https://developers.cloudflare.com/workers/vite-plugin/reference/cloudflare-environments/\n\t\t\t\t`);\n\t\t\t}\n\t\t} else {\n\t\t\tconst envDiagnostics = new Diagnostics(\n\t\t\t\t`\"env.${envName}\" environment configuration`\n\t\t\t);\n\t\t\tconst rawEnv = rawConfig.env?.[envName];\n\n\t\t\t/**\n\t\t\t * If an environment name was specified, and we found corresponding configuration\n\t\t\t * for it in the config file, we will use that corresponding environment. If the\n\t\t\t * environment name was specified, but no configuration for it was found, we will:\n\t\t\t *\n\t\t\t * - default to the top-level environment for Pages. For Pages, Wrangler does not\n\t\t\t * require both of supported named environments (\"preview\" or \"production\") to be\n\t\t\t * explicitly defined in the config file. If either`[env.production]` or\n\t\t\t * `[env.preview]` is left unspecified, we will use the top-level environment when\n\t\t\t * targeting that named Pages environment.\n\t\t\t *\n\t\t\t * - create a fake active environment with the specified `envName` for Workers.\n\t\t\t * This is done to cover any legacy environment cases, where the `envName` is used.\n\t\t\t */\n\t\t\tif (rawEnv !== undefined) {\n\t\t\t\tactiveEnv = normalizeAndValidateEnvironment(\n\t\t\t\t\tenvDiagnostics,\n\t\t\t\t\tconfigPath,\n\t\t\t\t\trawEnv,\n\t\t\t\t\tisDispatchNamespace,\n\t\t\t\t\tpreserveOriginalMain,\n\t\t\t\t\tenvName,\n\t\t\t\t\ttopLevelEnv,\n\t\t\t\t\tuseServiceEnvironments,\n\t\t\t\t\trawConfig\n\t\t\t\t);\n\t\t\t\tdiagnostics.addChild(envDiagnostics);\n\t\t\t} else if (!isPagesConfig(rawConfig)) {\n\t\t\t\tactiveEnv = normalizeAndValidateEnvironment(\n\t\t\t\t\tenvDiagnostics,\n\t\t\t\t\tconfigPath,\n\t\t\t\t\ttopLevelEnv, // in this case reuse the topLevelEnv to ensure that nonInherited fields are not removed\n\t\t\t\t\tisDispatchNamespace,\n\t\t\t\t\tpreserveOriginalMain,\n\t\t\t\t\tenvName,\n\t\t\t\t\ttopLevelEnv,\n\t\t\t\t\tuseServiceEnvironments,\n\t\t\t\t\trawConfig\n\t\t\t\t);\n\t\t\t\tconst envNames = rawConfig.env\n\t\t\t\t\t? `The available configured environment names are: ${JSON.stringify(\n\t\t\t\t\t\t\tObject.keys(rawConfig.env)\n\t\t\t\t\t\t)}\\n`\n\t\t\t\t\t: \"\";\n\t\t\t\tconst message =\n\t\t\t\t\t`No environment found in configuration with name \"${envName}\".\\n` +\n\t\t\t\t\t`Before using \\`--env=${envName}\\` there should be an equivalent environment section in the configuration.\\n` +\n\t\t\t\t\t`${envNames}\\n` +\n\t\t\t\t\t`Consider adding an environment configuration section to the ${configFileName(configPath)} file:\\n` +\n\t\t\t\t\t\"```\\n[env.\" +\n\t\t\t\t\tenvName +\n\t\t\t\t\t\"]\\n```\\n\";\n\n\t\t\t\tif (envNames.length > 0) {\n\t\t\t\t\tdiagnostics.errors.push(message);\n\t\t\t\t} else {\n\t\t\t\t\t// Only warn (rather than error) if there are not actually any environments configured in the Wrangler configuration file.\n\t\t\t\t\tdiagnostics.warnings.push(message);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process the top-level default environment configuration.\n\tconst config: Config = {\n\t\tconfigPath,\n\t\tuserConfigPath,\n\t\ttopLevelName: isRedirectedConfig ? rawConfig.topLevelName : rawConfig.name,\n\t\tdefinedEnvironments: isRedirectedConfig\n\t\t\t? rawConfig.definedEnvironments\n\t\t\t: definedEnvironments,\n\t\ttargetEnvironment: isRedirectedConfig\n\t\t\t? rawConfig.targetEnvironment\n\t\t\t: envName,\n\t\tpages_build_output_dir: normalizeAndValidatePagesBuildOutputDir(\n\t\t\tconfigPath,\n\t\t\trawConfig.pages_build_output_dir\n\t\t),\n\t\t/** Legacy_env is wrangler environments, as opposed to service environments. Wrangler environments is not legacy. */\n\t\tlegacy_env: !useServiceEnvironments,\n\t\tsend_metrics: rawConfig.send_metrics,\n\t\tkeep_vars: rawConfig.keep_vars,\n\t\t...activeEnv,\n\t\tdev: normalizeAndValidateDev(diagnostics, rawConfig.dev ?? {}, args),\n\t\tsite: normalizeAndValidateSite(\n\t\t\tdiagnostics,\n\t\t\tconfigPath,\n\t\t\trawConfig,\n\t\t\tactiveEnv.main\n\t\t),\n\t\talias: normalizeAndValidateAliases(diagnostics, configPath, rawConfig),\n\t\twasm_modules: normalizeAndValidateModulePaths(\n\t\t\tdiagnostics,\n\t\t\tconfigPath,\n\t\t\t\"wasm_modules\",\n\t\t\trawConfig.wasm_modules\n\t\t),\n\t\ttext_blobs: normalizeAndValidateModulePaths(\n\t\t\tdiagnostics,\n\t\t\tconfigPath,\n\t\t\t\"text_blobs\",\n\t\t\trawConfig.text_blobs\n\t\t),\n\t\tdata_blobs: normalizeAndValidateModulePaths(\n\t\t\tdiagnostics,\n\t\t\tconfigPath,\n\t\t\t\"data_blobs\",\n\t\t\trawConfig.data_blobs\n\t\t),\n\t};\n\n\tvalidateBindingsHaveUniqueNames(diagnostics, config);\n\n\tvalidateAdditionalProperties(\n\t\tdiagnostics,\n\t\t\"top-level\",\n\t\tObject.keys(rawConfig),\n\t\t[...Object.keys(config), \"env\", \"$schema\"]\n\t);\n\n\tapplyPythonConfig(config, args);\n\n\treturn { config, diagnostics };\n}\n\n/**\n * Modifies the provided config to support python workers, if the entrypoint is a .py file\n */\nfunction applyPythonConfig(\n\tconfig: Config,\n\targs: NormalizeAndValidateConfigArgs\n) {\n\tconst mainModule = args.script ?? config.main;\n\tif (typeof mainModule === \"string\" && mainModule.endsWith(\".py\")) {\n\t\t// Workers with a python entrypoint should have bundling turned off, since all of Wrangler's bundling is JS/TS specific\n\t\tconfig.no_bundle = true;\n\n\t\t// Workers with a python entrypoint need module rules for \"*.py\". Add one automatically as a DX nicety\n\t\tif (!config.rules.some((rule) => rule.type === \"PythonModule\")) {\n\t\t\tconfig.rules.push({ type: \"PythonModule\", globs: [\"**/*.py\"] });\n\t\t}\n\t\tif (!config.compatibility_flags.includes(\"python_workers\")) {\n\t\t\tthrow new UserError(\n\t\t\t\t\"The `python_workers` compatibility flag is required to use Python.\"\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Validate the `build` configuration and return the normalized values.\n */\nfunction normalizeAndValidateBuild(\n\tdiagnostics: Diagnostics,\n\trawEnv: RawEnvironment,\n\trawBuild: Config[\"build\"],\n\tconfigPath: string | undefined\n): Config[\"build\"] {\n\tconst { command, cwd, watch_dir = \"./src\", ...rest } = rawBuild;\n\tvalidateAdditionalProperties(diagnostics, \"build\", Object.keys(rest), []);\n\n\tvalidateOptionalProperty(diagnostics, \"build\", \"command\", command, \"string\");\n\tvalidateOptionalProperty(diagnostics, \"build\", \"cwd\", cwd, \"string\");\n\tif (Array.isArray(watch_dir)) {\n\t\tvalidateTypedArray(diagnostics, \"build.watch_dir\", watch_dir, \"string\");\n\t} else {\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\t\"build\",\n\t\t\t\"watch_dir\",\n\t\t\twatch_dir,\n\t\t\t\"string\"\n\t\t);\n\t}\n\n\treturn {\n\t\tcommand,\n\t\twatch_dir:\n\t\t\t// - `watch_dir` only matters when `command` is defined, so we apply\n\t\t\t// a default only when `command` is defined\n\t\t\t// - `configPath` will always be defined since `build` can only\n\t\t\t// be configured in the Wrangler configuration file, but who knows, that may\n\t\t\t// change in the future, so we do a check anyway\n\t\t\tcommand && configPath\n\t\t\t\t? Array.isArray(watch_dir)\n\t\t\t\t\t? watch_dir.map((dir) =>\n\t\t\t\t\t\t\tpath.relative(\n\t\t\t\t\t\t\t\tprocess.cwd(),\n\t\t\t\t\t\t\t\tpath.join(path.dirname(configPath), `${dir}`)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t: path.relative(\n\t\t\t\t\t\t\tprocess.cwd(),\n\t\t\t\t\t\t\tpath.join(path.dirname(configPath), `${watch_dir}`)\n\t\t\t\t\t\t)\n\t\t\t\t: watch_dir,\n\t\tcwd,\n\t};\n}\n\n/**\n * Validate the `main` field and return the normalized values.\n */\nfunction normalizeAndValidateMainField(\n\tconfigPath: string | undefined,\n\trawMain: string | undefined\n): string | undefined {\n\tconst configDir = path.dirname(configPath ?? \"wrangler.toml\");\n\tif (rawMain !== undefined) {\n\t\tif (typeof rawMain === \"string\") {\n\t\t\tconst directory = path.resolve(configDir);\n\t\t\treturn path.resolve(directory, rawMain);\n\t\t} else {\n\t\t\treturn rawMain;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n}\n\n/**\n * Validate the `base_dir` field and return the normalized values.\n */\nfunction normalizeAndValidateBaseDirField(\n\tconfigPath: string | undefined,\n\trawDir: string | undefined\n): string | undefined {\n\tconst configDir = path.dirname(configPath ?? \"wrangler.toml\");\n\tif (rawDir !== undefined) {\n\t\tif (typeof rawDir === \"string\") {\n\t\t\tconst directory = path.resolve(configDir);\n\t\t\treturn path.resolve(directory, rawDir);\n\t\t} else {\n\t\t\treturn rawDir;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n}\n\n/**\n * Validate the `pages_build_output_dir` field and return the normalized values.\n */\nfunction normalizeAndValidatePagesBuildOutputDir(\n\tconfigPath: string | undefined,\n\trawPagesDir: string | undefined\n): string | undefined {\n\tconst configDir = path.dirname(configPath ?? \"wrangler.toml\");\n\tif (rawPagesDir !== undefined) {\n\t\tif (typeof rawPagesDir === \"string\") {\n\t\t\tconst directory = path.resolve(configDir);\n\t\t\treturn path.resolve(directory, rawPagesDir);\n\t\t} else {\n\t\t\treturn rawPagesDir;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n}\n\n/**\n * Validate the `dev` configuration and return the normalized values.\n */\nfunction normalizeAndValidateDev(\n\tdiagnostics: Diagnostics,\n\trawDev: RawDevConfig,\n\targs: NormalizeAndValidateConfigArgs\n): DevConfig {\n\tassert(typeof args === \"object\" && args !== null && !Array.isArray(args));\n\tconst {\n\t\tlocalProtocol: localProtocolArg,\n\t\tupstreamProtocol: upstreamProtocolArg,\n\t\tremote: remoteArg,\n\t\tenableContainers: enableContainersArg,\n\t} = args;\n\tassert(\n\t\tlocalProtocolArg === undefined ||\n\t\t\tlocalProtocolArg === \"http\" ||\n\t\t\tlocalProtocolArg === \"https\"\n\t);\n\tassert(\n\t\tupstreamProtocolArg === undefined ||\n\t\t\tupstreamProtocolArg === \"http\" ||\n\t\t\tupstreamProtocolArg === \"https\"\n\t);\n\tassert(remoteArg === undefined || typeof remoteArg === \"boolean\");\n\tassert(\n\t\tenableContainersArg === undefined ||\n\t\t\ttypeof enableContainersArg === \"boolean\"\n\t);\n\tconst {\n\t\t// On Windows, when specifying `localhost` as the socket hostname, `workerd`\n\t\t// will only listen on the IPv4 loopback `127.0.0.1`, not the IPv6 `::1`:\n\t\t// https://github.com/cloudflare/workerd/issues/1408\n\t\t// On Node 17+, `fetch()` will only try to fetch the IPv6 address.\n\t\t// For now, on Windows, we default to listening on IPv4 only and using\n\t\t// `127.0.0.1` when sending control requests to `workerd` (e.g. with the\n\t\t// `ProxyController`).\n\t\tip = process.platform === \"win32\" ? \"127.0.0.1\" : \"localhost\",\n\t\tport,\n\t\tinspector_port,\n\t\tlocal_protocol = localProtocolArg ?? \"http\",\n\t\t// In remote mode upstream_protocol must be https, otherwise it defaults to local_protocol.\n\t\tupstream_protocol = upstreamProtocolArg ?? remoteArg\n\t\t\t? \"https\"\n\t\t\t: local_protocol,\n\t\thost,\n\t\tenable_containers = enableContainersArg ?? true,\n\t\tcontainer_engine,\n\t\t...rest\n\t} = rawDev;\n\tvalidateAdditionalProperties(diagnostics, \"dev\", Object.keys(rest), []);\n\n\tvalidateOptionalProperty(diagnostics, \"dev\", \"ip\", ip, \"string\");\n\tvalidateOptionalProperty(diagnostics, \"dev\", \"port\", port, \"number\");\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"dev\",\n\t\t\"inspector_port\",\n\t\tinspector_port,\n\t\t\"number\"\n\t);\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"dev\",\n\t\t\"local_protocol\",\n\t\tlocal_protocol,\n\t\t\"string\",\n\t\t[\"http\", \"https\"]\n\t);\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"dev\",\n\t\t\"upstream_protocol\",\n\t\tupstream_protocol,\n\t\t\"string\",\n\t\t[\"http\", \"https\"]\n\t);\n\tvalidateOptionalProperty(diagnostics, \"dev\", \"host\", host, \"string\");\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"dev\",\n\t\t\"enable_containers\",\n\t\tenable_containers,\n\t\t\"boolean\"\n\t);\n\n\tvalidateOptionalProperty(\n\t\tdiagnostics,\n\t\t\"dev\",\n\t\t\"container_engine\",\n\t\tcontainer_engine,\n\t\t\"string\"\n\t);\n\n\treturn {\n\t\tip,\n\t\tport,\n\t\tinspector_port,\n\t\tlocal_protocol,\n\t\tupstream_protocol,\n\t\thost,\n\t\tenable_containers,\n\t\tcontainer_engine,\n\t};\n}\n\nfunction normalizeAndValidateAssets(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment\n): Config[\"assets\"] {\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"assets\",\n\t\tvalidateAssetsConfig,\n\t\tundefined\n\t);\n}\n\n/**\n * Validate the `site` configuration and return the normalized values.\n */\nfunction normalizeAndValidateSite(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\trawConfig: RawConfig,\n\tmainEntryPoint: string | undefined\n): Config[\"site\"] {\n\tif (rawConfig?.site !== undefined) {\n\t\tconst { bucket, include = [], exclude = [], ...rest } = rawConfig.site;\n\n\t\tvalidateAdditionalProperties(diagnostics, \"site\", Object.keys(rest), [\n\t\t\t\"entry-point\",\n\t\t]);\n\t\tvalidateRequiredProperty(diagnostics, \"site\", \"bucket\", bucket, \"string\");\n\t\tvalidateTypedArray(diagnostics, \"sites.include\", include, \"string\");\n\t\tvalidateTypedArray(diagnostics, \"sites.exclude\", exclude, \"string\");\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\t\"site\",\n\t\t\t\"entry-point\",\n\t\t\trawConfig.site[\"entry-point\"],\n\t\t\t\"string\"\n\t\t);\n\n\t\tdeprecated(\n\t\t\tdiagnostics,\n\t\t\trawConfig,\n\t\t\t`site.entry-point`,\n\t\t\t`Delete the \\`site.entry-point\\` field, then add the top level \\`main\\` field to your configuration file:\\n` +\n\t\t\t\t`\\`\\`\\`\\n` +\n\t\t\t\t`main = \"${path.join(\n\t\t\t\t\tString(rawConfig.site[\"entry-point\"]) || \"workers-site\",\n\t\t\t\t\tpath.extname(String(rawConfig.site[\"entry-point\"]) || \"workers-site\")\n\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t: \"index.js\"\n\t\t\t\t)}\"\\n` +\n\t\t\t\t`\\`\\`\\``,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\t\"warning\"\n\t\t);\n\n\t\tlet siteEntryPoint = rawConfig.site[\"entry-point\"];\n\n\t\tif (!mainEntryPoint && !siteEntryPoint) {\n\t\t\t// this means that we're defaulting to \"workers-site\"\n\t\t\t// so let's add the deprecation warning\n\t\t\tdiagnostics.warnings.push(\n\t\t\t\t`Because you've defined a [site] configuration, we're defaulting to \"workers-site\" for the deprecated \\`site.entry-point\\`field.\\n` +\n\t\t\t\t\t`Add the top level \\`main\\` field to your configuration file:\\n` +\n\t\t\t\t\t`\\`\\`\\`\\n` +\n\t\t\t\t\t`main = \"workers-site/index.js\"\\n` +\n\t\t\t\t\t`\\`\\`\\``\n\t\t\t);\n\t\t\tsiteEntryPoint = \"workers-site\";\n\t\t} else if (mainEntryPoint && siteEntryPoint) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`Don't define both the \\`main\\` and \\`site.entry-point\\` fields in your configuration.\\n` +\n\t\t\t\t\t`They serve the same purpose: to point to the entry-point of your worker.\\n` +\n\t\t\t\t\t`Delete the deprecated \\`site.entry-point\\` field from your config.`\n\t\t\t);\n\t\t}\n\n\t\tif (configPath && siteEntryPoint) {\n\t\t\t// rewrite the path to be relative to the working directory\n\t\t\tsiteEntryPoint = path.relative(\n\t\t\t\tprocess.cwd(),\n\t\t\t\tpath.join(path.dirname(configPath), siteEntryPoint)\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tbucket,\n\t\t\t\"entry-point\": siteEntryPoint,\n\t\t\tinclude,\n\t\t\texclude,\n\t\t};\n\t}\n\treturn undefined;\n}\n\n/**\n * Validate the `alias` configuration\n */\nfunction normalizeAndValidateAliases(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\trawConfig: RawConfig\n): Config[\"alias\"] {\n\tif (rawConfig?.alias === undefined) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\t[\"string\", \"boolean\", \"number\"].includes(typeof rawConfig?.alias) ||\n\t\ttypeof rawConfig?.alias !== \"object\"\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected alias to be an object, but got ${typeof rawConfig?.alias}`\n\t\t);\n\t\treturn undefined;\n\t}\n\n\tlet isValid = true;\n\tfor (const [key, value] of Object.entries(rawConfig?.alias)) {\n\t\tif (typeof value !== \"string\") {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`Expected alias[\"${key}\"] to be a string, but got ${typeof value}`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\t}\n\tif (isValid) {\n\t\treturn rawConfig.alias;\n\t}\n\n\treturn;\n}\n\n/**\n * Map the paths of the `wasm_modules`, `text_blobs` or `data_blobs` configuration to be relative to the current working directory.\n */\nfunction normalizeAndValidateModulePaths(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\tfield: \"wasm_modules\" | \"text_blobs\" | \"data_blobs\",\n\trawMapping: Record<string, string> | undefined\n): Record<string, string> | undefined {\n\tif (rawMapping === undefined) {\n\t\treturn undefined;\n\t}\n\tconst mapping: Record<string, string> = {};\n\t// Rewrite paths to be relative to the cwd, rather than the config path.\n\tfor (const [name, filePath] of Object.entries(rawMapping)) {\n\t\tif (isString(diagnostics, `${field}['${name}']`, filePath, undefined)) {\n\t\t\tif (configPath) {\n\t\t\t\tmapping[name] = configPath\n\t\t\t\t\t? path.relative(\n\t\t\t\t\t\t\tprocess.cwd(),\n\t\t\t\t\t\t\tpath.join(path.dirname(configPath), filePath)\n\t\t\t\t\t\t)\n\t\t\t\t\t: filePath;\n\t\t\t}\n\t\t}\n\t}\n\treturn mapping;\n}\n\n/**\n * Check whether a value has the shape of a route, which can be a string\n * or an object that looks like {pattern: string, zone_id: string }\n */\nfunction isValidRouteValue(item: unknown): boolean {\n\tif (!item) {\n\t\treturn false;\n\t}\n\tif (typeof item === \"string\") {\n\t\treturn true;\n\t}\n\tif (typeof item === \"object\") {\n\t\tif (!hasProperty(item, \"pattern\") || typeof item.pattern !== \"string\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst otherKeys = Object.keys(item).length - 1; // minus one to subtract \"pattern\"\n\n\t\tconst hasZoneId =\n\t\t\thasProperty(item, \"zone_id\") && typeof item.zone_id === \"string\";\n\t\tconst hasZoneName =\n\t\t\thasProperty(item, \"zone_name\") && typeof item.zone_name === \"string\";\n\t\tconst hasCustomDomainFlag =\n\t\t\thasProperty(item, \"custom_domain\") &&\n\t\t\ttypeof item.custom_domain === \"boolean\";\n\n\t\tif (otherKeys === 2 && hasCustomDomainFlag && (hasZoneId || hasZoneName)) {\n\t\t\treturn true;\n\t\t} else if (\n\t\t\totherKeys === 1 &&\n\t\t\t(hasZoneId || hasZoneName || hasCustomDomainFlag)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * If account_id has been passed as an empty string, normalise it to undefined.\n * This is to workaround older Wrangler v1-era templates that have account_id = '',\n * which isn't a valid value anyway\n */\nfunction mutateEmptyStringAccountIDValue(\n\tdiagnostics: Diagnostics,\n\trawEnv: RawEnvironment\n) {\n\tif (rawEnv.account_id === \"\") {\n\t\tdiagnostics.warnings.push(\n\t\t\t`The \"account_id\" field in your configuration is an empty string and will be ignored.\\n` +\n\t\t\t\t`Please remove the \"account_id\" field from your configuration.`\n\t\t);\n\t\trawEnv.account_id = undefined;\n\t}\n\treturn rawEnv;\n}\n\n/**\n * Normalize empty string to `undefined` by mutating rawEnv.route value.\n * As part of backward compatibility with Wrangler v1 converting empty string to `undefined`\n */\nfunction mutateEmptyStringRouteValue(\n\tdiagnostics: Diagnostics,\n\trawEnv: RawEnvironment\n): RawEnvironment {\n\tif (rawEnv[\"route\"] === \"\") {\n\t\tdiagnostics.warnings.push(\n\t\t\t`The \"route\" field in your configuration is an empty string and will be ignored.\\n` +\n\t\t\t\t`Please remove the \"route\" field from your configuration.`\n\t\t);\n\t\trawEnv[\"route\"] = undefined;\n\t}\n\n\treturn rawEnv;\n}\n\n/**\n * Validate that the field is a route.\n */\nconst isRoute: ValidatorFn = (diagnostics, field, value) => {\n\tif (value !== undefined && !isValidRouteValue(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be either a string, or an object with shape { pattern, custom_domain, zone_id | zone_name }, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/**\n * Validate that the field is an array of routes.\n */\nconst isRouteArray: ValidatorFn = (diagnostics, field, value) => {\n\tif (value === undefined) {\n\t\treturn true;\n\t}\n\tif (!Array.isArray(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be an array but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\tconst invalidRoutes = [];\n\tfor (const item of value) {\n\t\tif (!isValidRouteValue(item)) {\n\t\t\tinvalidRoutes.push(item);\n\t\t}\n\t}\n\tif (invalidRoutes.length > 0) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be an array of either strings or objects with the shape { pattern, custom_domain, zone_id | zone_name }, but these weren't valid: ${JSON.stringify(\n\t\t\t\tinvalidRoutes,\n\t\t\t\tnull,\n\t\t\t\t2\n\t\t\t)}.`\n\t\t);\n\t}\n\treturn invalidRoutes.length === 0;\n};\n\nfunction normalizeAndValidateRoute(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment\n): Config[\"route\"] {\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\tmutateEmptyStringRouteValue(diagnostics, rawEnv),\n\t\t\"route\",\n\t\tisRoute,\n\t\tundefined\n\t);\n}\n\nfunction validateRoutes(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment\n): Config[\"routes\"] {\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"routes\",\n\t\tall(isRouteArray, isMutuallyExclusiveWith(rawEnv, \"route\")),\n\t\tundefined\n\t);\n}\n\nfunction normalizeAndValidatePlacement(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment\n): Config[\"placement\"] {\n\tif (rawEnv.placement) {\n\t\tvalidateRequiredProperty(\n\t\t\tdiagnostics,\n\t\t\t\"placement\",\n\t\t\t\"mode\",\n\t\t\trawEnv.placement.mode,\n\t\t\t\"string\",\n\t\t\t[\"off\", \"smart\"]\n\t\t);\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\t\"placement\",\n\t\t\t\"hint\",\n\t\t\trawEnv.placement.hint,\n\t\t\t\"string\"\n\t\t);\n\t\tif (rawEnv.placement.hint && rawEnv.placement.mode !== \"smart\") {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"placement.hint\" cannot be set if \"placement.mode\" is not \"smart\"`\n\t\t\t);\n\t\t}\n\t}\n\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"placement\",\n\t\t() => true,\n\t\tundefined\n\t);\n}\n\nfunction validateTailConsumer(\n\tdiagnostics: Diagnostics,\n\tfield: string,\n\tvalue: TailConsumer\n) {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\n\tisValid =\n\t\tisValid &&\n\t\tvalidateRequiredProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"service\",\n\t\t\tvalue.service,\n\t\t\t\"string\"\n\t\t);\n\tisValid =\n\t\tisValid &&\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"environment\",\n\t\t\tvalue.environment,\n\t\t\t\"string\"\n\t\t);\n\n\treturn isValid;\n}\n\nconst validateTailConsumers: ValidatorFn = (diagnostics, field, value) => {\n\tif (!value) {\n\t\treturn true;\n\t}\n\tif (!Array.isArray(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be an array but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\tfor (let i = 0; i < value.length; i++) {\n\t\tisValid =\n\t\t\tvalidateTailConsumer(diagnostics, `${field}[${i}]`, value[i]) && isValid;\n\t}\n\n\treturn isValid;\n};\n\n/**\n * Validate top-level environment configuration and return the normalized values.\n */\nfunction normalizeAndValidateEnvironment(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\ttopLevelEnv: RawEnvironment,\n\tisDispatchNamespace: boolean,\n\tpreserveOriginalMain: boolean\n): Environment;\n/**\n * Validate the named environment configuration and return the normalized values.\n */\nfunction normalizeAndValidateEnvironment(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\trawEnv: RawEnvironment,\n\tisDispatchNamespace: boolean,\n\tpreserveOriginalMain: boolean,\n\tenvName: string,\n\ttopLevelEnv: Environment,\n\tuseServiceEnvironments: boolean,\n\trawConfig: RawConfig\n): Environment;\nfunction normalizeAndValidateEnvironment(\n\tdiagnostics: Diagnostics,\n\tconfigPath: string | undefined,\n\trawEnv: RawEnvironment,\n\tisDispatchNamespace: boolean,\n\tpreserveOriginalMain: boolean,\n\tenvName = \"top level\",\n\ttopLevelEnv?: Environment | undefined,\n\tuseServiceEnvironments?: boolean,\n\trawConfig?: RawConfig | undefined\n): Environment {\n\tdeprecated(\n\t\tdiagnostics,\n\t\trawEnv,\n\t\t// @ts-expect-error Removed from the config type\n\t\t\"node_compat\",\n\t\t`The \"node_compat\" field is no longer supported as of Wrangler v4. Instead, use the \\`nodejs_compat\\` compatibility flag. This includes the functionality from legacy \\`node_compat\\` polyfills and natively implemented Node.js APIs. See https://developers.cloudflare.com/workers/runtime-apis/nodejs for more information.`,\n\t\ttrue,\n\t\t\"Removed\",\n\t\t\"error\"\n\t);\n\n\texperimental(diagnostics, rawEnv, \"unsafe\");\n\n\tconst route = normalizeAndValidateRoute(diagnostics, topLevelEnv, rawEnv);\n\n\tconst account_id = inheritableInWranglerEnvironments(\n\t\tdiagnostics,\n\t\tuseServiceEnvironments,\n\t\ttopLevelEnv,\n\t\tmutateEmptyStringAccountIDValue(diagnostics, rawEnv),\n\t\t\"account_id\",\n\t\tisString,\n\t\tundefined,\n\t\tundefined\n\t);\n\n\tconst routes = validateRoutes(diagnostics, topLevelEnv, rawEnv);\n\n\tconst workers_dev = inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"workers_dev\",\n\t\tisBoolean,\n\t\tundefined\n\t);\n\n\tconst preview_urls = inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"preview_urls\",\n\t\tisBoolean,\n\t\tundefined\n\t);\n\n\tconst build = normalizeAndValidateBuild(\n\t\tdiagnostics,\n\t\trawEnv,\n\t\trawEnv.build ?? topLevelEnv?.build ?? {},\n\t\tconfigPath\n\t);\n\n\tconst environment: Environment = {\n\t\t// Inherited fields\n\t\taccount_id,\n\t\tcompatibility_date: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"compatibility_date\",\n\t\t\tvalidateCompatibilityDate,\n\t\t\tundefined\n\t\t),\n\t\tcompatibility_flags: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"compatibility_flags\",\n\t\t\tisStringArray,\n\t\t\t[]\n\t\t),\n\t\tjsx_factory: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"jsx_factory\",\n\t\t\tisString,\n\t\t\t\"React.createElement\"\n\t\t),\n\t\tjsx_fragment: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"jsx_fragment\",\n\t\t\tisString,\n\t\t\t\"React.Fragment\"\n\t\t),\n\t\ttsconfig: validateAndNormalizeTsconfig(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\tconfigPath\n\t\t),\n\t\trules: validateAndNormalizeRules(diagnostics, topLevelEnv, rawEnv, envName),\n\t\tname: inheritableInWranglerEnvironments(\n\t\t\tdiagnostics,\n\t\t\tuseServiceEnvironments,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"name\",\n\t\t\tisDispatchNamespace ? isString : isValidName,\n\t\t\tappendEnvName(envName),\n\t\t\tundefined\n\t\t),\n\t\tmain: preserveOriginalMain\n\t\t\t? inheritable(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\ttopLevelEnv,\n\t\t\t\t\trawEnv,\n\t\t\t\t\t\"main\",\n\t\t\t\t\tisString,\n\t\t\t\t\tundefined\n\t\t\t\t)\n\t\t\t: normalizeAndValidateMainField(\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tinheritable(\n\t\t\t\t\t\tdiagnostics,\n\t\t\t\t\t\ttopLevelEnv,\n\t\t\t\t\t\trawEnv,\n\t\t\t\t\t\t\"main\",\n\t\t\t\t\t\tisString,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t)\n\t\t\t\t),\n\t\tfind_additional_modules: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"find_additional_modules\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tpreserve_file_names: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"preserve_file_names\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tbase_dir: normalizeAndValidateBaseDirField(\n\t\t\tconfigPath,\n\t\t\tinheritable(\n\t\t\t\tdiagnostics,\n\t\t\t\ttopLevelEnv,\n\t\t\t\trawEnv,\n\t\t\t\t\"base_dir\",\n\t\t\t\tisString,\n\t\t\t\tundefined\n\t\t\t)\n\t\t),\n\t\troute,\n\t\troutes,\n\t\ttriggers: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"triggers\",\n\t\t\tvalidateTriggers,\n\t\t\t{ crons: undefined }\n\t\t),\n\t\tassets: normalizeAndValidateAssets(diagnostics, topLevelEnv, rawEnv),\n\t\tlimits: normalizeAndValidateLimits(diagnostics, topLevelEnv, rawEnv),\n\t\tplacement: normalizeAndValidatePlacement(diagnostics, topLevelEnv, rawEnv),\n\t\tbuild,\n\t\tworkers_dev,\n\t\tpreview_urls,\n\t\t// Not inherited fields\n\t\tvars: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"vars\",\n\t\t\tvalidateVars(envName),\n\t\t\t{}\n\t\t),\n\t\tdefine: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"define\",\n\t\t\tvalidateDefines(envName),\n\t\t\t{}\n\t\t),\n\t\tdurable_objects: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"durable_objects\",\n\t\t\tvalidateBindingsProperty(envName, validateDurableObjectBinding),\n\t\t\t{\n\t\t\t\tbindings: [],\n\t\t\t}\n\t\t),\n\t\tworkflows: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"workflows\",\n\t\t\tall(\n\t\t\t\tvalidateBindingArray(envName, validateWorkflowBinding),\n\t\t\t\tvalidateUniqueNameProperty\n\t\t\t),\n\t\t\t[]\n\t\t),\n\t\tmigrations: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"migrations\",\n\t\t\tvalidateMigrations,\n\t\t\t[]\n\t\t),\n\t\tkv_namespaces: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"kv_namespaces\",\n\t\t\tvalidateBindingArray(envName, validateKVBinding),\n\t\t\t[]\n\t\t),\n\t\tcloudchamber: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"cloudchamber\",\n\t\t\tvalidateCloudchamberConfig,\n\t\t\t{}\n\t\t),\n\t\tcontainers: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"containers\",\n\t\t\tvalidateContainerApp(envName, rawEnv.name, configPath),\n\t\t\tundefined\n\t\t),\n\t\tsend_email: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"send_email\",\n\t\t\tvalidateBindingArray(envName, validateSendEmailBinding),\n\t\t\t[]\n\t\t),\n\t\tqueues: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"queues\",\n\t\t\tvalidateQueues(envName),\n\t\t\t{ producers: [], consumers: [] }\n\t\t),\n\t\tr2_buckets: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"r2_buckets\",\n\t\t\tvalidateBindingArray(envName, validateR2Binding),\n\t\t\t[]\n\t\t),\n\t\td1_databases: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"d1_databases\",\n\t\t\tvalidateBindingArray(envName, validateD1Binding),\n\t\t\t[]\n\t\t),\n\t\tvectorize: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"vectorize\",\n\t\t\tvalidateBindingArray(envName, validateVectorizeBinding),\n\t\t\t[]\n\t\t),\n\t\thyperdrive: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"hyperdrive\",\n\t\t\tvalidateBindingArray(envName, validateHyperdriveBinding),\n\t\t\t[]\n\t\t),\n\t\tservices: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"services\",\n\t\t\tvalidateBindingArray(envName, validateServiceBinding),\n\t\t\t[]\n\t\t),\n\t\tanalytics_engine_datasets: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"analytics_engine_datasets\",\n\t\t\tvalidateBindingArray(envName, validateAnalyticsEngineBinding),\n\t\t\t[]\n\t\t),\n\t\tdispatch_namespaces: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"dispatch_namespaces\",\n\t\t\tvalidateBindingArray(envName, validateWorkerNamespaceBinding),\n\t\t\t[]\n\t\t),\n\t\tmtls_certificates: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"mtls_certificates\",\n\t\t\tvalidateBindingArray(envName, validateMTlsCertificateBinding),\n\t\t\t[]\n\t\t),\n\t\ttail_consumers: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"tail_consumers\",\n\t\t\tvalidateTailConsumers,\n\t\t\tundefined\n\t\t),\n\t\tunsafe: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"unsafe\",\n\t\t\tvalidateUnsafeSettings(envName),\n\t\t\t{}\n\t\t),\n\t\tbrowser: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"browser\",\n\t\t\tvalidateNamedSimpleBinding(envName),\n\t\t\tundefined\n\t\t),\n\t\tai: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"ai\",\n\t\t\tvalidateAIBinding(envName),\n\t\t\tundefined\n\t\t),\n\t\timages: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"images\",\n\t\t\tvalidateNamedSimpleBinding(envName),\n\t\t\tundefined\n\t\t),\n\t\tmedia: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"media\",\n\t\t\tvalidateNamedSimpleBinding(envName),\n\t\t\tundefined\n\t\t),\n\t\tpipelines: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"pipelines\",\n\t\t\tvalidateBindingArray(envName, validatePipelineBinding),\n\t\t\t[]\n\t\t),\n\t\tsecrets_store_secrets: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"secrets_store_secrets\",\n\t\t\tvalidateBindingArray(envName, validateSecretsStoreSecretBinding),\n\t\t\t[]\n\t\t),\n\t\tunsafe_hello_world: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"unsafe_hello_world\",\n\t\t\tvalidateBindingArray(envName, validateHelloWorldBinding),\n\t\t\t[]\n\t\t),\n\t\tworker_loaders: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"worker_loaders\",\n\t\t\tvalidateBindingArray(envName, validateWorkerLoaderBinding),\n\t\t\t[]\n\t\t),\n\t\tratelimits: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"ratelimits\",\n\t\t\tvalidateBindingArray(envName, validateRateLimitBinding),\n\t\t\t[]\n\t\t),\n\t\tvpc_services: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"vpc_services\",\n\t\t\tvalidateBindingArray(envName, validateVpcServiceBinding),\n\t\t\t[]\n\t\t),\n\t\tversion_metadata: notInheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawConfig,\n\t\t\trawEnv,\n\t\t\tenvName,\n\t\t\t\"version_metadata\",\n\t\t\tvalidateVersionMetadataBinding(envName),\n\t\t\tundefined\n\t\t),\n\t\tlogfwdr: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"logfwdr\",\n\t\t\tvalidateCflogfwdrObject(envName),\n\t\t\t{\n\t\t\t\tbindings: [],\n\t\t\t}\n\t\t),\n\t\tno_bundle: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"no_bundle\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tminify: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"minify\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tkeep_names: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"keep_names\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tfirst_party_worker: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"first_party_worker\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tlogpush: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"logpush\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tupload_source_maps: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"upload_source_maps\",\n\t\t\tisBoolean,\n\t\t\tundefined\n\t\t),\n\t\tobservability: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"observability\",\n\t\t\tvalidateObservability,\n\t\t\tundefined\n\t\t),\n\t\tcompliance_region: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"compliance_region\",\n\t\t\tisOneOf(\"public\", \"fedramp_high\"),\n\t\t\tundefined\n\t\t),\n\t\tpython_modules: inheritable(\n\t\t\tdiagnostics,\n\t\t\ttopLevelEnv,\n\t\t\trawEnv,\n\t\t\t\"python_modules\",\n\t\t\tvalidatePythonModules,\n\t\t\t{ exclude: [\"**/*.pyc\"] }\n\t\t),\n\t};\n\n\twarnIfDurableObjectsHaveNoMigrations(\n\t\tdiagnostics,\n\t\tenvironment.durable_objects,\n\t\tenvironment.migrations,\n\t\tconfigPath\n\t);\n\n\treturn environment;\n}\n\nfunction validateAndNormalizeTsconfig(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment,\n\tconfigPath: string | undefined\n) {\n\tconst tsconfig = inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"tsconfig\",\n\t\tisString,\n\t\tundefined\n\t);\n\n\treturn configPath && tsconfig\n\t\t? path.relative(\n\t\t\t\tprocess.cwd(),\n\t\t\t\tpath.join(path.dirname(configPath), tsconfig)\n\t\t\t)\n\t\t: tsconfig;\n}\n\nconst validateAndNormalizeRules = (\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment,\n\tenvName: string\n): Rule[] => {\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"rules\",\n\t\tvalidateRules(envName),\n\t\t[]\n\t);\n};\n\nconst validateTriggers: ValidatorFn = (\n\tdiagnostics,\n\ttriggersFieldName,\n\ttriggersValue\n) => {\n\tif (triggersValue === undefined || triggersValue === null) {\n\t\treturn true;\n\t}\n\n\tif (typeof triggersValue !== \"object\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${triggersFieldName}\" to be of type object but got ${JSON.stringify(\n\t\t\t\ttriggersValue\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\n\tif (\"crons\" in triggersValue && !Array.isArray(triggersValue.crons)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${triggersFieldName}.crons\" to be of type array, but got ${JSON.stringify(triggersValue)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tisValid =\n\t\tvalidateAdditionalProperties(\n\t\t\tdiagnostics,\n\t\t\ttriggersFieldName,\n\t\t\tObject.keys(triggersValue),\n\t\t\t[\"crons\"]\n\t\t) && isValid;\n\n\treturn isValid;\n};\n\nconst validateRules =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, envValue, config) => {\n\t\tif (!envValue) {\n\t\t\treturn true;\n\t\t}\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\t\tif (!Array.isArray(envValue)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an array but got ${JSON.stringify(\n\t\t\t\t\tenvValue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tfor (let i = 0; i < envValue.length; i++) {\n\t\t\tisValid =\n\t\t\t\tvalidateRule(diagnostics, `${fieldPath}[${i}]`, envValue[i], config) &&\n\t\t\t\tisValid;\n\t\t}\n\t\treturn isValid;\n\t};\n\nconst validateRule: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\t// Rules must have a type string and glob string array, and optionally a fallthrough boolean.\n\tlet isValid = true;\n\tconst rule = value as Rule;\n\n\tif (\n\t\t!isRequiredProperty(rule, \"type\", \"string\", [\n\t\t\t\"ESModule\",\n\t\t\t\"CommonJS\",\n\t\t\t\"CompiledWasm\",\n\t\t\t\"Text\",\n\t\t\t\"Data\",\n\t\t])\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`bindings should have a string \"type\" field, which contains one of \"ESModule\", \"CommonJS\", \"CompiledWasm\", \"Text\", or \"Data\".`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tisValid =\n\t\tvalidateTypedArray(diagnostics, `${field}.globs`, rule.globs, \"string\") &&\n\t\tisValid;\n\n\tif (!isOptionalProperty(rule, \"fallthrough\", \"boolean\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`the field \"fallthrough\", when present, should be a boolean.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\treturn isValid;\n};\n\nconst validateDefines =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tlet isValid = true;\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value === \"object\" && value !== null) {\n\t\t\tfor (const varName in value) {\n\t\t\t\t// some casting here to appease typescript\n\t\t\t\t// even though the value might not match the type\n\t\t\t\tif (typeof (value as Record<string, string>)[varName] !== \"string\") {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`The field \"${fieldPath}.${varName}\" should be a string but got ${JSON.stringify(\n\t\t\t\t\t\t\t(value as Record<string, string>)[varName]\n\t\t\t\t\t\t)}.`\n\t\t\t\t\t);\n\t\t\t\t\tisValid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (value !== undefined) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\t\tvalue\n\t\t\t\t\t)}.\\n`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t}\n\t\t}\n\n\t\tconst configDefines = Object.keys(config?.define ?? {});\n\n\t\t// If there are no top level vars then there is nothing to do here.\n\t\tif (configDefines.length > 0) {\n\t\t\tif (typeof value === \"object\" && value !== null) {\n\t\t\t\tconst configEnvDefines = config === undefined ? [] : Object.keys(value);\n\n\t\t\t\tfor (const varName of configDefines) {\n\t\t\t\t\tif (!(varName in value)) {\n\t\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t\t`\"define.${varName}\" exists at the top level, but not on \"${fieldPath}\".\\n` +\n\t\t\t\t\t\t\t\t`This is not what you probably want, since \"define\" configuration is not inherited by environments.\\n` +\n\t\t\t\t\t\t\t\t`Please add \"define.${varName}\" to \"env.${envName}\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const varName of configEnvDefines) {\n\t\t\t\t\tif (!configDefines.includes(varName)) {\n\t\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t\t`\"${varName}\" exists on \"env.${envName}\", but not on the top level.\\n` +\n\t\t\t\t\t\t\t\t`This is not what you probably want, since \"define\" configuration within environments can only override existing top level \"define\" configuration\\n` +\n\t\t\t\t\t\t\t\t`Please remove \"${fieldPath}.${varName}\", or add \"define.${varName}\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn isValid;\n\t};\n\nconst validateVars =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tlet isValid = true;\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\t\tconst configVars = Object.keys(config?.vars ?? {});\n\t\t// If there are no top level vars then there is nothing to do here.\n\t\tif (configVars.length > 0) {\n\t\t\tif (typeof value !== \"object\" || value === null) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\t\tvalue\n\t\t\t\t\t)}.\\n`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t} else {\n\t\t\t\tfor (const varName of configVars) {\n\t\t\t\t\tif (!(varName in value)) {\n\t\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t\t`\"vars.${varName}\" exists at the top level, but not on \"${fieldPath}\".\\n` +\n\t\t\t\t\t\t\t\t`This is not what you probably want, since \"vars\" configuration is not inherited by environments.\\n` +\n\t\t\t\t\t\t\t\t`Please add \"vars.${varName}\" to \"env.${envName}\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isValid;\n\t};\n\nconst validateBindingsProperty =\n\t(envName: string, validateBinding: ValidatorFn): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tlet isValid = true;\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (value !== undefined) {\n\t\t\t// Check the validity of the `value` as a bindings container.\n\t\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\t\tvalue\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t} else if (!hasProperty(value, \"bindings\")) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}\" is missing the required \"bindings\" property.`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t} else if (!Array.isArray(value.bindings)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}.bindings\" should be an array but got ${JSON.stringify(\n\t\t\t\t\t\tvalue.bindings\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < value.bindings.length; i++) {\n\t\t\t\t\tconst binding = value.bindings[i];\n\t\t\t\t\tconst bindingDiagnostics = new Diagnostics(\n\t\t\t\t\t\t`\"${fieldPath}.bindings[${i}]\": ${JSON.stringify(binding)}`\n\t\t\t\t\t);\n\t\t\t\t\tisValid =\n\t\t\t\t\t\tvalidateBinding(\n\t\t\t\t\t\t\tbindingDiagnostics,\n\t\t\t\t\t\t\t`${fieldPath}.bindings[${i}]`,\n\t\t\t\t\t\t\tbinding,\n\t\t\t\t\t\t\tconfig\n\t\t\t\t\t\t) && isValid;\n\t\t\t\t\tdiagnostics.addChild(bindingDiagnostics);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst configBindingNames = getBindingNames(\n\t\t\t\tconfig?.[field as keyof Environment]\n\t\t\t);\n\t\t\tif (isValid && configBindingNames.length > 0) {\n\t\t\t\t// If there are top level bindings then check that they all appear in the environment.\n\t\t\t\tconst envBindingNames = new Set(getBindingNames(value));\n\t\t\t\tconst missingBindings = configBindingNames.filter(\n\t\t\t\t\t(name) => !envBindingNames.has(name)\n\t\t\t\t);\n\t\t\t\tif (missingBindings.length > 0) {\n\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t`The following bindings are at the top level, but not on \"env.${envName}\".\\n` +\n\t\t\t\t\t\t\t`This is not what you probably want, since \"${field}\" configuration is not inherited by environments.\\n` +\n\t\t\t\t\t\t\t`Please add a binding for each to \"${fieldPath}.bindings\":\\n` +\n\t\t\t\t\t\t\tmissingBindings.map((name) => `- ${name}`).join(\"\\n\")\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isValid;\n\t};\n\nconst validateUnsafeSettings =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// unsafe.bindings\n\t\tif (hasProperty(value, \"bindings\") && value.bindings !== undefined) {\n\t\t\tconst validateBindingsFn = validateBindingsProperty(\n\t\t\t\tenvName,\n\t\t\t\tvalidateUnsafeBinding\n\t\t\t);\n\t\t\tconst valid = validateBindingsFn(diagnostics, field, value, config);\n\t\t\tif (!valid) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// unsafe.metadata\n\t\tif (\n\t\t\thasProperty(value, \"metadata\") &&\n\t\t\tvalue.metadata !== undefined &&\n\t\t\t(typeof value.metadata !== \"object\" ||\n\t\t\t\tvalue.metadata === null ||\n\t\t\t\tArray.isArray(value.metadata))\n\t\t) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}.metadata\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue.metadata\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// unsafe.capnp\n\t\tif (hasProperty(value, \"capnp\") && value.capnp !== undefined) {\n\t\t\tif (\n\t\t\t\ttypeof value.capnp !== \"object\" ||\n\t\t\t\tvalue.capnp === null ||\n\t\t\t\tArray.isArray(value.capnp)\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}.capnp\" should be an object but got ${JSON.stringify(\n\t\t\t\t\t\tvalue.capnp\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// validate whether they have a compiled_schema string. If they do, they should not use base_path or source_schemas\n\t\t\tif (hasProperty(value.capnp, \"compiled_schema\")) {\n\t\t\t\tif (\n\t\t\t\t\thasProperty(value.capnp, \"base_path\") ||\n\t\t\t\t\thasProperty(value.capnp, \"source_schemas\")\n\t\t\t\t) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`The field \"${fieldPath}.capnp\" cannot contain both \"compiled_schema\" and one of \"base_path\" or \"source_schemas\".`\n\t\t\t\t\t);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (typeof value.capnp.compiled_schema !== \"string\") {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`The field \"${fieldPath}.capnp.compiled_schema\", when present, should be a string but got ${JSON.stringify(\n\t\t\t\t\t\t\tvalue.capnp.compiled_schema\n\t\t\t\t\t\t)}.`\n\t\t\t\t\t);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// they don't have a compiled_schema property, so they must have both base_path and source_schemas\n\t\t\t\tif (!isRequiredProperty(value.capnp, \"base_path\", \"string\")) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`The field \"${fieldPath}.capnp.base_path\", when present, should be a string but got ${JSON.stringify(\n\t\t\t\t\t\t\tvalue.capnp.base_path\n\t\t\t\t\t\t)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!validateTypedArray(\n\t\t\t\t\t\tdiagnostics,\n\t\t\t\t\t\t`${fieldPath}.capnp.source_schemas`,\n\t\t\t\t\t\tvalue.capnp.source_schemas,\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\t\"bindings\",\n\t\t\t\"metadata\",\n\t\t\t\"capnp\",\n\t\t]);\n\n\t\treturn true;\n\t};\n\n/**\n * Check that the given field is a valid \"durable_object\" binding object.\n */\nconst validateDurableObjectBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be an object but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\t// Durable Object bindings must have a name and class_name, and optionally a script_name and an environment.\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(`binding should have a string \"name\" field.`);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"class_name\", \"string\")) {\n\t\tdiagnostics.errors.push(`binding should have a string \"class_name\" field.`);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"script_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`the field \"script_name\", when present, should be a string.`\n\t\t);\n\t\tisValid = false;\n\t}\n\t// environment requires a script_name\n\tif (!isOptionalProperty(value, \"environment\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`the field \"environment\", when present, should be a string.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (\"environment\" in value && !(\"script_name\" in value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`binding should have a \"script_name\" field if \"environment\" is present.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"class_name\",\n\t\t\"environment\",\n\t\t\"name\",\n\t\t\"script_name\",\n\t]);\n\n\treturn isValid;\n};\n\nconst workflowNameFormatMessage = `Workflow names must be 1-64 characters long, start with a letter, number, or underscore, and may only contain letters, numbers, underscores, or hyphens.`;\n\n/**\n * Check that the given field is a valid \"workflow\" binding object.\n */\nconst validateWorkflowBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"workflows\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t} else if (!isValidWorkflowName(value.name)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" binding \"name\" field is invalid. ${workflowNameFormatMessage}`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRequiredProperty(value, \"class_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"class_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isOptionalProperty(value, \"script_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"script_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isOptionalProperty(value, \"remote\", \"boolean\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a boolean \"remote\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"name\",\n\t\t\"class_name\",\n\t\t\"script_name\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateCflogfwdrObject: (env: string) => ValidatorFn =\n\t(envName) => (diagnostics, field, value, topLevelEnv) => {\n\t\t//validate the bindings property first, as this also validates that it's an object, etc.\n\t\tconst bindingsValidation = validateBindingsProperty(\n\t\t\tenvName,\n\t\t\tvalidateCflogfwdrBinding\n\t\t);\n\t\tif (!bindingsValidation(diagnostics, field, value, topLevelEnv)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst v = value as {\n\t\t\tbindings: [];\n\t\t\tschema: string | undefined;\n\t\t};\n\n\t\tif (v?.schema !== undefined) {\n\t\t\t// the user should not be using the old schema property, as we've migrated to unsafe.capnp.schema for consistency with the unsafe bindings\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" binding \"schema\" property has been replaced with the \"unsafe.capnp\" object, which expects a \"base_path\" and an array of \"source_schemas\" to compile, or a \"compiled_schema\" property.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\nconst validateCflogfwdrBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be an object but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(`binding should have a string \"name\" field.`);\n\t\tisValid = false;\n\t}\n\n\tif (!isRequiredProperty(value, \"destination\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`binding should have a string \"destination\" field.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"destination\",\n\t\t\"name\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateAssetsConfig: ValidatorFn = (diagnostics, field, value) => {\n\tif (value === undefined) {\n\t\treturn true;\n\t}\n\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object, but got value ${JSON.stringify(\n\t\t\t\tfield\n\t\t\t)} of type ${typeof value}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\n\t// ensure we validate all props before we show the validation errors\n\t// this way users have all the necessary info to fix all errors in one go\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"directory\",\n\t\t\t(value as Assets).directory,\n\t\t\t\"string\"\n\t\t) && isValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"binding\",\n\t\t\t(value as Assets).binding,\n\t\t\t\"string\"\n\t\t) && isValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"html_handling\",\n\t\t\t(value as Assets).html_handling,\n\t\t\t\"string\",\n\t\t\t[\n\t\t\t\t\"auto-trailing-slash\",\n\t\t\t\t\"force-trailing-slash\",\n\t\t\t\t\"drop-trailing-slash\",\n\t\t\t\t\"none\",\n\t\t\t]\n\t\t) && isValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"not_found_handling\",\n\t\t\t(value as Assets).not_found_handling,\n\t\t\t\"string\",\n\t\t\t[\"single-page-application\", \"404-page\", \"none\"]\n\t\t) && isValid;\n\n\tif ((value as Assets).run_worker_first !== undefined) {\n\t\tif (typeof (value as Assets).run_worker_first === \"boolean\") {\n\t\t\tisValid =\n\t\t\t\tvalidateOptionalProperty(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tfield,\n\t\t\t\t\t\"run_worker_first\",\n\t\t\t\t\t(value as Assets).run_worker_first,\n\t\t\t\t\t\"boolean\"\n\t\t\t\t) && isValid;\n\t\t} else if (Array.isArray((value as Assets).run_worker_first)) {\n\t\t\tisValid =\n\t\t\t\tvalidateOptionalTypedArray(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\t\"assets.run_worker_first\",\n\t\t\t\t\t(value as Assets).run_worker_first,\n\t\t\t\t\t\"string\"\n\t\t\t\t) && isValid;\n\t\t} else {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${field}.run_worker_first\" should be an array of strings or a boolean, but got ${JSON.stringify(\n\t\t\t\t\t(value as Assets).run_worker_first\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\t}\n\tisValid =\n\t\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\t\"directory\",\n\t\t\t\"binding\",\n\t\t\t\"html_handling\",\n\t\t\t\"not_found_handling\",\n\t\t\t\"run_worker_first\",\n\t\t]) && isValid;\n\n\treturn isValid;\n};\n\nconst validateNamedSimpleBinding =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\t\tdiagnostics.errors.push(`binding should have a string \"binding\" field.`);\n\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\t\tisValid = false;\n\t\t}\n\n\t\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\t\"binding\",\n\t\t\t\"remote\",\n\t\t]);\n\n\t\treturn isValid;\n\t};\n\nconst validateAIBinding =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\t\tdiagnostics.errors.push(`binding should have a string \"binding\" field.`);\n\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\t\tisValid = false;\n\t\t}\n\n\t\treturn isValid;\n\t};\n\nconst validateVersionMetadataBinding =\n\t(envName: string): ValidatorFn =>\n\t(diagnostics, field, value, config) => {\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\t\tdiagnostics.errors.push(`binding should have a string \"binding\" field.`);\n\t\t\tisValid = false;\n\t\t}\n\n\t\treturn isValid;\n\t};\n\n/**\n * Check that the given field is a valid \"unsafe\" binding object.\n *\n * TODO: further validation of known unsafe bindings.\n */\nconst validateUnsafeBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected ${field} to be an object but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\t// Unsafe bindings must have a name and type.\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(`binding should have a string \"name\" field.`);\n\t\tisValid = false;\n\t}\n\tif (isRequiredProperty(value, \"type\", \"string\")) {\n\t\tconst safeBindings = [\n\t\t\t\"plain_text\",\n\t\t\t\"secret_text\",\n\t\t\t\"json\",\n\t\t\t\"wasm_module\",\n\t\t\t\"data_blob\",\n\t\t\t\"text_blob\",\n\t\t\t\"browser\",\n\t\t\t\"ai\",\n\t\t\t\"kv_namespace\",\n\t\t\t\"durable_object_namespace\",\n\t\t\t\"d1_database\",\n\t\t\t\"r2_bucket\",\n\t\t\t\"service\",\n\t\t\t\"logfwdr\",\n\t\t\t\"mtls_certificate\",\n\t\t\t\"pipeline\",\n\t\t\t\"worker_loader\",\n\t\t\t\"vpc_service\",\n\t\t\t\"media\",\n\t\t];\n\n\t\tif (safeBindings.includes(value.type)) {\n\t\t\tdiagnostics.warnings.push(\n\t\t\t\t`The binding type \"${value.type}\" is directly supported by wrangler.\\n` +\n\t\t\t\t\t`Consider migrating this unsafe binding to a format for '${value.type}' bindings that is supported by wrangler for optimal support.\\n` +\n\t\t\t\t\t\"For more details, see https://developers.cloudflare.com/workers/cli-wrangler/configuration\"\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvalue.type === \"metadata\" &&\n\t\t\tisRequiredProperty(value, \"name\", \"string\")\n\t\t) {\n\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\"The deployment object in the metadata binding is now deprecated. \" +\n\t\t\t\t\t\"Please switch using the version_metadata binding for access to version specific fields: \" +\n\t\t\t\t\t\"https://developers.cloudflare.com/workers/runtime-apis/bindings/version-metadata\"\n\t\t\t);\n\t\t}\n\t} else {\n\t\tdiagnostics.errors.push(`binding should have a string \"type\" field.`);\n\t\tisValid = false;\n\t}\n\treturn isValid;\n};\n\n/**\n * Check that the given environment field is a valid array of bindings.\n */\nconst validateBindingArray =\n\t(envName: string, validateBinding: ValidatorFn): ValidatorFn =>\n\t(diagnostics, field, envValue, config) => {\n\t\tif (envValue === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\t\tif (!Array.isArray(envValue)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an array but got ${JSON.stringify(\n\t\t\t\t\tenvValue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tfor (let i = 0; i < envValue.length; i++) {\n\t\t\tisValid =\n\t\t\t\tvalidateBinding(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\t`${fieldPath}[${i}]`,\n\t\t\t\t\tenvValue[i],\n\t\t\t\t\tconfig\n\t\t\t\t) && isValid;\n\t\t}\n\t\tconst configValue = config?.[field as keyof Environment] as {\n\t\t\tbinding: unknown;\n\t\t}[];\n\t\tif (Array.isArray(configValue)) {\n\t\t\tconst configBindingNames = configValue.map((value) => value.binding);\n\t\t\t// If there are no top level bindings then there is nothing to do here.\n\t\t\tif (configBindingNames.length > 0) {\n\t\t\t\tconst envBindingNames = new Set(envValue.map((value) => value.binding));\n\t\t\t\tfor (const configBindingName of configBindingNames) {\n\t\t\t\t\tif (!envBindingNames.has(configBindingName)) {\n\t\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t\t`There is a ${field} binding with name \"${configBindingName}\" at the top level, but not on \"env.${envName}\".\\n` +\n\t\t\t\t\t\t\t\t`This is not what you probably want, since \"${field}\" configuration is not inherited by environments.\\n` +\n\t\t\t\t\t\t\t\t`Please add a binding for \"${configBindingName}\" to \"env.${envName}.${field}.bindings\".`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isValid;\n\t};\n\nfunction validateContainerApp(\n\tenvName: string,\n\ttopLevelName: string | undefined,\n\tconfigPath: string | undefined\n): ValidatorFn {\n\treturn (diagnostics, field, value, config) => {\n\t\tif (!value) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!Array.isArray(value)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"containers\" field should be an array, but got ${JSON.stringify(value)}`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const containerAppOptional of value) {\n\t\t\t// validate that either a name is set and is a string\n\t\t\tif (!isOptionalProperty(value, \"name\", \"string\")) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Field \"name\", when present, should be a string, but got ${JSON.stringify(value)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tvalidateRequiredProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"class_name\",\n\t\t\t\tcontainerAppOptional.class_name,\n\t\t\t\t\"string\"\n\t\t\t);\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"name\",\n\t\t\t\tcontainerAppOptional.name,\n\t\t\t\t\"string\"\n\t\t\t);\n\t\t\t// try and add a default name\n\t\t\tif (!containerAppOptional.name) {\n\t\t\t\t// we need topLevelName and a containers.class_name if containers.name is not defined\n\t\t\t\tif (\n\t\t\t\t\t!topLevelName ||\n\t\t\t\t\t!isOptionalProperty(containerAppOptional, \"class_name\", \"string\")\n\t\t\t\t) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`Must have either a top level \"name\" and \"containers.class_name\" field defined, or have field \"containers.name\" defined.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// if there is worker name defined but no name for this container app default to:\n\t\t\t\t// worker_name-class_name[-envName].\n\t\t\t\tlet name = `${topLevelName}-${containerAppOptional.class_name}`;\n\t\t\t\t// config is undefined when we are at the top level instead of in a named env\n\t\t\t\t// If we are in a named env, append it to the generated name\n\t\t\t\t// so that users can re-use container definitions between different envs without issue.\n\t\t\t\tname += config === undefined ? \"\" : `-${envName}`;\n\t\t\t\tcontainerAppOptional.name = name.toLowerCase().replace(/ /g, \"-\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!containerAppOptional.configuration?.image &&\n\t\t\t\t!containerAppOptional.image\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`\"containers.image\" field must be defined for each container app. This should be the path to your Dockerfile or an image URI pointing to the Cloudflare registry.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\"configuration\" in containerAppOptional) {\n\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t`\"containers.configuration\" is deprecated. Use top level \"containers\" fields instead. \"configuration.image\" should be \"image\", limits should be set via \"instance_type\".`\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\ttypeof containerAppOptional.configuration !== \"object\" ||\n\t\t\t\t\tArray.isArray(containerAppOptional.configuration)\n\t\t\t\t) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`\"containers.configuration\" should be an object`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tcontainerAppOptional.instance_type &&\n\t\t\t\t\t(containerAppOptional.configuration.disk !== undefined ||\n\t\t\t\t\t\tcontainerAppOptional.configuration.vcpu !== undefined ||\n\t\t\t\t\t\tcontainerAppOptional.configuration.memory_mib !== undefined)\n\t\t\t\t) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`Cannot set custom limits via \"containers.configuration\" and use preset \"instance_type\" limits at the same time.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"image_build_context\",\n\t\t\t\tcontainerAppOptional.image_build_context,\n\t\t\t\t\"string\"\n\t\t\t);\n\t\t\t// make sure both image fields is always set, because cloudchamber apply requires one and containers the other :(\n\t\t\tlet resolvedImage =\n\t\t\t\tcontainerAppOptional.image ?? containerAppOptional.configuration?.image;\n\t\t\tlet resolvedBuildContextPath: string | undefined = undefined;\n\t\t\ttry {\n\t\t\t\tif (isDockerfile(resolvedImage, configPath)) {\n\t\t\t\t\tconst baseDir = configPath ? path.dirname(configPath) : process.cwd();\n\n\t\t\t\t\tresolvedImage = path.resolve(baseDir, resolvedImage);\n\t\t\t\t\tresolvedBuildContextPath = containerAppOptional.image_build_context\n\t\t\t\t\t\t? path.resolve(baseDir, containerAppOptional.image_build_context)\n\t\t\t\t\t\t: path.dirname(resolvedImage);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err instanceof Error && err.message) {\n\t\t\t\t\tdiagnostics.errors.push(err.message);\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontainerAppOptional.image = resolvedImage;\n\t\t\tcontainerAppOptional.image_build_context = resolvedBuildContextPath;\n\n\t\t\t// Validate rollout related configuration\n\t\t\tif (containerAppOptional.rollout_step_percentage !== undefined) {\n\t\t\t\tconst rolloutStep = containerAppOptional.rollout_step_percentage;\n\n\t\t\t\tif (typeof rolloutStep === \"number\") {\n\t\t\t\t\t// If it's a number, it must be one of the allowed values\n\t\t\t\t\tconst allowedSingleValues = [5, 10, 20, 25, 50, 100];\n\t\t\t\t\tif (!allowedSingleValues.includes(rolloutStep)) {\n\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t`\"containers.rollout_step_percentage\" must be one of [5, 10, 20, 25, 50, 100], but got ${rolloutStep}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (Array.isArray(rolloutStep)) {\n\t\t\t\t\t// If it's an array, validate each step and ensure they sum to 100\n\t\t\t\t\tconst nonNumber: unknown[] = [];\n\t\t\t\t\tconst outOfRange: number[] = [];\n\t\t\t\t\tlet index = 0;\n\t\t\t\t\tlet ascending = true;\n\t\t\t\t\tfor (const step of rolloutStep) {\n\t\t\t\t\t\tif (typeof step !== \"number\") {\n\t\t\t\t\t\t\tnonNumber.push(step);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (step < 10 || step > 100) {\n\t\t\t\t\t\t\t\toutOfRange.push(step);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (ascending && index > 0 && step < rolloutStep[index - 1]) {\n\t\t\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t\t\t`\"containers.rollout_step_percentage\" array elements must be in ascending order, but got \"${rolloutStep}\"`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tascending = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (index === rolloutStep.length - 1 && step !== 100) {\n\t\t\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t\t\t`The final step in \"containers.rollout_step_percentage\" must be 100, but got \"${step}\"`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nonNumber.length) {\n\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t`\"containers.rollout_step_percentage\" array elements must be numbers, but got \"${nonNumber.join(\", \")}\"`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (outOfRange.length) {\n\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t`\"containers.rollout_step_percentage\" array elements must be between 10 and 100, but got \"${outOfRange.join(\", \")}\"`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`\"containers.rollout_step_percentage\" must be a number or array of numbers, but got \"${rolloutStep}\"`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"rollout_kind\",\n\t\t\t\tcontainerAppOptional.rollout_kind,\n\t\t\t\t\"string\",\n\t\t\t\t[\"full_auto\", \"full_manual\", \"none\"]\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\t!isOptionalProperty(\n\t\t\t\t\tcontainerAppOptional,\n\t\t\t\t\t\"rollout_active_grace_period\",\n\t\t\t\t\t\"number\"\n\t\t\t\t) ||\n\t\t\t\tcontainerAppOptional.rollout_active_grace_period < 0\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`\"containers.rollout_active_grace_period\" field should be a positive number but got \"${containerAppOptional.rollout_active_grace_period}\"`\n\t\t\t\t);\n\t\t\t}\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"max_instances\",\n\t\t\t\tcontainerAppOptional.max_instances,\n\t\t\t\t\"number\"\n\t\t\t);\n\t\t\tif (\n\t\t\t\tcontainerAppOptional.max_instances !== undefined &&\n\t\t\t\tcontainerAppOptional.max_instances < 0\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`\"containers.max_instances\" field should be a positive number, but got ${containerAppOptional.max_instances}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Validate rollout steps vs max_instances\n\t\t\tif (\n\t\t\t\tcontainerAppOptional.rollout_step_percentage !== undefined &&\n\t\t\t\tcontainerAppOptional.max_instances !== undefined &&\n\t\t\t\tArray.isArray(containerAppOptional.rollout_step_percentage)\n\t\t\t) {\n\t\t\t\tconst rolloutStepsCount =\n\t\t\t\t\tcontainerAppOptional.rollout_step_percentage.length;\n\t\t\t\tif (rolloutStepsCount > containerAppOptional.max_instances) {\n\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t`\"containers.rollout_step_percentage\" cannot have more steps (${rolloutStepsCount}) than \"max_instances\" (${containerAppOptional.max_instances})`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"image_vars\",\n\t\t\t\tcontainerAppOptional.image_vars,\n\t\t\t\t\"object\"\n\t\t\t);\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"scheduling_policy\",\n\t\t\t\tcontainerAppOptional.scheduling_policy,\n\t\t\t\t\"string\",\n\t\t\t\t[\"regional\", \"moon\", \"default\"]\n\t\t\t);\n\n\t\t\t// Add deprecation warnings for legacy fields\n\t\t\tif (\"instances\" in containerAppOptional) {\n\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t`\"containers.instances\" is deprecated. Use \"containers.max_instances\" instead.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\"durable_objects\" in containerAppOptional) {\n\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t`\"containers.durable_objects\" is deprecated. Use the \"class_name\" field instead.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tvalidateAdditionalProperties(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\tObject.keys(containerAppOptional),\n\t\t\t\t[\n\t\t\t\t\t\"name\",\n\t\t\t\t\t\"instances\",\n\t\t\t\t\t\"max_instances\",\n\t\t\t\t\t\"image\",\n\t\t\t\t\t\"image_build_context\",\n\t\t\t\t\t\"image_vars\",\n\t\t\t\t\t\"class_name\",\n\t\t\t\t\t\"scheduling_policy\",\n\t\t\t\t\t\"instance_type\",\n\t\t\t\t\t\"configuration\",\n\t\t\t\t\t\"constraints\",\n\t\t\t\t\t\"affinities\",\n\t\t\t\t\t\"rollout_step_percentage\",\n\t\t\t\t\t\"rollout_kind\",\n\t\t\t\t\t\"durable_objects\",\n\t\t\t\t\t\"rollout_active_grace_period\",\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (\"configuration\" in containerAppOptional) {\n\t\t\t\tvalidateAdditionalProperties(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\t`${field}.configuration`,\n\t\t\t\t\tObject.keys(containerAppOptional.configuration),\n\t\t\t\t\t[\"image\", \"secrets\", \"labels\", \"disk\", \"vcpu\", \"memory_mib\"]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Instance Type validation: When present, the instance type should be either (1) a string\n\t\t\t// representing a predefined instance type or (2) an object that optionally defines vcpu,\n\t\t\t// memory, and disk.\n\t\t\t//\n\t\t\t// If an instance type is not set, a 'lite' instance type will be used. If a custom instance\n\t\t\t// type doesn't set a value, that value will default to the corresponding value in a 'dev'\n\t\t\t// instance type\n\t\t\tif (typeof containerAppOptional.instance_type === \"string\") {\n\t\t\t\t// validate named instance type\n\t\t\t\tvalidateOptionalProperty(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tfield,\n\t\t\t\t\t\"instance_type\",\n\t\t\t\t\tcontainerAppOptional.instance_type,\n\t\t\t\t\t\"string\",\n\t\t\t\t\tALLOWED_INSTANCE_TYPES\n\t\t\t\t);\n\t\t\t\tif (containerAppOptional.instance_type === \"dev\") {\n\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t`The \"dev\" instance_type has been renamed to \"lite\" and will be removed in a subsequent version. Please update your configuration to use \"lite\" instead.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (containerAppOptional.instance_type === \"standard\") {\n\t\t\t\t\tdiagnostics.warnings.push(\n\t\t\t\t\t\t`The \"standard\" instance_type has been renamed to \"standard-1\" and will be removed in a subsequent version. Please update your configuration to use \"standard-1\" instead.`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tvalidateOptionalProperty(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tfield,\n\t\t\t\t\t\"instance_type\",\n\t\t\t\t\tcontainerAppOptional.instance_type,\n\t\t\t\t\t\"object\"\n\t\t\t\t) &&\n\t\t\t\tcontainerAppOptional.instance_type\n\t\t\t) {\n\t\t\t\t// validate custom instance type\n\t\t\t\tconst instanceTypeProperties = [\"vcpu\", \"memory_mib\", \"disk_mb\"];\n\t\t\t\tinstanceTypeProperties.forEach((key) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isOptionalProperty(\n\t\t\t\t\t\t\tcontainerAppOptional.instance_type,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\"number\"\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t\t\t`\"containers.instance_type.${key}\", when present, should be a number.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvalidateAdditionalProperties(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\t`${field}.instance_type`,\n\t\t\t\t\tObject.keys(containerAppOptional.instance_type),\n\t\t\t\t\tinstanceTypeProperties\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (diagnostics.errors.length > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\nconst validateCloudchamberConfig: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"cloudchamber\" should be an object, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tconst optionalAttrsByType = {\n\t\tstring: [\"memory\", \"image\", \"location\"],\n\t\tboolean: [\"ipv4\"],\n\t\tnumber: [\"vcpu\"],\n\t};\n\n\tlet isValid = true;\n\tObject.entries(optionalAttrsByType).forEach(([attrType, attrNames]) => {\n\t\tattrNames.forEach((key) => {\n\t\t\tif (!isOptionalProperty(value, key, attrType as TypeofType)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`\"${field}\" bindings should, optionally, have a ${attrType} \"${key}\" field but got ${JSON.stringify(\n\t\t\t\t\t\tvalue\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t}\n\t\t});\n\t});\n\n\tif (\"instance_type\" in value && value.instance_type !== undefined) {\n\t\tif (\n\t\t\ttypeof value.instance_type !== \"string\" ||\n\t\t\t!ALLOWED_INSTANCE_TYPES.includes(value.instance_type)\n\t\t) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"instance_type\" should be one of 'lite', 'basic', 'standard-1', 'standard-2', 'standard-3', or 'standard-4', but got ${value.instance_type}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(\"memory\" in value && value.memory !== undefined) ||\n\t\t\t(\"vcpu\" in value && value.vcpu !== undefined)\n\t\t) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" configuration should not set either \"memory\" or \"vcpu\" with \"instance_type\"`\n\t\t\t);\n\t\t}\n\t}\n\n\treturn isValid;\n};\n\nconst validateKVBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"kv_namespaces\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// KV bindings must have a binding and id.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\t!isOptionalProperty(value, \"id\", \"string\") ||\n\t\t(value.id !== undefined && value.id.length === 0)\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"preview_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"preview_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"id\",\n\t\t\"preview_id\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateSendEmailBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"send_email\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// send email bindings must have a name.\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"destination_address\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"destination_address\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"allowed_destination_addresses\", \"object\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a []string \"allowed_destination_addresses\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"allowed_sender_addresses\", \"object\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a []string \"allowed_sender_addresses\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\t\"destination_address\" in value &&\n\t\t\"allowed_destination_addresses\" in value\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have either a \"destination_address\" or \"allowed_destination_addresses\" field, but not both.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"allowed_sender_addresses\",\n\t\t\"allowed_destination_addresses\",\n\t\t\"destination_address\",\n\t\t\"name\",\n\t\t\"binding\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateQueueBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"queue\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tif (\n\t\t!validateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\t\"binding\",\n\t\t\t\"queue\",\n\t\t\t\"delivery_delay\",\n\t\t\t\"remote\",\n\t\t])\n\t) {\n\t\treturn false;\n\t}\n\n\t// Queue bindings must have a binding and queue.\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (\n\t\t!isRequiredProperty(value, \"queue\", \"string\") ||\n\t\t(value as { queue: string }).queue.length === 0\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"queue\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tconst options: {\n\t\tkey: string;\n\t\ttype: \"number\" | \"string\" | \"boolean\";\n\t}[] = [{ key: \"delivery_delay\", type: \"number\" }];\n\tfor (const optionalOpt of options) {\n\t\tif (!isOptionalProperty(value, optionalOpt.key, optionalOpt.type)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" should, optionally, have a ${optionalOpt.type} \"${\n\t\t\t\t\toptionalOpt.key\n\t\t\t\t}\" field but got ${JSON.stringify(value)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\treturn isValid;\n};\n\nconst validateR2Binding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"r2_buckets\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// R2 bindings must have a binding and bucket_name.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\t!isOptionalProperty(value, \"bucket_name\", \"string\") ||\n\t\t(value.bucket_name !== undefined && value.bucket_name.length === 0)\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"bucket_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\tisValid &&\n\t\thasProperty(value, \"bucket_name\") &&\n\t\t!isValidR2BucketName(value.bucket_name)\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`${field}.bucket_name=${JSON.stringify(value.bucket_name)} is invalid. ${bucketFormatMessage}`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isOptionalProperty(value, \"preview_bucket_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"preview_bucket_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\tisValid &&\n\t\thasProperty(value, \"preview_bucket_name\") &&\n\t\t!isValidR2BucketName(value.preview_bucket_name)\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`${field}.preview_bucket_name= ${JSON.stringify(value.preview_bucket_name)} is invalid. ${bucketFormatMessage}`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isOptionalProperty(value, \"jurisdiction\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"jurisdiction\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"bucket_name\",\n\t\t\"preview_bucket_name\",\n\t\t\"jurisdiction\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateD1Binding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"d1_databases\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\n\t// D1 databases must have a binding and either a database_name or database_id.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"database_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a \"database_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"preview_database_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"preview_database_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"database_id\",\n\t\t\"database_internal_env\",\n\t\t\"database_name\",\n\t\t\"migrations_dir\",\n\t\t\"migrations_table\",\n\t\t\"preview_database_id\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateVectorizeBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"vectorize\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Vectorize bindings must have a binding and a project.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"index_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have an \"index_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"index_name\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateHyperdriveBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"hyperdrive\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Hyperdrive bindings must have a binding and a project.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a \"id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"id\",\n\t\t\"localConnectionString\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateVpcServiceBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"vpc_services\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// VPC service bindings must have a binding and a service_id.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"service_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a \"service_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"service_id\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\n/**\n * Check that bindings whose names might conflict, don't.\n *\n * We don't want to have, for example, a KV namespace named \"DATA\"\n * and a Durable Object also named \"DATA\". Then it would be ambiguous\n * what exactly would live at `env.DATA` (or in the case of service-workers,\n * the `DATA` global).\n */\nconst validateBindingsHaveUniqueNames = (\n\tdiagnostics: Diagnostics,\n\tconfig: Partial<Config>\n): boolean => {\n\tlet hasDuplicates = false;\n\n\tconst bindingNamesArray = Object.entries(friendlyBindingNames) as [\n\t\tkeyof CfWorkerInit[\"bindings\"],\n\t\tstring,\n\t][];\n\n\tconst bindingsGroupedByType = Object.fromEntries(\n\t\tbindingNamesArray.map(([bindingType, binding]) => [\n\t\t\tbinding,\n\t\t\tgetBindingNames(\n\t\t\t\tbindingType === \"queues\"\n\t\t\t\t\t? config[bindingType]?.producers\n\t\t\t\t\t: config[bindingType]\n\t\t\t),\n\t\t])\n\t);\n\n\tconst bindingsGroupedByName: Record<string, string[]> = {};\n\n\tfor (const bindingType in bindingsGroupedByType) {\n\t\tconst bindingNames = bindingsGroupedByType[bindingType];\n\n\t\tfor (const bindingName of bindingNames) {\n\t\t\tif (!(bindingName in bindingsGroupedByName)) {\n\t\t\t\tbindingsGroupedByName[bindingName] = [];\n\t\t\t}\n\n\t\t\tif (bindingName === \"ASSETS\" && isPagesConfig(config)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The name 'ASSETS' is reserved in Pages projects. Please use a different name for your ${bindingType} binding.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbindingsGroupedByName[bindingName].push(bindingType);\n\t\t}\n\t}\n\n\tfor (const bindingName in bindingsGroupedByName) {\n\t\tconst bindingTypes = bindingsGroupedByName[bindingName];\n\t\tif (bindingTypes.length < 2) {\n\t\t\t// there's only one (or zero) binding(s) with this name, which is fine, actually\n\t\t\tcontinue;\n\t\t}\n\n\t\thasDuplicates = true;\n\n\t\t// there's two types of duplicates we want to look for:\n\t\t// - bindings with the same name of the same type (e.g. two Durable Objects both named \"OBJ\")\n\t\t// - bindings with the same name of different types (a KV namespace and DO both named \"DATA\")\n\n\t\tconst sameType = bindingTypes\n\t\t\t// filter once to find duplicate binding types\n\t\t\t.filter((type, i) => bindingTypes.indexOf(type) !== i)\n\t\t\t// filter twice to only get _unique_ duplicate binding types\n\t\t\t.filter(\n\t\t\t\t(type, i, duplicateBindingTypes) =>\n\t\t\t\t\tduplicateBindingTypes.indexOf(type) === i\n\t\t\t);\n\n\t\tconst differentTypes = bindingTypes.filter(\n\t\t\t(type, i) => bindingTypes.indexOf(type) === i\n\t\t);\n\n\t\tif (differentTypes.length > 1) {\n\t\t\t// we have multiple different types using the same name\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`${bindingName} assigned to ${ENGLISH.format(differentTypes)} bindings.`\n\t\t\t);\n\t\t}\n\n\t\tsameType.forEach((bindingType) => {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`${bindingName} assigned to multiple ${bindingType} bindings.`\n\t\t\t);\n\t\t});\n\t}\n\n\tif (hasDuplicates) {\n\t\tconst problem =\n\t\t\t\"Bindings must have unique names, so that they can all be referenced in the worker.\";\n\t\tconst resolution = \"Please change your bindings to have unique names.\";\n\t\tdiagnostics.errors.push(`${problem}\\n${resolution}`);\n\t}\n\n\treturn !hasDuplicates;\n};\n\nconst validateServiceBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"services\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Service bindings must have a binding, a service, optionally an environment, and, optionally an entrypoint.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"service\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"service\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"environment\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"environment\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"entrypoint\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"entrypoint\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\treturn isValid;\n};\n\nconst validateAnalyticsEngineBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"analytics_engine\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Service bindings must have a binding and optional dataset.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\t!isOptionalProperty(value, \"dataset\", \"string\") ||\n\t\t(value as { dataset: string }).dataset?.length === 0\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should, optionally, have a string \"dataset\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"dataset\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateWorkerNamespaceBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" binding should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Worker namespace bindings must have a binding, and a namespace.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"namespace\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should have a string \"namespace\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (hasProperty(value, \"outbound\")) {\n\t\tif (\n\t\t\t!validateWorkerNamespaceOutbound(\n\t\t\t\tdiagnostics,\n\t\t\t\t`${field}.outbound`,\n\t\t\t\tvalue.outbound ?? {}\n\t\t\t)\n\t\t) {\n\t\t\tdiagnostics.errors.push(`\"${field}\" has an invalid outbound definition.`);\n\t\t\tisValid = false;\n\t\t}\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\treturn isValid;\n};\n\nfunction validateWorkerNamespaceOutbound(\n\tdiagnostics: Diagnostics,\n\tfield: string,\n\tvalue: DispatchNamespaceOutbound\n): boolean {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\n\t// Namespace outbounds need at least a service name\n\tisValid =\n\t\tisValid &&\n\t\tvalidateRequiredProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"service\",\n\t\t\tvalue.service,\n\t\t\t\"string\"\n\t\t);\n\tisValid =\n\t\tisValid &&\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"environment\",\n\t\t\tvalue.environment,\n\t\t\t\"string\"\n\t\t);\n\tisValid =\n\t\tisValid &&\n\t\tvalidateOptionalTypedArray(\n\t\t\tdiagnostics,\n\t\t\t`${field}.parameters`,\n\t\t\tvalue.parameters,\n\t\t\t\"string\"\n\t\t);\n\n\treturn isValid;\n}\n\nconst validateMTlsCertificateBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"mtls_certificates\" bindings should be objects, but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (\n\t\t!isRequiredProperty(value, \"certificate_id\", \"string\") ||\n\t\t(value as { certificate_id: string }).certificate_id.length === 0\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings should have a string \"certificate_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"certificate_id\",\n\t\t\"remote\",\n\t]);\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\treturn isValid;\n};\n\nfunction validateQueues(envName: string): ValidatorFn {\n\treturn (diagnostics, field, value, config) => {\n\t\tconst fieldPath =\n\t\t\tconfig === undefined ? `${field}` : `env.${envName}.${field}`;\n\n\t\tif (typeof value !== \"object\" || Array.isArray(value) || value === null) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`The field \"${fieldPath}\" should be an object but got ${JSON.stringify(\n\t\t\t\t\tvalue\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tlet isValid = true;\n\t\tif (\n\t\t\t!validateAdditionalProperties(\n\t\t\t\tdiagnostics,\n\t\t\t\tfieldPath,\n\t\t\t\tObject.keys(value),\n\t\t\t\t[\"consumers\", \"producers\"]\n\t\t\t)\n\t\t) {\n\t\t\tisValid = false;\n\t\t}\n\n\t\tif (hasProperty(value, \"consumers\")) {\n\t\t\tconst consumers = value.consumers;\n\t\t\tif (!Array.isArray(consumers)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`The field \"${fieldPath}.consumers\" should be an array but got ${JSON.stringify(\n\t\t\t\t\t\tconsumers\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tisValid = false;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < consumers.length; i++) {\n\t\t\t\tconst consumer = consumers[i];\n\t\t\t\tconst consumerPath = `${fieldPath}.consumers[${i}]`;\n\t\t\t\tif (!validateConsumer(diagnostics, consumerPath, consumer, config)) {\n\t\t\t\t\tisValid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasProperty(value, \"producers\")) {\n\t\t\tif (\n\t\t\t\t!validateBindingArray(envName, validateQueueBinding)(\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\t`${field}.producers`,\n\t\t\t\t\tvalue.producers,\n\t\t\t\t\tconfig\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tisValid = false;\n\t\t\t}\n\t\t}\n\n\t\treturn isValid;\n\t};\n}\n\nconst validateConsumer: ValidatorFn = (diagnostics, field, value, _config) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be a objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet isValid = true;\n\tif (\n\t\t!validateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\t\"queue\",\n\t\t\t\"type\",\n\t\t\t\"max_batch_size\",\n\t\t\t\"max_batch_timeout\",\n\t\t\t\"max_retries\",\n\t\t\t\"dead_letter_queue\",\n\t\t\t\"max_concurrency\",\n\t\t\t\"visibility_timeout_ms\",\n\t\t\t\"retry_delay\",\n\t\t])\n\t) {\n\t\tisValid = false;\n\t}\n\n\tif (!isRequiredProperty(value, \"queue\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should have a string \"queue\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t}\n\n\tconst options: {\n\t\tkey: string;\n\t\ttype: \"number\" | \"string\" | \"boolean\";\n\t}[] = [\n\t\t{ key: \"type\", type: \"string\" },\n\t\t{ key: \"max_batch_size\", type: \"number\" },\n\t\t{ key: \"max_batch_timeout\", type: \"number\" },\n\t\t{ key: \"max_retries\", type: \"number\" },\n\t\t{ key: \"dead_letter_queue\", type: \"string\" },\n\t\t{ key: \"max_concurrency\", type: \"number\" },\n\t\t{ key: \"visibility_timeout_ms\", type: \"number\" },\n\t\t{ key: \"retry_delay\", type: \"number\" },\n\t];\n\tfor (const optionalOpt of options) {\n\t\tif (!isOptionalProperty(value, optionalOpt.key, optionalOpt.type)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" should, optionally, have a ${optionalOpt.type} \"${\n\t\t\t\t\toptionalOpt.key\n\t\t\t\t}\" field but got ${JSON.stringify(value)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\t}\n\n\treturn isValid;\n};\n\nconst validateCompatibilityDate: ValidatorFn = (diagnostics, field, value) => {\n\tif (value === undefined) {\n\t\treturn true;\n\t}\n\n\tif (typeof value !== \"string\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`Expected \"${field}\" to be of type string but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn isValidDateTimeStringFormat(diagnostics, field, value);\n};\n\nconst validatePipelineBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"pipeline\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Pipeline bindings must have a binding and a pipeline.\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"pipeline\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"pipeline\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRemoteValid(value, field, diagnostics)) {\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"pipeline\",\n\t\t\"remote\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateSecretsStoreSecretBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"secrets_store_secrets\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\t// Secrets store bindings must have a binding, store_id, and secret_name\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"store_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"store_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (!isRequiredProperty(value, \"secret_name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"secret_name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"store_id\",\n\t\t\"secret_name\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateHelloWorldBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"unsafe_hello_world\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isOptionalProperty(value, \"enable_timer\", \"boolean\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a boolean \"enable_timer\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t\t\"enable_timer\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateWorkerLoaderBinding: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue\n) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"worker_loader\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"binding\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"binding\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"binding\",\n\t]);\n\n\treturn isValid;\n};\n\nconst validateRateLimitBinding: ValidatorFn = (diagnostics, field, value) => {\n\tif (typeof value !== \"object\" || value === null) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"ratelimits\" bindings should be objects, but got ${JSON.stringify(value)}`\n\t\t);\n\t\treturn false;\n\t}\n\tlet isValid = true;\n\tif (!isRequiredProperty(value, \"name\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"name\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\tif (!isRequiredProperty(value, \"namespace_id\", \"string\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a string \"namespace_id\" field but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t}\n\n\tif (\n\t\t!hasProperty(value, \"simple\") ||\n\t\ttypeof value.simple !== \"object\" ||\n\t\tvalue.simple === null\n\t) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" bindings must have a \"simple\" configuration object but got ${JSON.stringify(\n\t\t\t\tvalue\n\t\t\t)}.`\n\t\t);\n\t\tisValid = false;\n\t} else {\n\t\tif (!isRequiredProperty(value.simple, \"limit\", \"number\")) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" bindings \"simple.limit\" must be a number but got ${JSON.stringify(\n\t\t\t\t\tvalue.simple\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\t\tif (!isRequiredProperty(value.simple, \"period\", \"number\")) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" bindings \"simple.period\" is required and must be a number but got ${JSON.stringify(\n\t\t\t\t\tvalue.simple\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t} else if (![10, 60].includes(value.simple.period)) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`\"${field}\" bindings \"simple.period\" must be either 10 or 60 but got ${JSON.stringify(\n\t\t\t\t\tvalue.simple.period\n\t\t\t\t)}.`\n\t\t\t);\n\t\t\tisValid = false;\n\t\t}\n\n\t\tvalidateAdditionalProperties(\n\t\t\tdiagnostics,\n\t\t\t`${field}.simple`,\n\t\t\tObject.keys(value.simple),\n\t\t\t[\"limit\", \"period\"]\n\t\t);\n\t}\n\n\tvalidateAdditionalProperties(diagnostics, field, Object.keys(value), [\n\t\t\"name\",\n\t\t\"namespace_id\",\n\t\t\"simple\",\n\t]);\n\n\treturn isValid;\n};\n\nfunction normalizeAndValidateLimits(\n\tdiagnostics: Diagnostics,\n\ttopLevelEnv: Environment | undefined,\n\trawEnv: RawEnvironment\n): Config[\"limits\"] {\n\tif (rawEnv.limits) {\n\t\tvalidateRequiredProperty(\n\t\t\tdiagnostics,\n\t\t\t\"limits\",\n\t\t\t\"cpu_ms\",\n\t\t\trawEnv.limits.cpu_ms,\n\t\t\t\"number\"\n\t\t);\n\t}\n\n\treturn inheritable(\n\t\tdiagnostics,\n\t\ttopLevelEnv,\n\t\trawEnv,\n\t\t\"limits\",\n\t\t() => true,\n\t\tundefined\n\t);\n}\n\n/**\n * Validate the `migrations` configuration and return the normalized values.\n */\nconst validateMigrations: ValidatorFn = (diagnostics, field, value) => {\n\tconst rawMigrations = value ?? [];\n\tif (!Array.isArray(rawMigrations)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`The optional \"${field}\" field should be an array, but got ${JSON.stringify(\n\t\t\t\trawMigrations\n\t\t\t)}`\n\t\t);\n\t\treturn false;\n\t}\n\n\tlet valid = true;\n\tfor (let i = 0; i < rawMigrations.length; i++) {\n\t\tconst {\n\t\t\ttag,\n\t\t\tnew_classes,\n\t\t\tnew_sqlite_classes,\n\t\t\trenamed_classes,\n\t\t\tdeleted_classes,\n\t\t\ttransferred_classes,\n\t\t\t...rest\n\t\t} = rawMigrations[i];\n\n\t\tvalid =\n\t\t\tvalidateAdditionalProperties(\n\t\t\t\tdiagnostics,\n\t\t\t\t\"migrations\",\n\t\t\t\tObject.keys(rest),\n\t\t\t\t[]\n\t\t\t) && valid;\n\n\t\tvalid =\n\t\t\tvalidateRequiredProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\t`migrations[${i}]`,\n\t\t\t\t`tag`,\n\t\t\t\ttag,\n\t\t\t\t\"string\"\n\t\t\t) && valid;\n\n\t\tvalid =\n\t\t\tvalidateOptionalTypedArray(\n\t\t\t\tdiagnostics,\n\t\t\t\t`migrations[${i}].new_classes`,\n\t\t\t\tnew_classes,\n\t\t\t\t\"string\"\n\t\t\t) && valid;\n\n\t\tvalid =\n\t\t\tvalidateOptionalTypedArray(\n\t\t\t\tdiagnostics,\n\t\t\t\t`migrations[${i}].new_sqlite_classes`,\n\t\t\t\tnew_sqlite_classes,\n\t\t\t\t\"string\"\n\t\t\t) && valid;\n\n\t\tif (renamed_classes !== undefined) {\n\t\t\tif (!Array.isArray(renamed_classes)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Expected \"migrations[${i}].renamed_classes\" to be an array of \"{from: string, to: string}\" objects but got ${JSON.stringify(\n\t\t\t\t\t\trenamed_classes\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tvalid = false;\n\t\t\t} else if (\n\t\t\t\trenamed_classes.some(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\ttypeof c !== \"object\" ||\n\t\t\t\t\t\t!isRequiredProperty(c, \"from\", \"string\") ||\n\t\t\t\t\t\t!isRequiredProperty(c, \"to\", \"string\")\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Expected \"migrations[${i}].renamed_classes\" to be an array of \"{from: string, to: string}\" objects but got ${JSON.stringify(\n\t\t\t\t\t\trenamed_classes\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\n\t\tif (transferred_classes !== undefined) {\n\t\t\tif (!Array.isArray(transferred_classes)) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Expected \"migrations[${i}].transferred_classes\" to be an array of \"{from: string, from_script: string, to: string}\" objects but got ${JSON.stringify(\n\t\t\t\t\t\ttransferred_classes\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tvalid = false;\n\t\t\t} else if (\n\t\t\t\ttransferred_classes.some(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\ttypeof c !== \"object\" ||\n\t\t\t\t\t\t!isRequiredProperty(c, \"from\", \"string\") ||\n\t\t\t\t\t\t!isRequiredProperty(c, \"from_script\", \"string\") ||\n\t\t\t\t\t\t!isRequiredProperty(c, \"to\", \"string\")\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Expected \"migrations[${i}].transferred_classes\" to be an array of \"{from: string, from_script: string, to: string}\" objects but got ${JSON.stringify(\n\t\t\t\t\t\ttransferred_classes\n\t\t\t\t\t)}.`\n\t\t\t\t);\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\n\t\tvalid =\n\t\t\tvalidateOptionalTypedArray(\n\t\t\t\tdiagnostics,\n\t\t\t\t`migrations[${i}].deleted_classes`,\n\t\t\t\tdeleted_classes,\n\t\t\t\t\"string\"\n\t\t\t) && valid;\n\t}\n\treturn valid;\n};\n\nconst validateObservability: ValidatorFn = (diagnostics, field, value) => {\n\tif (value === undefined) {\n\t\treturn true;\n\t}\n\n\tif (typeof value !== \"object\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tconst val = value as Observability;\n\tlet isValid = true;\n\n\t/**\n\t * One of observability.enabled, observability.logs.enabled, observability.traces.enabled must be defined\n\t */\n\tisValid =\n\t\tvalidateAtLeastOnePropertyRequired(diagnostics, field, [\n\t\t\t{\n\t\t\t\tkey: \"enabled\",\n\t\t\t\tvalue: val.enabled,\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"logs.enabled\",\n\t\t\t\tvalue: val.logs?.enabled,\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"traces.enabled\",\n\t\t\t\tvalue: val.traces?.enabled,\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t]) && isValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"head_sampling_rate\",\n\t\t\tval.head_sampling_rate,\n\t\t\t\"number\"\n\t\t) && isValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(diagnostics, field, \"logs\", val.logs, \"object\") &&\n\t\tisValid;\n\n\tisValid =\n\t\tvalidateOptionalProperty(\n\t\t\tdiagnostics,\n\t\t\tfield,\n\t\t\t\"traces\",\n\t\t\tval.traces,\n\t\t\t\"object\"\n\t\t) && isValid;\n\n\tisValid =\n\t\tvalidateAdditionalProperties(diagnostics, field, Object.keys(val), [\n\t\t\t\"enabled\",\n\t\t\t\"head_sampling_rate\",\n\t\t\t\"logs\",\n\t\t\t\"traces\",\n\t\t]) && isValid;\n\n\t/**\n\t * Validate the optional nested logs configuration\n\t */\n\tif (typeof val.logs === \"object\") {\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"logs.enabled\",\n\t\t\t\tval.logs.enabled,\n\t\t\t\t\"boolean\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"logs.head_sampling_rate\",\n\t\t\t\tval.logs.head_sampling_rate,\n\t\t\t\t\"number\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"logs.invocation_logs\",\n\t\t\t\tval.logs.invocation_logs,\n\t\t\t\t\"boolean\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalTypedArray(\n\t\t\t\tdiagnostics,\n\t\t\t\t\"logs.destinations\",\n\t\t\t\tval.logs?.destinations,\n\t\t\t\t\"string\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"logs.persist\",\n\t\t\t\tval.logs.persist,\n\t\t\t\t\"boolean\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateAdditionalProperties(diagnostics, field, Object.keys(val.logs), [\n\t\t\t\t\"enabled\",\n\t\t\t\t\"head_sampling_rate\",\n\t\t\t\t\"invocation_logs\",\n\t\t\t\t\"destinations\",\n\t\t\t\t\"persist\",\n\t\t\t]) && isValid;\n\t}\n\n\t/**\n\t * Validate the optional nested traces configuration\n\t */\n\tif (typeof val.traces === \"object\") {\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"traces.enabled\",\n\t\t\t\tval.traces.enabled,\n\t\t\t\t\"boolean\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"traces.head_sampling_rate\",\n\t\t\t\tval.traces.head_sampling_rate,\n\t\t\t\t\"number\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalTypedArray(\n\t\t\t\tdiagnostics,\n\t\t\t\t\"traces.destinations\",\n\t\t\t\tval.traces?.destinations,\n\t\t\t\t\"string\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateOptionalProperty(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\t\"traces.persist\",\n\t\t\t\tval.traces.persist,\n\t\t\t\t\"boolean\"\n\t\t\t) && isValid;\n\n\t\tisValid =\n\t\t\tvalidateAdditionalProperties(\n\t\t\t\tdiagnostics,\n\t\t\t\tfield,\n\t\t\t\tObject.keys(val.traces),\n\t\t\t\t[\"enabled\", \"head_sampling_rate\", \"destinations\", \"persist\"]\n\t\t\t) && isValid;\n\t}\n\n\tconst samplingRate = val?.head_sampling_rate;\n\n\tif (samplingRate && (samplingRate < 0 || samplingRate > 1)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}.head_sampling_rate\" must be a value between 0 and 1.`\n\t\t);\n\t}\n\n\treturn isValid;\n};\n\nfunction warnIfDurableObjectsHaveNoMigrations(\n\tdiagnostics: Diagnostics,\n\tdurableObjects: Config[\"durable_objects\"],\n\tmigrations: Config[\"migrations\"],\n\tconfigPath: string | undefined\n) {\n\tif (\n\t\tArray.isArray(durableObjects.bindings) &&\n\t\tdurableObjects.bindings.length > 0\n\t) {\n\t\t// intrinsic [durable_objects] implies [migrations]\n\t\tconst exportedDurableObjects = (durableObjects.bindings || []).filter(\n\t\t\t(binding) => !binding.script_name\n\t\t);\n\t\tif (exportedDurableObjects.length > 0 && migrations.length === 0) {\n\t\t\tif (\n\t\t\t\t!exportedDurableObjects.some(\n\t\t\t\t\t(exportedDurableObject) =>\n\t\t\t\t\t\ttypeof exportedDurableObject.class_name !== \"string\"\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst durableObjectClassnames = exportedDurableObjects.map(\n\t\t\t\t\t(durable) => durable.class_name\n\t\t\t\t);\n\n\t\t\t\tdiagnostics.warnings.push(dedent`\n\t\t\t\tIn your ${configFileName(configPath)} file, you have configured \\`durable_objects\\` exported by this Worker (${durableObjectClassnames.join(\", \")}), but no \\`migrations\\` for them. This may not work as expected until you add a \\`migrations\\` section to your ${configFileName(configPath)} file. Add the following configuration:\n\n\t\t\t\t\\`\\`\\`\n\t\t\t\t${formatConfigSnippet(\n\t\t\t\t\t{\n\t\t\t\t\t\tmigrations: [{ tag: \"v1\", new_classes: durableObjectClassnames }],\n\t\t\t\t\t},\n\t\t\t\t\tconfigPath\n\t\t\t\t)}\n\t\t\t\t\\`\\`\\`\n\n\t\t\t\tRefer to https://developers.cloudflare.com/durable-objects/reference/durable-objects-migrations/ for more details.`);\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst validatePythonModules: ValidatorFn = (\n\tdiagnostics,\n\tfield,\n\tvalue,\n\ttopLevelEnv\n) => {\n\tif (value === undefined) {\n\t\treturn true;\n\t}\n\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${field}\" should be an object but got ${JSON.stringify(value)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\tconst val = value as { exclude?: unknown };\n\tif (!(\"exclude\" in val)) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\t!isStringArray(diagnostics, `${field}.exclude`, val.exclude, topLevelEnv)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nfunction isRemoteValid(\n\ttargetObject: object,\n\tfieldPath: string,\n\tdiagnostics: Diagnostics\n) {\n\tif (!isOptionalProperty(targetObject, \"remote\", \"boolean\")) {\n\t\tdiagnostics.errors.push(\n\t\t\t`\"${fieldPath}\" should, optionally, have a boolean \"remote\" field but got ${JSON.stringify(\n\t\t\t\ttargetObject\n\t\t\t)}.`\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * Pages now supports configuration via a Wrangler configuration file. As opposed to\n * Workers however, Pages only supports a limited subset of all available\n * configuration keys.\n *\n * This file contains all Wrangler configuration file validation things, specific to\n * Pages.\n */\n\nimport { FatalError } from \"../errors\";\nimport { defaultWranglerConfig } from \"./config\";\nimport { Diagnostics } from \"./diagnostics\";\nimport { isRequiredProperty } from \"./validation-helpers\";\nimport type { Config } from \"./config\";\n\nconst supportedPagesConfigFields = [\n\t\"pages_build_output_dir\",\n\t\"name\",\n\t\"compatibility_date\",\n\t\"compatibility_flags\",\n\t\"send_metrics\",\n\t\"no_bundle\",\n\t\"limits\",\n\t\"placement\",\n\t\"vars\",\n\t\"durable_objects\",\n\t\"kv_namespaces\",\n\t\"queues\", // `producers` ONLY\n\t\"r2_buckets\",\n\t\"d1_databases\",\n\t\"vectorize\",\n\t\"hyperdrive\",\n\t\"services\",\n\t\"analytics_engine_datasets\",\n\t\"ai\",\n\t\"version_metadata\",\n\t\"dev\",\n\t\"mtls_certificates\",\n\t\"browser\",\n\t\"upload_source_maps\",\n\t// normalizeAndValidateConfig() sets these values\n\t\"configPath\",\n\t\"userConfigPath\",\n\t\"topLevelName\",\n\t\"definedEnvironments\",\n\t\"targetEnvironment\",\n] as const;\n\nexport function validatePagesConfig(\n\tconfig: Config,\n\tenvNames: string[],\n\tprojectName?: string\n): Diagnostics {\n\t// exhaustive check\n\tif (!config.pages_build_output_dir) {\n\t\tthrow new FatalError(`Attempting to validate Pages configuration file, but \"pages_build_output_dir\" field was not found.\n\t\t\"pages_build_output_dir\" is required for Pages projects.`);\n\t}\n\n\tconst diagnostics = new Diagnostics(\n\t\t`Running configuration file validation for Pages:`\n\t);\n\n\tvalidateMainField(config, diagnostics);\n\tvalidateProjectName(projectName, diagnostics);\n\tvalidatePagesEnvironmentNames(envNames, diagnostics);\n\tvalidateUnsupportedFields(config, diagnostics);\n\tvalidateDurableObjectBinding(config, diagnostics);\n\n\treturn diagnostics;\n}\n\n/**\n * Validate that configuration file doesn't specify \"main\", if\n * \"pages_build_output_dir\" is present\n */\nfunction validateMainField(config: Config, diagnostics: Diagnostics) {\n\tif (config.main !== undefined) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Configuration file cannot contain both both \"main\" and \"pages_build_output_dir\" configuration keys.\\n` +\n\t\t\t\t`Please use \"main\" if you are deploying a Worker, or \"pages_build_output_dir\" if you are deploying a Pages project.`\n\t\t);\n\t}\n}\n\n/**\n * Validate that \"name\" field is specified at the top-level\n */\nfunction validateProjectName(\n\tname: string | undefined,\n\tdiagnostics: Diagnostics\n) {\n\tif (name === undefined || name.trim() === \"\") {\n\t\tdiagnostics.errors.push(\n\t\t\t`Missing top-level field \"name\" in configuration file.\\n` +\n\t\t\t\t`Pages requires the name of your project to be configured at the top-level of your Wrangler configuration file. This is because, in Pages, environments target the same project.`\n\t\t);\n\t}\n}\n\n/**\n * Validate that no named-environments other than \"preview\" and \"production\"\n * were specified in the configuration file for Pages\n */\nfunction validatePagesEnvironmentNames(\n\tenvNames: string[],\n\tdiagnostics: Diagnostics\n) {\n\tif (!envNames?.length) {\n\t\treturn;\n\t}\n\n\tconst unsupportedPagesEnvNames = envNames.filter(\n\t\t(name) => name !== \"preview\" && name !== \"production\"\n\t);\n\n\tif (unsupportedPagesEnvNames.length > 0) {\n\t\tdiagnostics.errors.push(\n\t\t\t`Configuration file contains the following environment names that are not supported by Pages projects:\\n` +\n\t\t\t\t`${unsupportedPagesEnvNames.map((name) => `\"${name}\"`).join()}.\\n` +\n\t\t\t\t`The supported named-environments for Pages are \"preview\" and \"production\".`\n\t\t);\n\t}\n}\n\n/**\n * Check for configuration fields that are not supported by Pages via the\n * configuration file\n */\nfunction validateUnsupportedFields(config: Config, diagnostics: Diagnostics) {\n\tconst unsupportedFields = new Set(Object.keys(config) as Array<keyof Config>);\n\n\tfor (const field of supportedPagesConfigFields) {\n\t\t// Pages config supports `queues.producers` only. However, let's skip\n\t\t// that validation here and keep all diagnostics handling in one place.\n\t\t// This way we'll avoid breaking the config key logical grouping in\n\t\t// `supportedPagesConfigFields`, when writing the errors to stdout.\n\t\tif (field === \"queues\" && config.queues?.consumers?.length) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tunsupportedFields.delete(field);\n\t}\n\n\tfor (const field of unsupportedFields) {\n\t\t// check for unsupported fields with default values and exclude if found.\n\t\t// These were most likely set as part of `normalizeAndValidateConfig()`\n\t\t// processing, and not via the config file.\n\t\tif (\n\t\t\tconfig[field] === undefined ||\n\t\t\tJSON.stringify(config[field]) ===\n\t\t\t\tJSON.stringify(defaultWranglerConfig[field])\n\t\t) {\n\t\t\tunsupportedFields.delete(field);\n\t\t}\n\t}\n\n\tif (unsupportedFields.size > 0) {\n\t\tconst fields = Array.from(unsupportedFields.keys());\n\n\t\tfields.forEach((field) => {\n\t\t\tif (field === \"queues\" && config.queues?.consumers?.length) {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Configuration file for Pages projects does not support \"queues.consumers\"`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdiagnostics.errors.push(\n\t\t\t\t\t`Configuration file for Pages projects does not support \"${field}\"`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Validate the \"script_name\" field is specified for [[durable_objects.bindings]]\n *\n * This is necessary because Pages cannot define/deploy a DO itself today,\n * and so this needs to be done with a Worker.\n */\nfunction validateDurableObjectBinding(\n\tconfig: Config,\n\tdiagnostics: Diagnostics\n) {\n\tif (config.durable_objects.bindings.length > 0) {\n\t\tconst invalidBindings = config.durable_objects.bindings.filter(\n\t\t\t(binding) => !isRequiredProperty(binding, \"script_name\", \"string\")\n\t\t);\n\t\tif (invalidBindings.length > 0) {\n\t\t\tdiagnostics.errors.push(\n\t\t\t\t`Durable Objects bindings should specify a \"script_name\".\\n` +\n\t\t\t\t\t`Pages requires Durable Object bindings to specify the name of the Worker where the Durable Object is defined.`\n\t\t\t);\n\t\t}\n\t}\n}\n","export function assertNever(_value: never) {}\n","/**\n * Returns the date formatted as a compatibility date\n *\n * @param date\n * @returns The date as a `YYYY-MM-DD` string\n */\nexport function formatCompatibilityDate(date: Date): string {\n\treturn date.toISOString().slice(0, 10);\n}\n","import { assertNever } from \"./assert-never\";\nimport { FatalError } from \"./errors\";\nimport type { RawConfig } from \"./config\";\nimport type { WorkerMetadataBinding } from \"./types\";\n\n/**\n * Maps a set of bindings defined as worker metadata bindings (straight from the Cloudflare API) to bindings defined in the local format.\n *\n * @param bindings The set of worker metadata bindings to convert\n * @param accountId The ID of the account\n * @param complianceConfig The compliance region configuration\n * @returns A RawConfig object with its bindings populated based on the provided bindings\n */\nexport function mapWorkerMetadataBindings(\n\tbindings: WorkerMetadataBinding[]\n): RawConfig {\n\treturn (\n\t\tbindings\n\t\t\t.filter((binding) => (binding.type as string) !== \"secret_text\")\n\t\t\t// Combine the same types into {[type]: [binding]}\n\t\t\t.reduce((configObj, binding) => {\n\t\t\t\t// Some types have different names in wrangler.toml\n\t\t\t\t// I want the type safety of the binding being destructured after the case narrowing the union but type is unused\n\n\t\t\t\tswitch (binding.type) {\n\t\t\t\t\tcase \"plain_text\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.vars = {\n\t\t\t\t\t\t\t\t...(configObj.vars ?? {}),\n\t\t\t\t\t\t\t\t[binding.name]: binding.text,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"json\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.vars = {\n\t\t\t\t\t\t\t\t...(configObj.vars ?? {}),\n\t\t\t\t\t\t\t\tname: binding.name,\n\t\t\t\t\t\t\t\tjson: binding.json,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"kv_namespace\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.kv_namespaces = [\n\t\t\t\t\t\t\t\t...(configObj.kv_namespaces ?? []),\n\t\t\t\t\t\t\t\t{ id: binding.namespace_id, binding: binding.name },\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"durable_object_namespace\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.durable_objects = {\n\t\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\t\t...(configObj.durable_objects?.bindings ?? []),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: binding.name,\n\t\t\t\t\t\t\t\t\t\tclass_name: binding.class_name,\n\t\t\t\t\t\t\t\t\t\tscript_name: binding.script_name,\n\t\t\t\t\t\t\t\t\t\tenvironment: binding.environment,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"d1\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.d1_databases = [\n\t\t\t\t\t\t\t\t...(configObj.d1_databases ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tdatabase_id: binding.id,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"browser\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.browser = {\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ai\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.ai = {\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"images\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.images = {\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"media\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.media = {\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"r2_bucket\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.r2_buckets = [\n\t\t\t\t\t\t\t\t...(configObj.r2_buckets ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tbucket_name: binding.bucket_name,\n\t\t\t\t\t\t\t\t\tjurisdiction: binding.jurisdiction,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"secrets_store_secret\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.secrets_store_secrets = [\n\t\t\t\t\t\t\t\t...(configObj.secrets_store_secrets ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tstore_id: binding.store_id,\n\t\t\t\t\t\t\t\t\tsecret_name: binding.secret_name,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"unsafe_hello_world\": {\n\t\t\t\t\t\tconfigObj.unsafe_hello_world = [\n\t\t\t\t\t\t\t...(configObj.unsafe_hello_world ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tenable_timer: binding.enable_timer,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"service\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.services = [\n\t\t\t\t\t\t\t\t...(configObj.services ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tservice: binding.service,\n\t\t\t\t\t\t\t\t\tenvironment: binding.environment,\n\t\t\t\t\t\t\t\t\tentrypoint: binding.entrypoint,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"analytics_engine\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.analytics_engine_datasets = [\n\t\t\t\t\t\t\t\t...(configObj.analytics_engine_datasets ?? []),\n\t\t\t\t\t\t\t\t{ binding: binding.name, dataset: binding.dataset },\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"dispatch_namespace\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.dispatch_namespaces = [\n\t\t\t\t\t\t\t\t...(configObj.dispatch_namespaces ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tnamespace: binding.namespace,\n\t\t\t\t\t\t\t\t\t...(binding.outbound && {\n\t\t\t\t\t\t\t\t\t\toutbound: {\n\t\t\t\t\t\t\t\t\t\t\tservice: binding.outbound.worker.service,\n\t\t\t\t\t\t\t\t\t\t\tenvironment: binding.outbound.worker.environment,\n\t\t\t\t\t\t\t\t\t\t\tparameters:\n\t\t\t\t\t\t\t\t\t\t\t\tbinding.outbound.params?.map((p) => p.name) ?? [],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"logfwdr\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.logfwdr = {\n\t\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\t\t...(configObj.logfwdr?.bindings ?? []),\n\t\t\t\t\t\t\t\t\t{ name: binding.name, destination: binding.destination },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"wasm_module\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.wasm_modules = {\n\t\t\t\t\t\t\t\t...(configObj.wasm_modules ?? {}),\n\t\t\t\t\t\t\t\t[binding.name]: binding.part,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"text_blob\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.text_blobs = {\n\t\t\t\t\t\t\t\t...(configObj.text_blobs ?? {}),\n\t\t\t\t\t\t\t\t[binding.name]: binding.part,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"data_blob\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.data_blobs = {\n\t\t\t\t\t\t\t\t...(configObj.data_blobs ?? {}),\n\t\t\t\t\t\t\t\t[binding.name]: binding.part,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"secret_text\":\n\t\t\t\t\t\t// Ignore secrets\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"version_metadata\": {\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.version_metadata = {\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"send_email\": {\n\t\t\t\t\t\tconfigObj.send_email = [\n\t\t\t\t\t\t\t...(configObj.send_email ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: binding.name,\n\t\t\t\t\t\t\t\tdestination_address: binding.destination_address,\n\t\t\t\t\t\t\t\tallowed_destination_addresses:\n\t\t\t\t\t\t\t\t\tbinding.allowed_destination_addresses,\n\t\t\t\t\t\t\t\tallowed_sender_addresses: binding.allowed_sender_addresses,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"queue\":\n\t\t\t\t\t\tconfigObj.queues ??= { producers: [] };\n\t\t\t\t\t\tconfigObj.queues.producers = [\n\t\t\t\t\t\t\t...(configObj.queues.producers ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tqueue: binding.queue_name,\n\t\t\t\t\t\t\t\tdelivery_delay: binding.delivery_delay,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"vectorize\":\n\t\t\t\t\t\tconfigObj.vectorize = [\n\t\t\t\t\t\t\t...(configObj.vectorize ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tindex_name: binding.index_name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hyperdrive\":\n\t\t\t\t\t\tconfigObj.hyperdrive = [\n\t\t\t\t\t\t\t...(configObj.hyperdrive ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tid: binding.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mtls_certificate\":\n\t\t\t\t\t\tconfigObj.mtls_certificates = [\n\t\t\t\t\t\t\t...(configObj.mtls_certificates ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tcertificate_id: binding.certificate_id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"pipelines\":\n\t\t\t\t\t\tconfigObj.pipelines = [\n\t\t\t\t\t\t\t...(configObj.pipelines ?? []),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\tpipeline: binding.pipeline,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"assets\":\n\t\t\t\t\t\tthrow new FatalError(\n\t\t\t\t\t\t\t\"`wrangler init --from-dash` is not yet supported for Workers with Assets\"\n\t\t\t\t\t\t);\n\t\t\t\t\tcase \"inherit\":\n\t\t\t\t\t\tconfigObj.unsafe = {\n\t\t\t\t\t\t\tbindings: [...(configObj.unsafe?.bindings ?? []), binding],\n\t\t\t\t\t\t\tmetadata: configObj.unsafe?.metadata ?? undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"workflow\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.workflows = [\n\t\t\t\t\t\t\t\t...(configObj.workflows ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tname: binding.workflow_name,\n\t\t\t\t\t\t\t\t\tclass_name: binding.class_name,\n\t\t\t\t\t\t\t\t\tscript_name: binding.script_name,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"worker_loader\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.worker_loaders = [\n\t\t\t\t\t\t\t\t...(configObj.worker_loaders ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ratelimit\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.ratelimits = [\n\t\t\t\t\t\t\t\t...(configObj.ratelimits ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: binding.name,\n\t\t\t\t\t\t\t\t\tnamespace_id: binding.namespace_id,\n\t\t\t\t\t\t\t\t\tsimple: {\n\t\t\t\t\t\t\t\t\t\tlimit: binding.simple.limit,\n\t\t\t\t\t\t\t\t\t\tperiod: binding.simple.period,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"vpc_service\":\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfigObj.vpc_services = [\n\t\t\t\t\t\t\t\t...(configObj.vpc_services ?? []),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbinding: binding.name,\n\t\t\t\t\t\t\t\t\tservice_id: binding.service_id,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tconfigObj.unsafe = {\n\t\t\t\t\t\t\tbindings: [...(configObj.unsafe?.bindings ?? []), binding],\n\t\t\t\t\t\t\tmetadata: configObj.unsafe?.metadata ?? undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tassertNever(binding);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn configObj;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t}, {} as RawConfig)\n\t);\n}\n","import { ENVIRONMENT_TAG_PREFIX, SERVICE_TAG_PREFIX } from \"./constants\";\nimport { formatCompatibilityDate } from \"./format-compatibility-date\";\nimport { mapWorkerMetadataBindings } from \"./map-worker-metadata-bindings\";\nimport type { RawConfig } from \"./config\";\nimport type {\n\tCustomDomainRoute,\n\tRoute,\n\tZoneNameRoute,\n} from \"./config/environment\";\nimport type { ServiceMetadataRes, WorkerMetadata } from \"./types\";\n\ntype RoutesRes = {\n\tid: string;\n\tpattern: string;\n\tzone_name: string;\n\tscript: string;\n}[];\n\ntype CustomDomainsRes = {\n\tid: string;\n\tzone_id: string;\n\tzone_name: string;\n\thostname: string;\n\tservice: string;\n\tenvironment: string;\n\tcert_id: string;\n}[];\n\ntype WorkerSubdomainRes = {\n\tenabled: boolean;\n\tpreviews_enabled: boolean;\n};\ntype CronTriggersRes = {\n\tschedules: {\n\t\tcron: string;\n\t\tcreated_on: Date;\n\t\tmodified_on: Date;\n\t}[];\n};\n\nexport interface FullWorkerConfig {\n\tbindings: WorkerMetadata[\"bindings\"];\n\troutes: RoutesRes;\n\tcustomDomains: CustomDomainsRes;\n\tsubdomainStatus: WorkerSubdomainRes;\n\tserviceEnvMetadata: ServiceMetadataRes[\"default_environment\"];\n\tcronTriggers: CronTriggersRes;\n}\n\nfunction convertWorkerToWranglerConfig(\n\tworkerName: string,\n\tentrypoint: string,\n\t{\n\t\tbindings,\n\t\troutes,\n\t\tcustomDomains,\n\t\tsubdomainStatus,\n\t\tserviceEnvMetadata,\n\t\tcronTriggers,\n\t}: FullWorkerConfig\n): RawConfig {\n\tconst mappedBindings = mapWorkerMetadataBindings(bindings);\n\n\tconst durableObjectClassNames = bindings\n\t\t.filter((binding) => binding.type === \"durable_object_namespace\")\n\t\t.map(\n\t\t\t(durableObject) => (durableObject as { class_name: string }).class_name\n\t\t);\n\n\tconst allRoutes: Route[] = [\n\t\t...routes.map<ZoneNameRoute>((r) => ({\n\t\t\tpattern: r.pattern,\n\t\t\tzone_name: r.zone_name,\n\t\t})),\n\t\t...customDomains.map<CustomDomainRoute>((c) => ({\n\t\t\tpattern: c.hostname,\n\t\t\tzone_name: c.zone_name,\n\t\t\tcustom_domain: true,\n\t\t})),\n\t];\n\n\treturn {\n\t\tname: workerName,\n\t\tmain: entrypoint,\n\t\tworkers_dev: subdomainStatus.enabled,\n\t\tpreview_urls: subdomainStatus.previews_enabled,\n\t\tcompatibility_date:\n\t\t\tserviceEnvMetadata.script.compatibility_date ??\n\t\t\tformatCompatibilityDate(new Date()),\n\t\tcompatibility_flags: serviceEnvMetadata.script.compatibility_flags,\n\t\t...(allRoutes.length ? { routes: allRoutes } : {}),\n\t\tplacement:\n\t\t\tserviceEnvMetadata.script.placement_mode === \"smart\"\n\t\t\t\t? { mode: \"smart\" }\n\t\t\t\t: undefined,\n\t\tlimits: serviceEnvMetadata.script.limits,\n\t\t...(durableObjectClassNames.length\n\t\t\t? {\n\t\t\t\t\tmigrations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttag: serviceEnvMetadata.script.migration_tag,\n\t\t\t\t\t\t\tnew_classes: durableObjectClassNames,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(cronTriggers.schedules.length\n\t\t\t? {\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\tcrons: cronTriggers.schedules.map((scheduled) => scheduled.cron),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\ttail_consumers: serviceEnvMetadata.script.tail_consumers ?? undefined,\n\t\tobservability: serviceEnvMetadata.script.observability,\n\t\t...mappedBindings,\n\t};\n}\n\n/**\n * Given the information of multiple Workers (representing different environments),\n * construct a Wrangler config file for the application.\n */\nexport function constructWranglerConfig(\n\tworkerName: string,\n\tentrypoint: string,\n\tworkerOrWorkers: FullWorkerConfig | FullWorkerConfig[]\n): RawConfig {\n\tlet workers: FullWorkerConfig[];\n\tif (Array.isArray(workerOrWorkers)) {\n\t\tworkers = workerOrWorkers;\n\t} else {\n\t\tworkers = [workerOrWorkers];\n\t}\n\n\tconst topLevelEnv = workers.find(\n\t\t(w) =>\n\t\t\t!w.serviceEnvMetadata.script.tags?.some((t) =>\n\t\t\t\tt.startsWith(ENVIRONMENT_TAG_PREFIX)\n\t\t\t)\n\t);\n\tlet combinedConfig: RawConfig;\n\tif (topLevelEnv) {\n\t\tcombinedConfig = convertWorkerToWranglerConfig(\n\t\t\tworkerName,\n\t\t\tentrypoint,\n\t\t\ttopLevelEnv\n\t\t);\n\t} else {\n\t\t// Make a synthetic top level environment\n\t\tcombinedConfig = {\n\t\t\tname: workerName,\n\t\t\tmain: entrypoint,\n\t\t};\n\t}\n\n\tfor (const env of workers) {\n\t\tconst serviceTag = env.serviceEnvMetadata.script.tags?.find(\n\t\t\t(t) => t === `${SERVICE_TAG_PREFIX}${workerName}`\n\t\t);\n\t\tconst envTag = env.serviceEnvMetadata.script.tags?.find((t) =>\n\t\t\tt.startsWith(ENVIRONMENT_TAG_PREFIX)\n\t\t);\n\t\tif (serviceTag !== workerName || envTag === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst [_, envName] = envTag.split(\"=\");\n\t\tcombinedConfig.env ??= {};\n\t\tcombinedConfig.env[envName] = convertWorkerToWranglerConfig(\n\t\t\tworkerName,\n\t\t\tentrypoint,\n\t\t\tenv\n\t\t);\n\t}\n\treturn combinedConfig;\n}\n"]}
|