{"version":3,"file":"json-parse-CZ0U0sj_.mjs","names":["exports","partialParse"],"sources":["../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/options.js","../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/index.js","../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/utils/json-parse.js"],"sourcesContent":["\"use strict\";\n/**\n * Sometimes you don't allow every type to be partially parsed.\n * For example, you may not want a partial number because it may increase its size gradually before it's complete.\n * In this case, you can use the `Allow` object to control what types you allow to be partially parsed.\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.ALL = exports.COLLECTION = exports.ATOM = exports.SPECIAL = exports.INF = exports._INFINITY = exports.INFINITY = exports.NAN = exports.BOOL = exports.NULL = exports.OBJ = exports.ARR = exports.NUM = exports.STR = void 0;\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello \"`\n */\nexports.STR = 0b000000001;\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexports.NUM = 0b000000010;\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexports.ARR = 0b000000100;\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexports.OBJ = 0b000001000;\n/**\n * allow `nu` to be parsed as `null`\n */\nexports.NULL = 0b000010000;\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexports.BOOL = 0b000100000;\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexports.NAN = 0b001000000;\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexports.INFINITY = 0b010000000;\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexports._INFINITY = 0b100000000;\nexports.INF = exports.INFINITY | exports._INFINITY;\nexports.SPECIAL = exports.NULL | exports.BOOL | exports.INF | exports.NAN;\nexports.ATOM = exports.STR | exports.NUM | exports.SPECIAL;\nexports.COLLECTION = exports.ARR | exports.OBJ;\nexports.ALL = exports.ATOM | exports.COLLECTION;\n/**\n * Control what types you allow to be partially parsed.\n * The default is to allow all types to be partially parsed, which in most casees is the best option.\n * @example\n * If you don't want to allow partial objects, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, Allow.ARR); // [ { a: 1, b: 2 } ]\n * ```\n * Or you can use `~` to disallow a type:\n * ```ts\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, ~Allow.OBJ); // [ { a: 1, b: 2 } ]\n * ```\n * @example\n * If you don't want to allow partial strings, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[\"complete string\", \"incompl`, ~Allow.STR); // [ 'complete string' ]\n * ```\n */\nexports.Allow = { STR: exports.STR, NUM: exports.NUM, ARR: exports.ARR, OBJ: exports.OBJ, NULL: exports.NULL, BOOL: exports.BOOL, NAN: exports.NAN, INFINITY: exports.INFINITY, _INFINITY: exports._INFINITY, INF: exports.INF, SPECIAL: exports.SPECIAL, ATOM: exports.ATOM, COLLECTION: exports.COLLECTION, ALL: exports.ALL };\nexports.default = exports.Allow;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.MalformedJSON = exports.PartialJSON = exports.parseJSON = exports.parse = void 0;\nconst options_1 = require(\"./options\");\nObject.defineProperty(exports, \"Allow\", { enumerable: true, get: function () { return options_1.Allow; } });\n__exportStar(require(\"./options\"), exports);\nclass PartialJSON extends Error {\n}\nexports.PartialJSON = PartialJSON;\nclass MalformedJSON extends Error {\n}\nexports.MalformedJSON = MalformedJSON;\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = options_1.Allow.ALL) {\n    if (typeof jsonString !== \"string\") {\n        throw new TypeError(`expecting str, got ${typeof jsonString}`);\n    }\n    if (!jsonString.trim()) {\n        throw new Error(`${jsonString} is empty`);\n    }\n    return _parseJSON(jsonString.trim(), allowPartial);\n}\nexports.parseJSON = parseJSON;\n;\nconst _parseJSON = (jsonString, allow) => {\n    const length = jsonString.length;\n    let index = 0;\n    const markPartialJSON = (msg) => {\n        throw new PartialJSON(`${msg} at position ${index}`);\n    };\n    const throwMalformedError = (msg) => {\n        throw new MalformedJSON(`${msg} at position ${index}`);\n    };\n    const parseAny = () => {\n        skipBlank();\n        if (index >= length)\n            markPartialJSON(\"Unexpected end of input\");\n        if (jsonString[index] === '\"')\n            return parseStr();\n        if (jsonString[index] === \"{\")\n            return parseObj();\n        if (jsonString[index] === \"[\")\n            return parseArr();\n        if (jsonString.substring(index, index + 4) === \"null\" || (options_1.Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))) {\n            index += 4;\n            return null;\n        }\n        if (jsonString.substring(index, index + 4) === \"true\" || (options_1.Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))) {\n            index += 4;\n            return true;\n        }\n        if (jsonString.substring(index, index + 5) === \"false\" || (options_1.Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))) {\n            index += 5;\n            return false;\n        }\n        if (jsonString.substring(index, index + 8) === \"Infinity\" || (options_1.Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))) {\n            index += 8;\n            return Infinity;\n        }\n        if (jsonString.substring(index, index + 9) === \"-Infinity\" || (options_1.Allow._INFINITY & allow && 1 < length - index && length - index < 9 && \"-Infinity\".startsWith(jsonString.substring(index)))) {\n            index += 9;\n            return -Infinity;\n        }\n        if (jsonString.substring(index, index + 3) === \"NaN\" || (options_1.Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))) {\n            index += 3;\n            return NaN;\n        }\n        return parseNum();\n    };\n    const parseStr = () => {\n        const start = index;\n        let escape = false;\n        index++; // skip initial quote\n        while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === \"\\\\\"))) {\n            escape = jsonString[index] === \"\\\\\" ? !escape : false;\n            index++;\n        }\n        if (jsonString.charAt(index) == '\"') {\n            try {\n                return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n            }\n            catch (e) {\n                throwMalformedError(String(e));\n            }\n        }\n        else if (options_1.Allow.STR & allow) {\n            try {\n                return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n            }\n            catch (e) {\n                // SyntaxError: Invalid escape sequence\n                return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\")) + '\"');\n            }\n        }\n        markPartialJSON(\"Unterminated string literal\");\n    };\n    const parseObj = () => {\n        index++; // skip initial brace\n        skipBlank();\n        const obj = {};\n        try {\n            while (jsonString[index] !== \"}\") {\n                skipBlank();\n                if (index >= length && options_1.Allow.OBJ & allow)\n                    return obj;\n                const key = parseStr();\n                skipBlank();\n                index++; // skip colon\n                try {\n                    const value = parseAny();\n                    obj[key] = value;\n                }\n                catch (e) {\n                    if (options_1.Allow.OBJ & allow)\n                        return obj;\n                    else\n                        throw e;\n                }\n                skipBlank();\n                if (jsonString[index] === \",\")\n                    index++; // skip comma\n            }\n        }\n        catch (e) {\n            if (options_1.Allow.OBJ & allow)\n                return obj;\n            else\n                markPartialJSON(\"Expected '}' at end of object\");\n        }\n        index++; // skip final brace\n        return obj;\n    };\n    const parseArr = () => {\n        index++; // skip initial bracket\n        const arr = [];\n        try {\n            while (jsonString[index] !== \"]\") {\n                arr.push(parseAny());\n                skipBlank();\n                if (jsonString[index] === \",\") {\n                    index++; // skip comma\n                }\n            }\n        }\n        catch (e) {\n            if (options_1.Allow.ARR & allow) {\n                return arr;\n            }\n            markPartialJSON(\"Expected ']' at end of array\");\n        }\n        index++; // skip final bracket\n        return arr;\n    };\n    const parseNum = () => {\n        if (index === 0) {\n            if (jsonString === \"-\")\n                throwMalformedError(\"Not sure what '-' is\");\n            try {\n                return JSON.parse(jsonString);\n            }\n            catch (e) {\n                if (options_1.Allow.NUM & allow)\n                    try {\n                        return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf(\"e\")));\n                    }\n                    catch (e) { }\n                throwMalformedError(String(e));\n            }\n        }\n        const start = index;\n        if (jsonString[index] === \"-\")\n            index++;\n        while (jsonString[index] && \",]}\".indexOf(jsonString[index]) === -1)\n            index++;\n        if (index == length && !(options_1.Allow.NUM & allow))\n            markPartialJSON(\"Unterminated number literal\");\n        try {\n            return JSON.parse(jsonString.substring(start, index));\n        }\n        catch (e) {\n            if (jsonString.substring(start, index) === \"-\")\n                markPartialJSON(\"Not sure what '-' is\");\n            try {\n                return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"e\")));\n            }\n            catch (e) {\n                throwMalformedError(String(e));\n            }\n        }\n    };\n    const skipBlank = () => {\n        while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) {\n            index++;\n        }\n    };\n    return parseAny();\n};\nconst parse = parseJSON;\nexports.parse = parse;\n","import { parse as partialParse } from \"partial-json\";\nconst VALID_JSON_ESCAPES = new Set(['\"', \"\\\\\", \"/\", \"b\", \"f\", \"n\", \"r\", \"t\", \"u\"]);\nfunction isControlCharacter(char) {\n    const codePoint = char.codePointAt(0);\n    return codePoint !== undefined && codePoint >= 0x00 && codePoint <= 0x1f;\n}\nfunction escapeControlCharacter(char) {\n    switch (char) {\n        case \"\\b\":\n            return \"\\\\b\";\n        case \"\\f\":\n            return \"\\\\f\";\n        case \"\\n\":\n            return \"\\\\n\";\n        case \"\\r\":\n            return \"\\\\r\";\n        case \"\\t\":\n            return \"\\\\t\";\n        default:\n            return `\\\\u${char.codePointAt(0)?.toString(16).padStart(4, \"0\") ?? \"0000\"}`;\n    }\n}\n/**\n * Repairs malformed JSON string literals by:\n * - escaping raw control characters inside strings\n * - doubling backslashes before invalid escape characters\n */\nexport function repairJson(json) {\n    let repaired = \"\";\n    let inString = false;\n    for (let index = 0; index < json.length; index++) {\n        const char = json[index];\n        if (!inString) {\n            repaired += char;\n            if (char === '\"') {\n                inString = true;\n            }\n            continue;\n        }\n        if (char === '\"') {\n            repaired += char;\n            inString = false;\n            continue;\n        }\n        if (char === \"\\\\\") {\n            const nextChar = json[index + 1];\n            if (nextChar === undefined) {\n                repaired += \"\\\\\\\\\";\n                continue;\n            }\n            if (nextChar === \"u\") {\n                const unicodeDigits = json.slice(index + 2, index + 6);\n                if (/^[0-9a-fA-F]{4}$/.test(unicodeDigits)) {\n                    repaired += `\\\\u${unicodeDigits}`;\n                    index += 5;\n                    continue;\n                }\n            }\n            if (VALID_JSON_ESCAPES.has(nextChar)) {\n                repaired += `\\\\${nextChar}`;\n                index += 1;\n                continue;\n            }\n            repaired += \"\\\\\\\\\";\n            continue;\n        }\n        repaired += isControlCharacter(char) ? escapeControlCharacter(char) : char;\n    }\n    return repaired;\n}\nexport function parseJsonWithRepair(json) {\n    try {\n        return JSON.parse(json);\n    }\n    catch (error) {\n        const repairedJson = repairJson(json);\n        if (repairedJson !== json) {\n            return JSON.parse(repairedJson);\n        }\n        throw error;\n    }\n}\n/**\n * Attempts to parse potentially incomplete JSON during streaming.\n * Always returns a valid object, even if the JSON is incomplete.\n *\n * @param partialJson The partial JSON string from streaming\n * @returns Parsed object or empty object if parsing fails\n */\nexport function parseStreamingJson(partialJson) {\n    if (!partialJson || partialJson.trim() === \"\") {\n        return {};\n    }\n    try {\n        return parseJsonWithRepair(partialJson);\n    }\n    catch {\n        try {\n            const result = partialParse(partialJson);\n            return (result ?? {});\n        }\n        catch {\n            try {\n                const result = partialParse(repairJson(partialJson));\n                return (result ?? {});\n            }\n            catch {\n                return {};\n            }\n        }\n    }\n}\n//# sourceMappingURL=json-parse.js.map"],"x_google_ignoreList":[0,1,2],"mappings":"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"}