{"version":3,"sources":["../../src/api/utils.ts"],"sourcesContent":["export const SESSION_KEY = \"ray_tab_hash\";\nexport const STORAGE_KEY = \"ray_req_hash\";\n\nexport const getSessionKey = (): string => {\n  if (typeof window === undefined) return \"\";\n  let key = sessionStorage.getItem(SESSION_KEY);\n\n  // new a session key\n  if (!key) {\n    key = `ray-${Date.now()}`;\n    sessionStorage.setItem(SESSION_KEY, key);\n  }\n  return key;\n};\n\nexport interface ResHistory {\n  status: number;\n  url: string;\n  params?: any;\n  data: any;\n  logCount?: number;\n  time: number;\n  session: string;\n  removeLastLog?: boolean;\n}\n\nexport const updateReqHistory = async ({\n  logCount = 1000,\n  removeLastLog,\n  ...resData\n}: Omit<ResHistory, \"time\" | \"session\">): Promise<void> => {\n  if (typeof window === undefined) return new Promise((resolve) => resolve());\n  const data: ResHistory[] = JSON.parse(localStorage.getItem(STORAGE_KEY) || \"[]\").slice(0, logCount - 1);\n\n  // means retry last save error\n  if (removeLastLog) data.pop();\n\n  // if data > 1kb\n  if (new Blob([JSON.stringify(resData.data)]).size > 1024)\n    resData.data = JSON.stringify(resData.data).substring(0, 200) + \"...\";\n  data.unshift({ ...resData, time: Date.now(), session: getSessionKey() });\n\n  try {\n    localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n  } catch {\n    // if retry failed, empty request data\n    if (removeLastLog) {\n      let success = false;\n      const resStr = JSON.stringify(resData.data).substring(0, 100);\n      data[0].data = resStr + (resStr.length > 100 ? \"...\" : \"\");\n      while (!success) {\n        data.pop();\n        const resStr = JSON.stringify(resData.data).substring(0, 100);\n        data[0].data = resStr + (resStr.length > 100 ? \"...\" : \"\");\n        try {\n          localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n          success = true;\n        } catch {\n          success = false;\n        }\n      }\n      return new Promise((resolve) => resolve());\n    }\n    return updateReqHistory({\n      ...resData,\n      logCount,\n      removeLastLog: true,\n    });\n  }\n};"],"mappings":"4xBAAO,IAAMA,EAAc,eACdC,EAAc,eAEdC,EAAgB,IAAc,CACzC,GAAI,OAAO,SAAW,OAAW,MAAO,GACxC,IAAIC,EAAM,eAAe,QAAQH,CAAW,EAG5C,OAAKG,IACHA,EAAM,OAAO,KAAK,IAAI,CAAC,GACvB,eAAe,QAAQH,EAAaG,CAAG,GAElCA,CACT,EAaaC,EAA0BC,GAIoBC,EAAA,wBAJpB,IAAAC,EAAAF,EACrC,UAAAG,EAAW,IACX,cAAAC,CA5BF,EA0BuCF,EAGlCG,EAAAC,EAHkCJ,EAGlC,CAFH,WACA,kBAGA,GAAI,OAAO,SAAW,OAAW,OAAO,IAAI,QAASK,GAAYA,EAAQ,CAAC,EAC1E,IAAMC,EAAqB,KAAK,MAAM,aAAa,QAAQZ,CAAW,GAAK,IAAI,EAAE,MAAM,EAAGO,EAAW,CAAC,EAGlGC,GAAeI,EAAK,IAAI,EAGxB,IAAI,KAAK,CAAC,KAAK,UAAUH,EAAQ,IAAI,CAAC,CAAC,EAAE,KAAO,OAClDA,EAAQ,KAAO,KAAK,UAAUA,EAAQ,IAAI,EAAE,UAAU,EAAG,GAAG,EAAI,OAClEG,EAAK,QAAQC,EAAAC,EAAA,GAAKL,GAAL,CAAc,KAAM,KAAK,IAAI,EAAG,QAASR,EAAc,CAAE,EAAC,EAEvE,GAAI,CACF,aAAa,QAAQD,EAAa,KAAK,UAAUY,CAAI,CAAC,CACxD,OAAQG,EAAA,CAEN,GAAIP,EAAe,CACjB,IAAIQ,EAAU,GACRC,EAAS,KAAK,UAAUR,EAAQ,IAAI,EAAE,UAAU,EAAG,GAAG,EAE5D,IADAG,EAAK,CAAC,EAAE,KAAOK,GAAUA,EAAO,OAAS,IAAM,MAAQ,IAChD,CAACD,GAAS,CACfJ,EAAK,IAAI,EACT,IAAMK,EAAS,KAAK,UAAUR,EAAQ,IAAI,EAAE,UAAU,EAAG,GAAG,EAC5DG,EAAK,CAAC,EAAE,KAAOK,GAAUA,EAAO,OAAS,IAAM,MAAQ,IACvD,GAAI,CACF,aAAa,QAAQjB,EAAa,KAAK,UAAUY,CAAI,CAAC,EACtDI,EAAU,EACZ,OAAQD,EAAA,CACNC,EAAU,EACZ,CACF,CACA,OAAO,IAAI,QAASL,GAAYA,EAAQ,CAAC,CAC3C,CACA,OAAOR,EAAiBU,EAAAC,EAAA,GACnBL,GADmB,CAEtB,SAAAF,EACA,cAAe,EACjB,EAAC,CACH,CACF","names":["SESSION_KEY","STORAGE_KEY","getSessionKey","key","updateReqHistory","_a","__async","_b","logCount","removeLastLog","resData","__objRest","resolve","data","__spreadProps","__spreadValues","e","success","resStr"]}