{"version":3,"file":"json.cjs","names":[],"sources":["../../../src/common/data/json.ts"],"sourcesContent":["// From https://github.com/moll/json-stringify-safe License ISC\n\nconst _sortedReplacer: JsonEntryProcessor = (key: string, value: any) =>\n  (value instanceof Object && !(Array.isArray(value)))\n    ? Object.keys(value)\n      .sort()\n      // .filter((key) => value[key] != null) // Remove null and undefined\n      .reduce((sorted: any, key: string) => {\n        // Sorted copy\n        sorted[key] = value[key]\n        return sorted\n      }, {})\n    : value\n\n// https://gist.github.com/davidfurlong/463a83a33b70a3b6618e97ec9679e490\nexport function jsonStringifySorted(\n  obj: any,\n  indent: number | undefined = undefined,\n) {\n  return JSON.stringify(obj, _sortedReplacer, indent)\n}\n\n//\n\nexport type JsonEntryProcessor = (key: string, value: any) => any\n\nfunction serializer(replacer?: JsonEntryProcessor, cycleReplacer?: JsonEntryProcessor) {\n  const stack: any[] = []\n  const keys: string[] = []\n\n  if (cycleReplacer == null) {\n    cycleReplacer = function (_key, value) {\n      if (stack[0] === value)\n        return '[Circular ~]'\n      return (\n        `[Circular ~.${keys.slice(0, stack.indexOf(value)).join('.')}]`\n      )\n    }\n  }\n\n  return function (this: JsonEntryProcessor, key: string, value: any): any {\n    if (stack.length > 0) {\n      const thisPos = stack.indexOf(this)\n      // eslint-disable-next-line ts/no-unused-expressions\n      ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n      // eslint-disable-next-line ts/no-unused-expressions\n      ~thisPos ? keys.splice(thisPos, Number.POSITIVE_INFINITY, key) : keys.push(key)\n      if (~stack.indexOf(value))\n        value = cycleReplacer?.call(this, key, value)\n    }\n    else {\n      stack.push(value)\n    }\n\n    try {\n      return replacer == null ? value : replacer.call(this, key, value)\n    }\n    catch (err) { }\n    return String(value)\n  }\n}\n\n/**\n * Similar to JSON.stringify but can handle circular references.\n * NOT SORTED!\n * From https://github.com/moll/json-stringify-safe/blob/master/stringify.js\n * License ISC\n */\nexport function jsonStringifySafe(\n  obj: any,\n  replacer?: JsonEntryProcessor | null | undefined,\n  spaces?: string | number | null,\n  cycleReplacer?: JsonEntryProcessor,\n): string {\n  return JSON.stringify(\n    obj,\n    serializer(replacer ?? undefined, cycleReplacer),\n    spaces ?? undefined,\n  )\n}\n\nexport const jsonStringify = jsonStringifySafe\n\n//\n\n// From https://github.com/unjs/destr MIT\n// https://github.com/fastify/secure-json-parse\n// https://github.com/hapijs/bourne\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/\n\nconst JsonSigRx = /^[\"{[]|^-?\\d[0-9.]{0,14}$/\n\nfunction jsonParseTransform(key: string, value: any): any {\n  if (key === '__proto__' || key === 'constructor')\n    return\n\n  return value\n}\n \n/// Sage JSON parsing protecting against __proto__ and the like\nexport function jsonParse(val: string): any {\n  if (typeof val !== 'string')\n    return val\n\n  const _lval = val.toLowerCase()\n  if (_lval === 'true')\n    return true\n\n  if (_lval === 'false')\n    return false\n\n  if (_lval === 'null')\n    return null\n\n  if (_lval === 'nan')\n    return Number.NaN\n\n  if (_lval === 'infinity')\n    return Number.POSITIVE_INFINITY\n\n  if (_lval === 'undefined')\n    return undefined\n\n  if (!JsonSigRx.test(val))\n    return val\n\n  try {\n    if (suspectProtoRx.test(val) || suspectConstructorRx.test(val))\n      return JSON.parse(val, jsonParseTransform)\n\n    return JSON.parse(val)\n  }\n  catch (_e) {\n    return val\n  }\n}\n"],"mappings":";;;AAEA,MAAM,mBAAuC,KAAa,UACvD,iBAAiB,UAAU,CAAE,MAAM,QAAQ,MAAM,GAC9C,OAAO,KAAK,MAAM,CACjB,MAAM,CAEN,QAAQ,QAAa,QAAgB;AAEpC,QAAO,OAAO,MAAM;AACpB,QAAO;GACN,EAAE,CAAC,GACN;AAGN,SAAgB,oBACd,KACA,SAA6B,QAC7B;AACA,QAAO,KAAK,UAAU,KAAK,iBAAiB,OAAO;;AAOrD,SAAS,WAAW,UAA+B,eAAoC;CACrF,MAAM,QAAe,EAAE;CACvB,MAAM,OAAiB,EAAE;AAEzB,KAAI,iBAAiB,KACnB,iBAAgB,SAAU,MAAM,OAAO;AACrC,MAAI,MAAM,OAAO,MACf,QAAO;AACT,SACE,eAAe,KAAK,MAAM,GAAG,MAAM,QAAQ,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;;AAKnE,QAAO,SAAoC,KAAa,OAAiB;AACvE,MAAI,MAAM,SAAS,GAAG;GACpB,MAAM,UAAU,MAAM,QAAQ,KAAK;AAEnC,IAAC,UAAU,MAAM,OAAO,UAAU,EAAE,GAAG,MAAM,KAAK,KAAK;AAEvD,IAAC,UAAU,KAAK,OAAO,SAAS,OAAO,mBAAmB,IAAI,GAAG,KAAK,KAAK,IAAI;AAC/E,OAAI,CAAC,MAAM,QAAQ,MAAM,CACvB,SAAQ,eAAe,KAAK,MAAM,KAAK,MAAM;QAG/C,OAAM,KAAK,MAAM;AAGnB,MAAI;AACF,UAAO,YAAY,OAAO,QAAQ,SAAS,KAAK,MAAM,KAAK,MAAM;WAE5D,KAAK;AACZ,SAAO,OAAO,MAAM;;;;;;;;;AAUxB,SAAgB,kBACd,KACA,UACA,QACA,eACQ;AACR,QAAO,KAAK,UACV,KACA,WAAW,YAAY,QAAW,cAAc,EAChD,UAAU,OACX;;AAGH,MAAa,gBAAgB;AAO7B,MAAM,iBAAiB;AACvB,MAAM,uBAAuB;AAE7B,MAAM,YAAY;AAElB,SAAS,mBAAmB,KAAa,OAAiB;AACxD,KAAI,QAAQ,eAAe,QAAQ,cACjC;AAEF,QAAO;;AAIT,SAAgB,UAAU,KAAkB;AAC1C,KAAI,OAAO,QAAQ,SACjB,QAAO;CAET,MAAM,QAAQ,IAAI,aAAa;AAC/B,KAAI,UAAU,OACZ,QAAO;AAET,KAAI,UAAU,QACZ,QAAO;AAET,KAAI,UAAU,OACZ,QAAO;AAET,KAAI,UAAU,MACZ,QAAO;AAET,KAAI,UAAU,WACZ,QAAO,OAAO;AAEhB,KAAI,UAAU,YACZ,QAAO;AAET,KAAI,CAAC,UAAU,KAAK,IAAI,CACtB,QAAO;AAET,KAAI;AACF,MAAI,eAAe,KAAK,IAAI,IAAI,qBAAqB,KAAK,IAAI,CAC5D,QAAO,KAAK,MAAM,KAAK,mBAAmB;AAE5C,SAAO,KAAK,MAAM,IAAI;UAEjB,IAAI;AACT,SAAO"}