{"version":3,"file":"self-cleaning-local-storage.es.min.js","sources":["../../../packages/coveo-search/src/tools/self-cleaning-local-storage.ts"],"sourcesContent":["const tryParseRecord = (maybeJson: string): Record<any, unknown> => {\n    try {\n        const ret = JSON.parse(maybeJson) as unknown\n        if (typeof ret !== \"object\" || ret === null) { return {} }\n        return ret as Record<any, unknown>;\n    } catch (e) {\n        return {}\n    }\n}\n\nexport const selfCleaningLocalStorage = {\n    setItem: <R extends Record<string, any>>(key: string, value: R extends { \"__expires\": unknown } ? never : R, expiresUTC: number) => {\n        localStorage.setItem(key, JSON.stringify({ ...value, __expires: expiresUTC }))\n    }\n}\n\nconst cleanUp = () => Array\n    .from(localStorage, (_, i) => localStorage.key(i))\n    .filter((key: string | null): key is string => {\n        if (!key) { return false }\n        const maybeJson = localStorage.getItem(key)\n        if (!maybeJson) { return false }\n        const { __expires: expires } = tryParseRecord(maybeJson);\n        if (typeof expires !== \"number\") { return false }\n        const now = new Date().getTime()\n        return now > expires;\n    })\n    .forEach((key) => localStorage.removeItem(key))\n\ncleanUp()"],"names":["tryParseRecord","maybeJson","ret","JSON","parse","selfCleaningLocalStorage","setItem","key","value","expiresUTC","stringify","__expires","cleanUp","Array","from","localStorage","_","i","filter","getItem","expires","Date","getTime","forEach","removeItem"],"mappings":"AAAA,MAAMA,IAAiBA,CAACC,MAA4C;AAC5D,MAAA;AACMC,UAAAA,IAAMC,KAAKC,MAAMH,CAAS;AAChC,WAAI,OAAOC,KAAQ,YAAYA,MAAQ,OAAe,KAC/CA;AAAAA,UACC;AACR,WAAO;EACX;AACJ,GAEaG,IAA2B;AAAA,EACpCC,SAAS,CAAgCC,GAAaC,GAAuDC,MAAuB;AACnHH,iBAAAA,QAAQC,GAAKJ,KAAKO,UAAU;AAAA,MAAE,GAAGF;AAAAA,MAAOG,WAAWF;AAAAA,IAAY,CAAA,CAAC;AAAA,EACjF;AACJ,GAEMG,IAAUA,MAAMC,MACjBC,KAAKC,cAAc,CAACC,GAAGC,MAAMF,aAAaR,IAAIU,CAAC,CAAC,EAChDC,OAAO,CAACX,MAAsC;AAC3C,MAAI,CAACA;AAAc,WAAA;AACbN,QAAAA,IAAYc,aAAaI,QAAQZ,CAAG;AAC1C,MAAI,CAACN;AAAoB,WAAA;AACnB,QAAA;AAAA,IAAEU,WAAWS;AAAAA,EAAAA,IAAYpB,EAAeC,CAAS;AACnD,SAAA,OAAOmB,KAAY,WAAmB,MAC9B,oBAAIC,KAAK,GAAEC,QAAQ,IAClBF;AACjB,CAAC,EACAG,QAAShB,CAAAA,MAAQQ,aAAaS,WAAWjB,CAAG,CAAC;AAElDK,EAAQ;"}