{"version":3,"file":"parse.d12b0d5b.mjs","sources":["../../../../../../node_modules/devalue/src/utils.js","../../../../../../node_modules/devalue/src/constants.js","../../../../../../node_modules/devalue/src/parse.js"],"sourcesContent":["/** @type {Record<string, string>} */\nexport const escaped = {\n\t'<': '\\\\u003C',\n\t'>': '\\\\u003E',\n\t'/': '\\\\u002F',\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t',\n\t'\\0': '\\\\u0000',\n\t'\\u2028': '\\\\u2028',\n\t'\\u2029': '\\\\u2029'\n};\n\nexport class DevalueError extends Error {\n\t/**\n\t * @param {string} message\n\t * @param {string[]} keys\n\t */\n\tconstructor(message, keys) {\n\t\tsuper(message);\n\t\tthis.name = 'DevalueError';\n\t\tthis.path = keys.join('');\n\t}\n}\n\n/** @param {any} thing */\nexport function is_primitive(thing) {\n\treturn Object(thing) !== thing;\n}\n\nconst object_proto_names = Object.getOwnPropertyNames(Object.prototype)\n\t.sort()\n\t.join('\\0');\n\n/** @param {any} thing */\nexport function is_plain_object(thing) {\n\tconst proto = Object.getPrototypeOf(thing);\n\n\treturn (\n\t\tproto === Object.prototype ||\n\t\tproto === null ||\n\t\tObject.getOwnPropertyNames(proto).sort().join('\\0') === object_proto_names\n\t);\n}\n\n/** @param {any} thing */\nexport function get_type(thing) {\n\treturn Object.prototype.toString.call(thing).slice(8, -1);\n}\n\n/** @param {string} str */\nexport function stringify_string(str) {\n\tlet result = '\"';\n\n\tfor (let i = 0; i < str.length; i += 1) {\n\t\tconst char = str.charAt(i);\n\t\tconst code = char.charCodeAt(0);\n\n\t\tif (char === '\"') {\n\t\t\tresult += '\\\\\"';\n\t\t} else if (char in escaped) {\n\t\t\tresult += escaped[char];\n\t\t} else if (code <= 0x001F) {\n\t\t\tresult += `\\\\u${code.toString(16).toUpperCase().padStart(4, \"0\")}`\n\t\t} else if (code >= 0xd800 && code <= 0xdfff) {\n\t\t\tconst next = str.charCodeAt(i + 1);\n\n\t\t\t// If this is the beginning of a [high, low] surrogate pair,\n\t\t\t// add the next two characters, otherwise escape\n\t\t\tif (code <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {\n\t\t\t\tresult += char + str[++i];\n\t\t\t} else {\n\t\t\t\tresult += `\\\\u${code.toString(16).toUpperCase()}`;\n\t\t\t}\n\t\t} else {\n\t\t\tresult += char;\n\t\t}\n\t}\n\n\tresult += '\"';\n\treturn result;\n}\n","export const UNDEFINED = -1;\nexport const HOLE = -2;\nexport const NAN = -3;\nexport const POSITIVE_INFINITY = -4;\nexport const NEGATIVE_INFINITY = -5;\nexport const NEGATIVE_ZERO = -6;\n","import {\n\tHOLE,\n\tNAN,\n\tNEGATIVE_INFINITY,\n\tNEGATIVE_ZERO,\n\tPOSITIVE_INFINITY,\n\tUNDEFINED\n} from './constants.js';\n\n/**\n * Revive a value serialized with `devalue.stringify`\n * @param {string} serialized\n * @param {Record<string, (value: any) => any>} [revivers]\n */\nexport function parse(serialized, revivers) {\n\treturn unflatten(JSON.parse(serialized), revivers);\n}\n\n/**\n * Revive a value flattened with `devalue.stringify`\n * @param {number | any[]} parsed\n * @param {Record<string, (value: any) => any>} [revivers]\n */\nexport function unflatten(parsed, revivers) {\n\tif (typeof parsed === 'number') return hydrate(parsed, true);\n\n\tif (!Array.isArray(parsed) || parsed.length === 0) {\n\t\tthrow new Error('Invalid input');\n\t}\n\n\tconst values = /** @type {any[]} */ (parsed);\n\n\tconst hydrated = Array(values.length);\n\n\t/**\n\t * @param {number} index\n\t * @returns {any}\n\t */\n\tfunction hydrate(index, standalone = false) {\n\t\tif (index === UNDEFINED) return undefined;\n\t\tif (index === NAN) return NaN;\n\t\tif (index === POSITIVE_INFINITY) return Infinity;\n\t\tif (index === NEGATIVE_INFINITY) return -Infinity;\n\t\tif (index === NEGATIVE_ZERO) return -0;\n\n\t\tif (standalone) throw new Error(`Invalid input`);\n\n\t\tif (index in hydrated) return hydrated[index];\n\n\t\tconst value = values[index];\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\thydrated[index] = value;\n\t\t} else if (Array.isArray(value)) {\n\t\t\tif (typeof value[0] === 'string') {\n\t\t\t\tconst type = value[0];\n\n\t\t\t\tconst reviver = revivers?.[type];\n\t\t\t\tif (reviver) {\n\t\t\t\t\treturn (hydrated[index] = reviver(hydrate(value[1])));\n\t\t\t\t}\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'Date':\n\t\t\t\t\t\thydrated[index] = new Date(value[1]);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Set':\n\t\t\t\t\t\tconst set = new Set();\n\t\t\t\t\t\thydrated[index] = set;\n\t\t\t\t\t\tfor (let i = 1; i < value.length; i += 1) {\n\t\t\t\t\t\t\tset.add(hydrate(value[i]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Map':\n\t\t\t\t\t\tconst map = new Map();\n\t\t\t\t\t\thydrated[index] = map;\n\t\t\t\t\t\tfor (let i = 1; i < value.length; i += 2) {\n\t\t\t\t\t\t\tmap.set(hydrate(value[i]), hydrate(value[i + 1]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RegExp':\n\t\t\t\t\t\thydrated[index] = new RegExp(value[1], value[2]);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\thydrated[index] = Object(value[1]);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BigInt':\n\t\t\t\t\t\thydrated[index] = BigInt(value[1]);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'null':\n\t\t\t\t\t\tconst obj = Object.create(null);\n\t\t\t\t\t\thydrated[index] = obj;\n\t\t\t\t\t\tfor (let i = 1; i < value.length; i += 2) {\n\t\t\t\t\t\t\tobj[value[i]] = hydrate(value[i + 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(`Unknown type ${type}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst array = new Array(value.length);\n\t\t\t\thydrated[index] = array;\n\n\t\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\t\tconst n = value[i];\n\t\t\t\t\tif (n === HOLE) continue;\n\n\t\t\t\t\tarray[i] = hydrate(n);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t/** @type {Record<string, any>} */\n\t\t\tconst object = {};\n\t\t\thydrated[index] = object;\n\n\t\t\tfor (const key in value) {\n\t\t\t\tconst n = value[key];\n\t\t\t\tobject[key] = hydrate(n);\n\t\t\t}\n\t\t}\n\n\t\treturn hydrated[index];\n\t}\n\n\treturn hydrate(0);\n}\n"],"names":["UNDEFINED","HOLE","NAN","POSITIVE_INFINITY","NEGATIVE_INFINITY","NEGATIVE_ZERO","parse","serialized","revivers","unflatten","parsed","hydrate","values","hydrated","index","standalone","value","type","reviver","set","i","map","obj","array","n","object","key"],"mappings":"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","x_google_ignoreList":[0,1,2]}