@nightintelligence/cloudflare-workers-utils 0.35.0-patch1 → 0.35.0-patch3

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.
Files changed (53) hide show
  1. package/dist/browser.mjs +2 -2
  2. package/dist/browser.mjs.map +1 -1
  3. package/dist/chunk-PAWJFY3S.mjs +6 -0
  4. package/dist/{chunk-6LYDFTTF.mjs.map → chunk-PAWJFY3S.mjs.map} +1 -1
  5. package/dist/compatibility-date.mjs +42 -2
  6. package/dist/compatibility-date.mjs.map +1 -1
  7. package/dist/compliance.mjs +2 -7
  8. package/dist/compliance.mjs.map +1 -1
  9. package/dist/docker-path.mjs +11 -3
  10. package/dist/docker-path.mjs.map +1 -1
  11. package/dist/errors.mjs +61 -2
  12. package/dist/errors.mjs.map +1 -1
  13. package/dist/fs-helpers.mjs +33 -2
  14. package/dist/fs-helpers.mjs.map +1 -1
  15. package/dist/global-wrangler-config-path.mjs +28 -3
  16. package/dist/global-wrangler-config-path.mjs.map +1 -1
  17. package/dist/index.mjs +54 -26280
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/local-env.mjs +5 -80
  20. package/dist/local-env.mjs.map +1 -1
  21. package/dist/metafile-esm.json +1 -1
  22. package/dist/prometheus-metrics.mjs +51 -2
  23. package/dist/prometheus-metrics.mjs.map +1 -1
  24. package/dist/test-helpers/index.mjs +7 -308
  25. package/dist/test-helpers/index.mjs.map +1 -1
  26. package/dist/zod-format.mjs +235 -2
  27. package/dist/zod-format.mjs.map +1 -1
  28. package/package.json +1 -1
  29. package/dist/chunk-3D4BXUZX.mjs +0 -54
  30. package/dist/chunk-3D4BXUZX.mjs.map +0 -1
  31. package/dist/chunk-4RE36JUD.mjs +0 -3160
  32. package/dist/chunk-4RE36JUD.mjs.map +0 -1
  33. package/dist/chunk-6LYDFTTF.mjs +0 -40
  34. package/dist/chunk-CPLEE7LH.mjs +0 -64
  35. package/dist/chunk-CPLEE7LH.mjs.map +0 -1
  36. package/dist/chunk-G5FCNCLK.mjs +0 -47
  37. package/dist/chunk-G5FCNCLK.mjs.map +0 -1
  38. package/dist/chunk-IGC3TZGH.mjs +0 -157
  39. package/dist/chunk-IGC3TZGH.mjs.map +0 -1
  40. package/dist/chunk-NXPJWJ2B.mjs +0 -180
  41. package/dist/chunk-NXPJWJ2B.mjs.map +0 -1
  42. package/dist/chunk-OPAKTV2K.mjs +0 -75
  43. package/dist/chunk-OPAKTV2K.mjs.map +0 -1
  44. package/dist/chunk-VKFVZ67V.mjs +0 -35
  45. package/dist/chunk-VKFVZ67V.mjs.map +0 -1
  46. package/dist/chunk-W7DIL5J2.mjs +0 -267
  47. package/dist/chunk-W7DIL5J2.mjs.map +0 -1
  48. package/dist/chunk-ZLUHKBEC.mjs +0 -44
  49. package/dist/chunk-ZLUHKBEC.mjs.map +0 -1
  50. package/dist/chunk-ZQ2EZEOC.mjs +0 -477
  51. package/dist/chunk-ZQ2EZEOC.mjs.map +0 -1
  52. package/dist/open-OYMIZX6T.mjs +0 -609
  53. package/dist/open-OYMIZX6T.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/exports.ts","../src/config/durable-object-exports.ts","../src/config/containers.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","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/error.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/util.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/date.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/primitive.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/extract.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/struct.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/parse.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/stringify.js","../../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/index.js","../src/parse.ts","../src/constants.ts","../../../node_modules/.pnpm/empathic@2.0.0/node_modules/empathic/resolve.mjs","../../../node_modules/.pnpm/empathic@2.0.0/node_modules/empathic/walk.mjs","../../../node_modules/.pnpm/empathic@2.0.0/node_modules/empathic/find.mjs","../src/config/config-helpers.ts","../src/config/index.ts"],"names":["exports","value","CharacterCodes","ParseOptions","path","skipUntil","parseString","parseValue","parseArray","edit","ScanError","SyntaxKind","parse","ParseErrorCode","format","endPtr","file","fsReadFileSync","resolve","dir","join","existsSync"],"mappings":"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GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;AAC5C,EAAAA,eAAAA,CAAeA,eAAAA,CAAe,GAAG,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA;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","file":"chunk-4RE36JUD.mjs","sourcesContent":["import type {\n\tDurableObjectExport,\n\tExports,\n\tWorkerEntrypointExport,\n} from \"./environment\";\n\nexport type ExportType = Exports[string][\"type\"];\n\nexport interface PartitionedExports {\n\t\"durable-object\": Record<string, DurableObjectExport>;\n\tworker: Record<string, WorkerEntrypointExport>;\n}\n\n/**\n * Entries with an unknown `type`, and entries that are not objects at all, are\n * reported by config validation. This lets us skip them rather than crash, so\n * that callers can run against a config that has failed validation.\n */\nfunction hasKnownExportType(entry: unknown): entry is Exports[string] {\n\tconst type = (entry as Exports[string] | null | undefined)?.type;\n\treturn type === \"durable-object\" || type === \"worker\";\n}\n\nexport function partitionExports(\n\texports: Exports | undefined\n): PartitionedExports {\n\tconst partitioned: PartitionedExports = {\n\t\t\"durable-object\": {},\n\t\tworker: {},\n\t};\n\n\tif (exports === undefined) {\n\t\treturn partitioned;\n\t}\n\n\tfor (const [name, entry] of Object.entries(exports)) {\n\t\tif (!hasKnownExportType(entry)) {\n\t\t\tcontinue;\n\t\t}\n\t\tpartitioned[entry.type][name] = entry;\n\t}\n\n\treturn partitioned;\n}\n","import { partitionExports } from \"./exports\";\nimport type { Config } from \"./config\";\nimport type { DurableObjectExport } from \"./environment\";\n\n/**\n * Returns a map of exports that are only of type \"durable-object\".\n */\nexport function getDurableObjectExports(\n\texports: Config[\"exports\"] | undefined\n): Record<string, DurableObjectExport> {\n\treturn partitionExports(exports)[\"durable-object\"];\n}\n\nexport function hasDurableObjectExports(\n\texports: Config[\"exports\"] | undefined\n): boolean {\n\treturn Object.keys(getDurableObjectExports(exports)).length > 0;\n}\n","import { getDurableObjectExports } from \"./durable-object-exports\";\nimport type { ContainerApp, Exports } from \"./environment\";\n\n/**\n * A container can be linked to a Durable Object from either direction:\n *\n * - the container names the class via `containers[].class_name`, or\n * - the Durable Object names the container via `exports[Class].container`.\n *\n * This returns the second direction as a lookup of container name to Durable\n * Object class name. Only live `durable-object` exports can attach a container,\n * so tombstones are ignored.\n *\n * When two exports name the same container the first wins. That is a config\n * error caught during validation, so the choice only affects which class a\n * rejected config reports.\n */\nexport function getContainerNameToClassNameMap(\n\texports: Exports | undefined\n): Map<string, string> {\n\tconst containerNameToClassName = new Map<string, string>();\n\n\tfor (const [className, entry] of Object.entries(\n\t\tgetDurableObjectExports(exports)\n\t)) {\n\t\tif (\n\t\t\t\"container\" in entry &&\n\t\t\ttypeof entry.container === \"string\" &&\n\t\t\t!containerNameToClassName.has(entry.container)\n\t\t) {\n\t\t\tcontainerNameToClassName.set(entry.container, className);\n\t\t}\n\t}\n\n\treturn containerNameToClassName;\n}\n\n/**\n * The Durable Object class a container backs, resolved from either direction of\n * the container/Durable Object link.\n *\n * Returns `undefined` when the container is not linked to a Durable Object at\n * all, which validation rejects.\n */\nexport function resolveContainerClassName(\n\tcontainer: Pick<ContainerApp, \"class_name\" | \"name\">,\n\texports: Exports | undefined\n): string | undefined {\n\tif (container.class_name !== undefined) {\n\t\treturn container.class_name;\n\t}\n\tif (container.name === undefined) {\n\t\treturn undefined;\n\t}\n\treturn getContainerNameToClassNameMap(exports).get(container.name);\n}\n\n/**\n * The set of Durable Object class names that have a container attached, resolved\n * from either direction of the container/Durable Object link.\n */\nexport function getContainerDurableObjectClassNames(\n\tcontainers: ContainerApp[] | undefined,\n\texports: Exports | undefined\n): Set<string> {\n\tconst classNames = new Set<string>();\n\n\tfor (const container of containers ?? []) {\n\t\tconst className = resolveContainerClassName(container, exports);\n\t\tif (className !== undefined) {\n\t\t\tclassNames.add(className);\n\t\t}\n\t}\n\n\treturn classNames;\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 * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nfunction getLineColFromPtr(string, ptr) {\n let lines = string.slice(0, ptr).split(/\\r\\n|\\n|\\r/g);\n return [lines.length, lines.pop().length + 1];\n}\nfunction makeCodeBlock(string, line, column) {\n let lines = string.split(/\\r\\n|\\n|\\r/g);\n let codeblock = '';\n let numberLen = (Math.log10(line + 1) | 0) + 1;\n for (let i = line - 1; i <= line + 1; i++) {\n let l = lines[i - 1];\n if (!l)\n continue;\n codeblock += i.toString().padEnd(numberLen, ' ');\n codeblock += ': ';\n codeblock += l;\n codeblock += '\\n';\n if (i === line) {\n codeblock += ' '.repeat(numberLen + column + 2);\n codeblock += '^\\n';\n }\n }\n return codeblock;\n}\nexport class TomlError extends Error {\n line;\n column;\n codeblock;\n constructor(message, options) {\n const [line, column] = getLineColFromPtr(options.toml, options.ptr);\n const codeblock = makeCodeBlock(options.toml, line, column);\n super(`Invalid TOML document: ${message}\\n\\n${codeblock}`, options);\n this.line = line;\n this.column = column;\n this.codeblock = codeblock;\n }\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { TomlError } from './error.js';\nfunction isEscaped(str, ptr) {\n let i = 0;\n while (str[ptr - ++i] === '\\\\')\n ;\n return --i && (i % 2);\n}\nexport function indexOfNewline(str, start = 0, end = str.length) {\n let idx = str.indexOf('\\n', start);\n if (str[idx - 1] === '\\r')\n idx--;\n return idx <= end ? idx : -1;\n}\nexport function skipComment(str, ptr) {\n for (let i = ptr; i < str.length; i++) {\n let c = str[i];\n if (c === '\\n')\n return i;\n if (c === '\\r' && str[i + 1] === '\\n')\n return i + 1;\n if ((c < '\\x20' && c !== '\\t') || c === '\\x7f') {\n throw new TomlError('control characters are not allowed in comments', {\n toml: str,\n ptr: ptr,\n });\n }\n }\n return str.length;\n}\nexport function skipVoid(str, ptr, banNewLines, banComments) {\n let c;\n while ((c = str[ptr]) === ' ' || c === '\\t' || (!banNewLines && (c === '\\n' || c === '\\r' && str[ptr + 1] === '\\n')))\n ptr++;\n return banComments || c !== '#'\n ? ptr\n : skipVoid(str, skipComment(str, ptr), banNewLines);\n}\nexport function skipUntil(str, ptr, sep, end, banNewLines = false) {\n if (!end) {\n ptr = indexOfNewline(str, ptr);\n return ptr < 0 ? str.length : ptr;\n }\n for (let i = ptr; i < str.length; i++) {\n let c = str[i];\n if (c === '#') {\n i = indexOfNewline(str, i);\n }\n else if (c === sep) {\n return i + 1;\n }\n else if (c === end || (banNewLines && (c === '\\n' || (c === '\\r' && str[i + 1] === '\\n')))) {\n return i;\n }\n }\n throw new TomlError('cannot find end of structure', {\n toml: str,\n ptr: ptr\n });\n}\nexport function getStringEnd(str, seek) {\n let first = str[seek];\n let target = first === str[seek + 1] && str[seek + 1] === str[seek + 2]\n ? str.slice(seek, seek + 3)\n : first;\n seek += target.length - 1;\n do\n seek = str.indexOf(target, ++seek);\n while (seek > -1 && first !== \"'\" && isEscaped(str, seek));\n if (seek > -1) {\n seek += target.length;\n if (target.length > 1) {\n if (str[seek] === first)\n seek++;\n if (str[seek] === first)\n seek++;\n }\n }\n return seek;\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nlet DATE_TIME_RE = /^(\\d{4}-\\d{2}-\\d{2})?[T ]?(?:(\\d{2}):\\d{2}:\\d{2}(?:\\.\\d+)?)?(Z|[-+]\\d{2}:\\d{2})?$/i;\nexport class TomlDate extends Date {\n #hasDate = false;\n #hasTime = false;\n #offset = null;\n constructor(date) {\n let hasDate = true;\n let hasTime = true;\n let offset = 'Z';\n if (typeof date === 'string') {\n let match = date.match(DATE_TIME_RE);\n if (match) {\n if (!match[1]) {\n hasDate = false;\n date = `0000-01-01T${date}`;\n }\n hasTime = !!match[2];\n // Make sure to use T instead of a space. Breaks in case of extreme values otherwise.\n hasTime && date[10] === ' ' && (date = date.replace(' ', 'T'));\n // Do not allow rollover hours.\n if (match[2] && +match[2] > 23) {\n date = '';\n }\n else {\n offset = match[3] || null;\n date = date.toUpperCase();\n if (!offset && hasTime)\n date += 'Z';\n }\n }\n else {\n date = '';\n }\n }\n super(date);\n if (!isNaN(this.getTime())) {\n this.#hasDate = hasDate;\n this.#hasTime = hasTime;\n this.#offset = offset;\n }\n }\n isDateTime() {\n return this.#hasDate && this.#hasTime;\n }\n isLocal() {\n return !this.#hasDate || !this.#hasTime || !this.#offset;\n }\n isDate() {\n return this.#hasDate && !this.#hasTime;\n }\n isTime() {\n return this.#hasTime && !this.#hasDate;\n }\n isValid() {\n return this.#hasDate || this.#hasTime;\n }\n toISOString() {\n let iso = super.toISOString();\n // Local Date\n if (this.isDate())\n return iso.slice(0, 10);\n // Local Time\n if (this.isTime())\n return iso.slice(11, 23);\n // Local DateTime\n if (this.#offset === null)\n return iso.slice(0, -1);\n // Offset DateTime\n if (this.#offset === 'Z')\n return iso;\n // This part is quite annoying: JS strips the original timezone from the ISO string representation\n // Instead of using a \"modified\" date and \"Z\", we restore the representation \"as authored\"\n let offset = (+(this.#offset.slice(1, 3)) * 60) + +(this.#offset.slice(4, 6));\n offset = this.#offset[0] === '-' ? offset : -offset;\n let offsetDate = new Date(this.getTime() - (offset * 60e3));\n return offsetDate.toISOString().slice(0, -1) + this.#offset;\n }\n static wrapAsOffsetDateTime(jsDate, offset = 'Z') {\n let date = new TomlDate(jsDate);\n date.#offset = offset;\n return date;\n }\n static wrapAsLocalDateTime(jsDate) {\n let date = new TomlDate(jsDate);\n date.#offset = null;\n return date;\n }\n static wrapAsLocalDate(jsDate) {\n let date = new TomlDate(jsDate);\n date.#hasTime = false;\n date.#offset = null;\n return date;\n }\n static wrapAsLocalTime(jsDate) {\n let date = new TomlDate(jsDate);\n date.#hasDate = false;\n date.#offset = null;\n return date;\n }\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { skipVoid } from './util.js';\nimport { TomlDate } from './date.js';\nimport { TomlError } from './error.js';\nlet INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\\d(_?\\d)*))$/;\nlet FLOAT_REGEX = /^[+-]?\\d(_?\\d)*(\\.\\d(_?\\d)*)?([eE][+-]?\\d(_?\\d)*)?$/;\nlet LEADING_ZERO = /^[+-]?0[0-9_]/;\nlet ESCAPE_REGEX = /^[0-9a-f]{4,8}$/i;\nlet ESC_MAP = {\n b: '\\b',\n t: '\\t',\n n: '\\n',\n f: '\\f',\n r: '\\r',\n '\"': '\"',\n '\\\\': '\\\\',\n};\nexport function parseString(str, ptr = 0, endPtr = str.length) {\n let isLiteral = str[ptr] === '\\'';\n let isMultiline = str[ptr++] === str[ptr] && str[ptr] === str[ptr + 1];\n if (isMultiline) {\n endPtr -= 2;\n if (str[ptr += 2] === '\\r')\n ptr++;\n if (str[ptr] === '\\n')\n ptr++;\n }\n let tmp = 0;\n let isEscape;\n let parsed = '';\n let sliceStart = ptr;\n while (ptr < endPtr - 1) {\n let c = str[ptr++];\n if (c === '\\n' || (c === '\\r' && str[ptr] === '\\n')) {\n if (!isMultiline) {\n throw new TomlError('newlines are not allowed in strings', {\n toml: str,\n ptr: ptr - 1,\n });\n }\n }\n else if ((c < '\\x20' && c !== '\\t') || c === '\\x7f') {\n throw new TomlError('control characters are not allowed in strings', {\n toml: str,\n ptr: ptr - 1,\n });\n }\n if (isEscape) {\n isEscape = false;\n if (c === 'u' || c === 'U') {\n // Unicode escape\n let code = str.slice(ptr, (ptr += (c === 'u' ? 4 : 8)));\n if (!ESCAPE_REGEX.test(code)) {\n throw new TomlError('invalid unicode escape', {\n toml: str,\n ptr: tmp,\n });\n }\n try {\n parsed += String.fromCodePoint(parseInt(code, 16));\n }\n catch {\n throw new TomlError('invalid unicode escape', {\n toml: str,\n ptr: tmp,\n });\n }\n }\n else if (isMultiline && (c === '\\n' || c === ' ' || c === '\\t' || c === '\\r')) {\n // Multiline escape\n ptr = skipVoid(str, ptr - 1, true);\n if (str[ptr] !== '\\n' && str[ptr] !== '\\r') {\n throw new TomlError('invalid escape: only line-ending whitespace may be escaped', {\n toml: str,\n ptr: tmp,\n });\n }\n ptr = skipVoid(str, ptr);\n }\n else if (c in ESC_MAP) {\n // Classic escape\n parsed += ESC_MAP[c];\n }\n else {\n throw new TomlError('unrecognized escape sequence', {\n toml: str,\n ptr: tmp,\n });\n }\n sliceStart = ptr;\n }\n else if (!isLiteral && c === '\\\\') {\n tmp = ptr - 1;\n isEscape = true;\n parsed += str.slice(sliceStart, tmp);\n }\n }\n return parsed + str.slice(sliceStart, endPtr - 1);\n}\nexport function parseValue(value, toml, ptr, integersAsBigInt) {\n // Constant values\n if (value === 'true')\n return true;\n if (value === 'false')\n return false;\n if (value === '-inf')\n return -Infinity;\n if (value === 'inf' || value === '+inf')\n return Infinity;\n if (value === 'nan' || value === '+nan' || value === '-nan')\n return NaN;\n // Avoid FP representation of -0\n if (value === '-0')\n return integersAsBigInt ? 0n : 0;\n // Numbers\n let isInt = INT_REGEX.test(value);\n if (isInt || FLOAT_REGEX.test(value)) {\n if (LEADING_ZERO.test(value)) {\n throw new TomlError('leading zeroes are not allowed', {\n toml: toml,\n ptr: ptr,\n });\n }\n value = value.replace(/_/g, '');\n let numeric = +value;\n if (isNaN(numeric)) {\n throw new TomlError('invalid number', {\n toml: toml,\n ptr: ptr,\n });\n }\n if (isInt) {\n if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {\n throw new TomlError('integer value cannot be represented losslessly', {\n toml: toml,\n ptr: ptr,\n });\n }\n if (isInt || integersAsBigInt === true)\n numeric = BigInt(value);\n }\n return numeric;\n }\n const date = new TomlDate(value);\n if (!date.isValid()) {\n throw new TomlError('invalid value', {\n toml: toml,\n ptr: ptr,\n });\n }\n return date;\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { parseString, parseValue } from './primitive.js';\nimport { parseArray, parseInlineTable } from './struct.js';\nimport { indexOfNewline, skipVoid, skipUntil, skipComment, getStringEnd } from './util.js';\nimport { TomlError } from './error.js';\nfunction sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {\n let value = str.slice(startPtr, endPtr);\n let commentIdx = value.indexOf('#');\n if (commentIdx > -1) {\n // The call to skipComment allows to \"validate\" the comment\n // (absence of control characters)\n skipComment(str, commentIdx);\n value = value.slice(0, commentIdx);\n }\n let trimmed = value.trimEnd();\n if (!allowNewLines) {\n let newlineIdx = value.indexOf('\\n', trimmed.length);\n if (newlineIdx > -1) {\n throw new TomlError('newlines are not allowed in inline tables', {\n toml: str,\n ptr: startPtr + newlineIdx\n });\n }\n }\n return [trimmed, commentIdx];\n}\nexport function extractValue(str, ptr, end, depth, integersAsBigInt) {\n if (depth === 0) {\n throw new TomlError('document contains excessively nested structures. aborting.', {\n toml: str,\n ptr: ptr\n });\n }\n let c = str[ptr];\n if (c === '[' || c === '{') {\n let [value, endPtr] = c === '['\n ? parseArray(str, ptr, depth, integersAsBigInt)\n : parseInlineTable(str, ptr, depth, integersAsBigInt);\n let newPtr = end ? skipUntil(str, endPtr, ',', end) : endPtr;\n if (endPtr - newPtr && end === '}') {\n let nextNewLine = indexOfNewline(str, endPtr, newPtr);\n if (nextNewLine > -1) {\n throw new TomlError('newlines are not allowed in inline tables', {\n toml: str,\n ptr: nextNewLine\n });\n }\n }\n return [value, newPtr];\n }\n let endPtr;\n if (c === '\"' || c === \"'\") {\n endPtr = getStringEnd(str, ptr);\n let parsed = parseString(str, ptr, endPtr);\n if (end) {\n endPtr = skipVoid(str, endPtr, end !== ']');\n if (str[endPtr] && str[endPtr] !== ',' && str[endPtr] !== end && str[endPtr] !== '\\n' && str[endPtr] !== '\\r') {\n throw new TomlError('unexpected character encountered', {\n toml: str,\n ptr: endPtr,\n });\n }\n endPtr += (+(str[endPtr] === ','));\n }\n return [parsed, endPtr];\n }\n endPtr = skipUntil(str, ptr, ',', end);\n let slice = sliceAndTrimEndOf(str, ptr, endPtr - (+(str[endPtr - 1] === ',')), end === ']');\n if (!slice[0]) {\n throw new TomlError('incomplete key-value declaration: no value specified', {\n toml: str,\n ptr: ptr\n });\n }\n if (end && slice[1] > -1) {\n endPtr = skipVoid(str, ptr + slice[1]);\n endPtr += +(str[endPtr] === ',');\n }\n return [\n parseValue(slice[0], str, ptr, integersAsBigInt),\n endPtr,\n ];\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { parseString } from './primitive.js';\nimport { extractValue } from './extract.js';\nimport { getStringEnd, indexOfNewline, skipComment, skipVoid } from './util.js';\nimport { TomlError } from './error.js';\nlet KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \\t]*$/;\nexport function parseKey(str, ptr, end = '=') {\n let dot = ptr - 1;\n let parsed = [];\n let endPtr = str.indexOf(end, ptr);\n if (endPtr < 0) {\n throw new TomlError('incomplete key-value: cannot find end of key', {\n toml: str,\n ptr: ptr,\n });\n }\n do {\n let c = str[ptr = ++dot];\n // If it's whitespace, ignore\n if (c !== ' ' && c !== '\\t') {\n // If it's a string\n if (c === '\"' || c === '\\'') {\n if (c === str[ptr + 1] && c === str[ptr + 2]) {\n throw new TomlError('multiline strings are not allowed in keys', {\n toml: str,\n ptr: ptr,\n });\n }\n let eos = getStringEnd(str, ptr);\n if (eos < 0) {\n throw new TomlError('unfinished string encountered', {\n toml: str,\n ptr: ptr,\n });\n }\n dot = str.indexOf('.', eos);\n let strEnd = str.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot);\n let newLine = indexOfNewline(strEnd);\n if (newLine > -1) {\n throw new TomlError('newlines are not allowed in keys', {\n toml: str,\n ptr: ptr + dot + newLine,\n });\n }\n if (strEnd.trimStart()) {\n throw new TomlError('found extra tokens after the string part', {\n toml: str,\n ptr: eos,\n });\n }\n if (endPtr < eos) {\n endPtr = str.indexOf(end, eos);\n if (endPtr < 0) {\n throw new TomlError('incomplete key-value: cannot find end of key', {\n toml: str,\n ptr: ptr,\n });\n }\n }\n parsed.push(parseString(str, ptr, eos));\n }\n else {\n // Normal raw key part consumption and validation\n dot = str.indexOf('.', ptr);\n let part = str.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot);\n if (!KEY_PART_RE.test(part)) {\n throw new TomlError('only letter, numbers, dashes and underscores are allowed in keys', {\n toml: str,\n ptr: ptr,\n });\n }\n parsed.push(part.trimEnd());\n }\n }\n // Until there's no more dot\n } while (dot + 1 && dot < endPtr);\n return [parsed, skipVoid(str, endPtr + 1, true, true)];\n}\nexport function parseInlineTable(str, ptr, depth, integersAsBigInt) {\n let res = {};\n let seen = new Set();\n let c;\n let comma = 0;\n ptr++;\n while ((c = str[ptr++]) !== '}' && c) {\n let err = { toml: str, ptr: ptr - 1 };\n if (c === '\\n') {\n throw new TomlError('newlines are not allowed in inline tables', err);\n }\n else if (c === '#') {\n throw new TomlError('inline tables cannot contain comments', err);\n }\n else if (c === ',') {\n throw new TomlError('expected key-value, found comma', err);\n }\n else if (c !== ' ' && c !== '\\t') {\n let k;\n let t = res;\n let hasOwn = false;\n let [key, keyEndPtr] = parseKey(str, ptr - 1);\n for (let i = 0; i < key.length; i++) {\n if (i)\n t = hasOwn ? t[k] : (t[k] = {});\n k = key[i];\n if ((hasOwn = Object.hasOwn(t, k)) && (typeof t[k] !== 'object' || seen.has(t[k]))) {\n throw new TomlError('trying to redefine an already defined value', {\n toml: str,\n ptr: ptr,\n });\n }\n if (!hasOwn && k === '__proto__') {\n Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });\n }\n }\n if (hasOwn) {\n throw new TomlError('trying to redefine an already defined value', {\n toml: str,\n ptr: ptr,\n });\n }\n let [value, valueEndPtr] = extractValue(str, keyEndPtr, '}', depth - 1, integersAsBigInt);\n seen.add(value);\n t[k] = value;\n ptr = valueEndPtr;\n comma = str[ptr - 1] === ',' ? ptr - 1 : 0;\n }\n }\n if (comma) {\n throw new TomlError('trailing commas are not allowed in inline tables', {\n toml: str,\n ptr: comma,\n });\n }\n if (!c) {\n throw new TomlError('unfinished table encountered', {\n toml: str,\n ptr: ptr,\n });\n }\n return [res, ptr];\n}\nexport function parseArray(str, ptr, depth, integersAsBigInt) {\n let res = [];\n let c;\n ptr++;\n while ((c = str[ptr++]) !== ']' && c) {\n if (c === ',') {\n throw new TomlError('expected value, found comma', {\n toml: str,\n ptr: ptr - 1,\n });\n }\n else if (c === '#')\n ptr = skipComment(str, ptr);\n else if (c !== ' ' && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n let e = extractValue(str, ptr - 1, ']', depth - 1, integersAsBigInt);\n res.push(e[0]);\n ptr = e[1];\n }\n }\n if (!c) {\n throw new TomlError('unfinished array encountered', {\n toml: str,\n ptr: ptr,\n });\n }\n return [res, ptr];\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { parseKey } from './struct.js';\nimport { extractValue } from './extract.js';\nimport { skipVoid } from './util.js';\nimport { TomlError } from './error.js';\nfunction peekTable(key, table, meta, type) {\n let t = table;\n let m = meta;\n let k;\n let hasOwn = false;\n let state;\n for (let i = 0; i < key.length; i++) {\n if (i) {\n t = hasOwn ? t[k] : (t[k] = {});\n m = (state = m[k]).c;\n if (type === 0 /* Type.DOTTED */ && (state.t === 1 /* Type.EXPLICIT */ || state.t === 2 /* Type.ARRAY */)) {\n return null;\n }\n if (state.t === 2 /* Type.ARRAY */) {\n let l = t.length - 1;\n t = t[l];\n m = m[l].c;\n }\n }\n k = key[i];\n if ((hasOwn = Object.hasOwn(t, k)) && m[k]?.t === 0 /* Type.DOTTED */ && m[k]?.d) {\n return null;\n }\n if (!hasOwn) {\n if (k === '__proto__') {\n Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });\n Object.defineProperty(m, k, { enumerable: true, configurable: true, writable: true });\n }\n m[k] = {\n t: i < key.length - 1 && type === 2 /* Type.ARRAY */\n ? 3 /* Type.ARRAY_DOTTED */\n : type,\n d: false,\n i: 0,\n c: {},\n };\n }\n }\n state = m[k];\n if (state.t !== type && !(type === 1 /* Type.EXPLICIT */ && state.t === 3 /* Type.ARRAY_DOTTED */)) {\n // Bad key type!\n return null;\n }\n if (type === 2 /* Type.ARRAY */) {\n if (!state.d) {\n state.d = true;\n t[k] = [];\n }\n t[k].push(t = {});\n state.c[state.i++] = (state = { t: 1 /* Type.EXPLICIT */, d: false, i: 0, c: {} });\n }\n if (state.d) {\n // Redefining a table!\n return null;\n }\n state.d = true;\n if (type === 1 /* Type.EXPLICIT */) {\n t = hasOwn ? t[k] : (t[k] = {});\n }\n else if (type === 0 /* Type.DOTTED */ && hasOwn) {\n return null;\n }\n return [k, t, state.c];\n}\nexport function parse(toml, { maxDepth = 1000, integersAsBigInt } = {}) {\n let res = {};\n let meta = {};\n let tbl = res;\n let m = meta;\n for (let ptr = skipVoid(toml, 0); ptr < toml.length;) {\n if (toml[ptr] === '[') {\n let isTableArray = toml[++ptr] === '[';\n let k = parseKey(toml, ptr += +isTableArray, ']');\n if (isTableArray) {\n if (toml[k[1] - 1] !== ']') {\n throw new TomlError('expected end of table declaration', {\n toml: toml,\n ptr: k[1] - 1,\n });\n }\n k[1]++;\n }\n let p = peekTable(k[0], res, meta, isTableArray ? 2 /* Type.ARRAY */ : 1 /* Type.EXPLICIT */);\n if (!p) {\n throw new TomlError('trying to redefine an already defined table or value', {\n toml: toml,\n ptr: ptr,\n });\n }\n m = p[2];\n tbl = p[1];\n ptr = k[1];\n }\n else {\n let k = parseKey(toml, ptr);\n let p = peekTable(k[0], tbl, m, 0 /* Type.DOTTED */);\n if (!p) {\n throw new TomlError('trying to redefine an already defined table or value', {\n toml: toml,\n ptr: ptr,\n });\n }\n let v = extractValue(toml, k[1], void 0, maxDepth, integersAsBigInt);\n p[1][p[0]] = v[0];\n ptr = v[1];\n }\n ptr = skipVoid(toml, ptr, true);\n if (toml[ptr] && toml[ptr] !== '\\n' && toml[ptr] !== '\\r') {\n throw new TomlError('each key-value declaration must be followed by an end-of-line', {\n toml: toml,\n ptr: ptr\n });\n }\n ptr = skipVoid(toml, ptr);\n }\n return res;\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nlet BARE_KEY = /^[a-z0-9-_]+$/i;\nfunction extendedTypeOf(obj) {\n let type = typeof obj;\n if (type === 'object') {\n if (Array.isArray(obj))\n return 'array';\n if (obj instanceof Date)\n return 'date';\n }\n return type;\n}\nfunction isArrayOfTables(obj) {\n for (let i = 0; i < obj.length; i++) {\n if (extendedTypeOf(obj[i]) !== 'object')\n return false;\n }\n return obj.length != 0;\n}\nfunction formatString(s) {\n return JSON.stringify(s).replace(/\\x7f/g, '\\\\u007f');\n}\nfunction stringifyValue(val, type, depth, numberAsFloat) {\n if (depth === 0) {\n throw new Error('Could not stringify the object: maximum object depth exceeded');\n }\n if (type === 'number') {\n if (isNaN(val))\n return 'nan';\n if (val === Infinity)\n return 'inf';\n if (val === -Infinity)\n return '-inf';\n if (numberAsFloat && Number.isInteger(val))\n return val.toFixed(1);\n return val.toString();\n }\n if (type === 'bigint' || type === 'boolean') {\n return val.toString();\n }\n if (type === 'string') {\n return formatString(val);\n }\n if (type === 'date') {\n if (isNaN(val.getTime())) {\n throw new TypeError('cannot serialize invalid date');\n }\n return val.toISOString();\n }\n if (type === 'object') {\n return stringifyInlineTable(val, depth, numberAsFloat);\n }\n if (type === 'array') {\n return stringifyArray(val, depth, numberAsFloat);\n }\n}\nfunction stringifyInlineTable(obj, depth, numberAsFloat) {\n let keys = Object.keys(obj);\n if (keys.length === 0)\n return '{}';\n let res = '{ ';\n for (let i = 0; i < keys.length; i++) {\n let k = keys[i];\n if (i)\n res += ', ';\n res += BARE_KEY.test(k) ? k : formatString(k);\n res += ' = ';\n res += stringifyValue(obj[k], extendedTypeOf(obj[k]), depth - 1, numberAsFloat);\n }\n return res + ' }';\n}\nfunction stringifyArray(array, depth, numberAsFloat) {\n if (array.length === 0)\n return '[]';\n let res = '[ ';\n for (let i = 0; i < array.length; i++) {\n if (i)\n res += ', ';\n if (array[i] === null || array[i] === void 0) {\n throw new TypeError('arrays cannot contain null or undefined values');\n }\n res += stringifyValue(array[i], extendedTypeOf(array[i]), depth - 1, numberAsFloat);\n }\n return res + ' ]';\n}\nfunction stringifyArrayTable(array, key, depth, numberAsFloat) {\n if (depth === 0) {\n throw new Error('Could not stringify the object: maximum object depth exceeded');\n }\n let res = '';\n for (let i = 0; i < array.length; i++) {\n res += `${res && '\\n'}[[${key}]]\\n`;\n res += stringifyTable(0, array[i], key, depth, numberAsFloat);\n }\n return res;\n}\nfunction stringifyTable(tableKey, obj, prefix, depth, numberAsFloat) {\n if (depth === 0) {\n throw new Error('Could not stringify the object: maximum object depth exceeded');\n }\n let preamble = '';\n let tables = '';\n let keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n let k = keys[i];\n if (obj[k] !== null && obj[k] !== void 0) {\n let type = extendedTypeOf(obj[k]);\n if (type === 'symbol' || type === 'function') {\n throw new TypeError(`cannot serialize values of type '${type}'`);\n }\n let key = BARE_KEY.test(k) ? k : formatString(k);\n if (type === 'array' && isArrayOfTables(obj[k])) {\n tables += (tables && '\\n') + stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);\n }\n else if (type === 'object') {\n let tblKey = prefix ? `${prefix}.${key}` : key;\n tables += (tables && '\\n') + stringifyTable(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);\n }\n else {\n preamble += key;\n preamble += ' = ';\n preamble += stringifyValue(obj[k], type, depth, numberAsFloat);\n preamble += '\\n';\n }\n }\n }\n if (tableKey && (preamble || !tables)) // Create table only if necessary\n preamble = preamble ? `[${tableKey}]\\n${preamble}` : `[${tableKey}]`;\n return preamble && tables\n ? `${preamble}\\n${tables}`\n : preamble || tables;\n}\nexport function stringify(obj, { maxDepth = 1000, numbersAsFloat = false } = {}) {\n if (extendedTypeOf(obj) !== 'object') {\n throw new TypeError('stringify can only be called with an object');\n }\n let str = stringifyTable(0, obj, '', maxDepth, numbersAsFloat);\n if (str[str.length - 1] !== '\\n')\n return str + '\\n';\n return str;\n}\n","/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nimport { parse } from './parse.js';\nimport { stringify } from './stringify.js';\nimport { TomlDate } from './date.js';\nimport { TomlError } from './error.js';\nexport default { parse, stringify, TomlDate, TomlError };\nexport { parse, stringify, TomlDate, TomlError };\n","import { readFileSync as fsReadFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport * as jsoncParser from \"jsonc-parser\";\nimport TOML, { TomlError } from \"smol-toml\";\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};\n\ntype MessageInit = Message & TelemetryMessage;\n\nexport type Location = ParseFile & {\n\tline: number;\n\tcolumn: number;\n\tlength?: number;\n\tlineText?: string;\n\tsuggestion?: string;\n};\n\nexport type ParseFile = {\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 }: MessageInit) {\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\t/**\n\t * Optional structured metadata hoisted from the first `FetchError.meta`\n\t * on the v4 response envelope. Consumers can inspect this to render\n\t * endpoint-specific structured error payloads.\n\t */\n\tmeta?: { details?: unknown } & Record<string, unknown>;\n\t/**\n\t * Optional number of milliseconds the API asked us to wait before retrying,\n\t * derived from the response's `Retry-After` header (if present).\n\t */\n\tretryAfterMs?: number;\n\n\tconstructor({\n\t\tstatus,\n\t\tretryAfterMs,\n\t\t...rest\n\t}: MessageInit & { status?: number; retryAfterMs?: number }) {\n\t\tsuper(rest);\n\t\tthis.name = this.constructor.name;\n\t\tthis.#status = status;\n\t\tthis.retryAfterMs = retryAfterMs;\n\t}\n\n\tget status(): number | undefined {\n\t\treturn this.#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\n/**\n * Parses a TOML string to an object.\n *\n * Note: throws a `ParseError` if parsing fails.\n *\n * @param tomlContent The TOML content to parse.\n * @param filePath Optional file path for error reporting.\n * @returns The parsed TOML object.\n */\nexport function parseTOML(tomlContent: string, filePath?: string): unknown {\n\ttry {\n\t\treturn TOML.parse(tomlContent);\n\t} catch (err) {\n\t\tif (!(err instanceof TomlError)) {\n\t\t\tthrow err;\n\t\t}\n\n\t\tconst location = {\n\t\t\tlineText: tomlContent.split(\"\\n\")[err.line - 1],\n\t\t\tline: err.line,\n\t\t\tcolumn: err.column - 1,\n\t\t\tfile: filePath,\n\t\t\tfileText: tomlContent,\n\t\t};\n\t\tthrow new ParseError({\n\t\t\ttext: err.message.substring(0, err.message.indexOf(\"\\n\")),\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\tname?: string;\n\tversion?: string;\n\tprivate?: boolean;\n\tdevDependencies?: Record<string, unknown>;\n\tdependencies?: Record<string, unknown>;\n\tscripts?: Record<string, unknown>;\n\t/**\n\t * NOTE: This is **not** a standard `package.json` field — don't confuse it\n\t * with the standard `bundledDependencies`. It is a convention introduced by\n\t * vite+ (https://viteplus.dev): vite+ installs `@voidzero-dev/vite-plus-core`\n\t * under the `vite` npm alias and records the versions of the tools it bundles\n\t * here, keyed by package name\n\t * (e.g. `{ \"vite\": \"8.1.2\", \"rolldown\": \"...\", \"tsdown\": \"...\" }`).\n\t *\n\t * We read it to recover the underlying Vite version when Vite is installed via\n\t * such an alias. It is optional and absent for the vast majority of packages.\n\t */\n\tbundledVersions?: Record<string, string | undefined>;\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\ttelemetryMessage: false,\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: ParseFile, 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: ParseFile, 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 * 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\n/**\n * Config formats that use JSON parsing\n */\nexport const JSON_CONFIG_FORMATS: readonly string[] = [\"json\", \"jsonc\"];\n","import { createRequire } from \"node:module\";\nimport { isAbsolute, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n/**\n* Resolve an absolute path from {@link root}, but only\n* if {@link input} isn't already absolute.\n*\n* @param input The path to resolve.\n* @param root The base path; default = process.cwd()\n* @returns The resolved absolute path.\n*/\nexport function absolute(input, root) {\n\treturn isAbsolute(input) ? input : resolve(root || \".\", input);\n}\nexport function from(root, ident, silent) {\n\ttry {\n\t\t// NOTE: dirs need a trailing \"/\" OR filename. With \"/\" route,\n\t\t// Node adds \"noop.js\" as main file, so just do \"noop.js\" anyway.\n\t\tlet r = root instanceof URL || root.startsWith(\"file://\") ? join(fileURLToPath(root), \"noop.js\") : join(absolute(root), \"noop.js\");\n\t\treturn createRequire(r).resolve(ident);\n\t} catch (err) {\n\t\tif (!silent) throw err;\n\t}\n}\nexport function cwd(ident, silent) {\n\treturn from(resolve(), ident, silent);\n}\n","import { dirname } from \"node:path\";\nimport { absolute } from \"empathic/resolve\";\n/**\n* Get all parent directories of {@link base}.\n* Stops after {@link Options['last']} is processed.\n*\n* @returns An array of absolute paths of all parent directories.\n*/\nexport function up(base, options) {\n\tlet { last, cwd } = options || {};\n\tlet tmp = absolute(base, cwd);\n\tlet root = absolute(last || \"/\", cwd);\n\tlet prev, arr = [];\n\twhile (prev !== root) {\n\t\tarr.push(tmp);\n\t\ttmp = dirname(prev = tmp);\n\t\tif (tmp === prev) break;\n\t}\n\treturn arr;\n}\n","import { join } from \"node:path\";\nimport { existsSync, statSync } from \"node:fs\";\nimport * as walk from \"empathic/walk\";\n/**\n* Find an item by name, walking parent directories until found.\n*\n* @param name The item name to find.\n* @returns The absolute path to the item, if found.\n*/\nexport function up(name, options) {\n\tlet dir, tmp;\n\tlet start = options && options.cwd || \"\";\n\tfor (dir of walk.up(start, options)) {\n\t\ttmp = join(dir, name);\n\t\tif (existsSync(tmp)) return tmp;\n\t}\n}\n/**\n* Get the first path that matches any of the names provided.\n*\n* > [NOTE]\n* > The order of {@link names} is respected.\n*\n* @param names The item names to find.\n* @returns The absolute path of the first item found, if any.\n*/\nexport function any(names, options) {\n\tlet dir, start = options && options.cwd || \"\";\n\tlet j = 0, len = names.length, tmp;\n\tfor (dir of walk.up(start, options)) {\n\t\tfor (j = 0; j < len; j++) {\n\t\t\ttmp = join(dir, names[j]);\n\t\t\tif (existsSync(tmp)) return tmp;\n\t\t}\n\t}\n}\n/**\n* Find a file by name, walking parent directories until found.\n*\n* > [NOTE]\n* > This function only returns a value for file matches.\n* > A directory match with the same name will be ignored.\n*\n* @param name The file name to find.\n* @returns The absolute path to the file, if found.\n*/\nexport function file(name, options) {\n\tlet dir, tmp;\n\tlet start = options && options.cwd || \"\";\n\tfor (dir of walk.up(start, options)) {\n\t\ttry {\n\t\t\ttmp = join(dir, name);\n\t\t\tif (statSync(tmp).isFile()) return tmp;\n\t\t} catch {}\n\t}\n}\n/**\n* Find a directory by name, walking parent directories until found.\n*\n* > [NOTE]\n* > This function only returns a value for directory matches.\n* > A file match with the same name will be ignored.\n*\n* @param name The directory name to find.\n* @returns The absolute path to the file, if found.\n*/\nexport function dir(name, options) {\n\tlet dir, tmp;\n\tlet start = options && options.cwd || \"\";\n\tfor (dir of walk.up(start, options)) {\n\t\ttry {\n\t\t\ttmp = join(dir, name);\n\t\t\tif (statSync(tmp).isDirectory()) return tmp;\n\t\t} catch {}\n\t}\n}\n","import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport * as find from \"empathic/find\";\nimport dedent from \"ts-dedent\";\nimport { PATH_TO_DEPLOY_CONFIG } from \"../constants\";\nimport { UserError } from \"../errors\";\nimport { parseJSONC, readFileSync } from \"../parse\";\nimport type { ComputedFields, 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\tfind.file(`wrangler.json`, { cwd: referencePath }) ??\n\t\tfind.file(`wrangler.jsonc`, { cwd: referencePath }) ??\n\t\tfind.file(`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 = find.file(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, telemetryMessage: false }\n\t\t);\n\t}\n\tif (!redirectedConfigPath) {\n\t\tthrow new UserError(\n\t\t\tdedent`\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\t\t{ telemetryMessage: false }\n\t\t);\n\t}\n\n\tif (!existsSync(redirectedConfigPath)) {\n\t\tthrow new UserError(\n\t\t\tdedent`\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\t\t{ telemetryMessage: false }\n\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(\n\t\t\t\tdedent`\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\t\t{ telemetryMessage: false }\n\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 isRedirectedConfig(\n\tconfig: Pick<ComputedFields, \"configPath\" | \"userConfigPath\">\n): boolean {\n\treturn (\n\t\tconfig.configPath !== undefined &&\n\t\tconfig.configPath !== config.userConfigPath\n\t);\n}\n\nexport function isRedirectedRawConfig(\n\trawConfig: RawConfig,\n\tconfigPath: string | undefined,\n\tuserConfigPath: string | undefined\n): rawConfig is RedirectedRawConfig {\n\treturn isRedirectedConfig({ configPath, userConfigPath });\n}\n","import TOML from \"smol-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\";\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>;\nexport type {\n\tCacheOptions,\n\tConfiguredExport,\n\tConfigModuleRuleType,\n\tEnvironment,\n\tPreviewsConfig,\n\tRawEnvironment,\n\tWorkerEntrypointExport,\n} from \"./environment\";\nexport { partitionExports } from \"./exports\";\nexport type { ExportType, PartitionedExports } from \"./exports\";\nexport {\n\tgetContainerDurableObjectClassNames,\n\tgetContainerNameToClassNameMap,\n\tresolveContainerClassName,\n} from \"./containers\";\n\nexport function configFormat(\n\tconfigPath: string | undefined\n): \"json\" | \"jsonc\" | \"toml\" | \"none\" {\n\tif (configPath?.endsWith(\"toml\")) {\n\t\treturn \"toml\";\n\t}\n\tif (configPath?.endsWith(\"jsonc\")) {\n\t\treturn \"jsonc\";\n\t}\n\tif (configPath?.endsWith(\"json\")) {\n\t\treturn \"json\";\n\t}\n\treturn \"none\";\n}\n\nexport function configFileName(configPath: string | undefined) {\n\tconst format = configFormat(configPath);\n\tswitch (format) {\n\t\tcase \"toml\":\n\t\t\treturn \"wrangler.toml\";\n\t\tcase \"json\":\n\t\t\treturn \"wrangler.json\";\n\t\tcase \"jsonc\":\n\t\t\treturn \"wrangler.jsonc\";\n\t\tdefault:\n\t\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);\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\nconst parseRawConfigFile = (configPath: string): RawConfig => {\n\tif (configPath.endsWith(\".toml\")) {\n\t\treturn parseTOML(readFileSync(configPath), configPath) as RawConfig;\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"]}