{"version":3,"file":"parse.bee59afc.mjs","sources":["../../../../../../node_modules/devalue/src/parse.js"],"sourcesContent":["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":["parse","serialized","revivers","unflatten","parsed","hydrate","values","hydrated","index","standalone","value","type","reviver","set","i","map","obj","array","n","object","key"],"mappings":"AAcO,SAASA,EAAMC,EAAYC,EAAU,CAC3C,OAAOC,EAAU,KAAK,MAAMF,CAAU,EAAGC,CAAQ,CAClD,CAOO,SAASC,EAAUC,EAAQF,EAAU,CAC3C,GAAI,OAAOE,GAAW,SAAU,OAAOC,EAAQD,EAAQ,EAAI,EAE3D,GAAI,CAAC,MAAM,QAAQA,CAAM,GAAKA,EAAO,SAAW,EAC/C,MAAM,IAAI,MAAM,eAAe,EAGhC,MAAME,EAA+BF,EAE/BG,EAAW,MAAMD,EAAO,MAAM,EAMpC,SAASD,EAAQG,EAAOC,EAAa,GAAO,CAC3C,GAAID,IAAU,GAAW,OACzB,GAAIA,IAAU,GAAK,MAAO,KAC1B,GAAIA,IAAU,GAAmB,MAAO,KACxC,GAAIA,IAAU,GAAmB,MAAO,KACxC,GAAIA,IAAU,GAAe,MAAO,GAEpC,GAAIC,EAAY,MAAM,IAAI,MAAM,eAAe,EAE/C,GAAID,KAASD,EAAU,OAAOA,EAASC,CAAK,EAE5C,MAAME,EAAQJ,EAAOE,CAAK,EAE1B,GAAI,CAACE,GAAS,OAAOA,GAAU,SAC9BH,EAASC,CAAK,EAAIE,UACR,MAAM,QAAQA,CAAK,EAC7B,GAAI,OAAOA,EAAM,CAAC,GAAM,SAAU,CACjC,MAAMC,EAAOD,EAAM,CAAC,EAEdE,EAAUV,GAAA,YAAAA,EAAWS,GAC3B,GAAIC,EACH,OAAQL,EAASC,CAAK,EAAII,EAAQP,EAAQK,EAAM,CAAC,CAAC,CAAC,EAGpD,OAAQC,EAAI,CACX,IAAK,OACJJ,EAASC,CAAK,EAAI,IAAI,KAAKE,EAAM,CAAC,CAAC,EACnC,MAED,IAAK,MACJ,MAAMG,EAAM,IAAI,IAChBN,EAASC,CAAK,EAAIK,EAClB,QAASC,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,GAAK,EACtCD,EAAI,IAAIR,EAAQK,EAAMI,CAAC,CAAC,CAAC,EAE1B,MAED,IAAK,MACJ,MAAMC,EAAM,IAAI,IAChBR,EAASC,CAAK,EAAIO,EAClB,QAASD,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,GAAK,EACtCC,EAAI,IAAIV,EAAQK,EAAMI,CAAC,CAAC,EAAGT,EAAQK,EAAMI,EAAI,CAAC,CAAC,CAAC,EAEjD,MAED,IAAK,SACJP,EAASC,CAAK,EAAI,IAAI,OAAOE,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAC/C,MAED,IAAK,SACJH,EAASC,CAAK,EAAI,OAAOE,EAAM,CAAC,CAAC,EACjC,MAED,IAAK,SACJH,EAASC,CAAK,EAAI,OAAOE,EAAM,CAAC,CAAC,EACjC,MAED,IAAK,OACJ,MAAMM,EAAM,OAAO,OAAO,IAAI,EAC9BT,EAASC,CAAK,EAAIQ,EAClB,QAASF,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,GAAK,EACtCE,EAAIN,EAAMI,CAAC,CAAC,EAAIT,EAAQK,EAAMI,EAAI,CAAC,CAAC,EAErC,MAED,QACC,MAAM,IAAI,MAAM,gBAAgBH,CAAI,EAAE,CACvC,CACL,KAAU,CACN,MAAMM,EAAQ,IAAI,MAAMP,EAAM,MAAM,EACpCH,EAASC,CAAK,EAAIS,EAElB,QAASH,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,GAAK,EAAG,CACzC,MAAMI,EAAIR,EAAMI,CAAC,EACbI,IAAM,KAEVD,EAAMH,CAAC,EAAIT,EAAQa,CAAC,EACpB,CACD,KACK,CAEN,MAAMC,EAAS,CAAA,EACfZ,EAASC,CAAK,EAAIW,EAElB,UAAWC,KAAOV,EAAO,CACxB,MAAMQ,EAAIR,EAAMU,CAAG,EACnBD,EAAOC,CAAG,EAAIf,EAAQa,CAAC,CACvB,CACD,CAED,OAAOX,EAASC,CAAK,CACrB,CAED,OAAOH,EAAQ,CAAC,CACjB","x_google_ignoreList":[0]}