{"version":3,"file":"map-age-cleaner-b7aa31fc.js","sources":["../../node_modules/map-age-cleaner/dist/index.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst p_defer_1 = __importDefault(require(\"p-defer\"));\nfunction mapAgeCleaner(map, property = 'maxAge') {\n let processingKey;\n let processingTimer;\n let processingDeferred;\n const cleanup = () => __awaiter(this, void 0, void 0, function* () {\n if (processingKey !== undefined) {\n // If we are already processing an item, we can safely exit\n return;\n }\n const setupTimer = (item) => __awaiter(this, void 0, void 0, function* () {\n processingDeferred = p_defer_1.default();\n const delay = item[1][property] - Date.now();\n if (delay <= 0) {\n // Remove the item immediately if the delay is equal to or below 0\n map.delete(item[0]);\n processingDeferred.resolve();\n return;\n }\n // Keep track of the current processed key\n processingKey = item[0];\n processingTimer = setTimeout(() => {\n // Remove the item when the timeout fires\n map.delete(item[0]);\n if (processingDeferred) {\n processingDeferred.resolve();\n }\n }, delay);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof processingTimer.unref === 'function') {\n // Don't hold up the process from exiting\n processingTimer.unref();\n }\n return processingDeferred.promise;\n });\n try {\n for (const entry of map) {\n yield setupTimer(entry);\n }\n }\n catch (_a) {\n // Do nothing if an error occurs, this means the timer was cleaned up and we should stop processing\n }\n processingKey = undefined;\n });\n const reset = () => {\n processingKey = undefined;\n if (processingTimer !== undefined) {\n clearTimeout(processingTimer);\n processingTimer = undefined;\n }\n if (processingDeferred !== undefined) { // tslint:disable-line:early-exit\n processingDeferred.reject(undefined);\n processingDeferred = undefined;\n }\n };\n const originalSet = map.set.bind(map);\n map.set = (key, value) => {\n if (map.has(key)) {\n // If the key already exist, remove it so we can add it back at the end of the map.\n map.delete(key);\n }\n // Call the original `map.set`\n const result = originalSet(key, value);\n // If we are already processing a key and the key added is the current processed key, stop processing it\n if (processingKey && processingKey === key) {\n reset();\n }\n // Always run the cleanup method in case it wasn't started yet\n cleanup(); // tslint:disable-line:no-floating-promises\n return result;\n };\n cleanup(); // tslint:disable-line:no-floating-promises\n return map;\n}\nexports.default = mapAgeCleaner;\n// Add support for CJS\nmodule.exports = mapAgeCleaner;\nmodule.exports.default = mapAgeCleaner;\n"],"names":["__awaiter","this","thisArg","_arguments","P","generator","resolve","reject","fulfilled","value","step","e","rejected","result","__importDefault","mod","exports","p_defer_1","require$$0","mapAgeCleaner","map","property","processingKey","processingTimer","processingDeferred","cleanup","setupTimer","item","delay","entry","reset","originalSet","key","module"],"mappings":"0HACA,IAAIA,EAAaC,GAAQA,EAAK,WAAc,SAAUC,EAASC,EAAYC,EAAGC,EAAW,CACrF,OAAO,IAAKD,IAAMA,EAAI,UAAU,SAAUE,EAASC,EAAQ,CACvD,SAASC,EAAUC,EAAO,CAAE,GAAI,CAAEC,EAAKL,EAAU,KAAKI,CAAK,CAAC,CAAE,OAAUE,EAAG,CAAEJ,EAAOI,CAAC,EAAM,CAC3F,SAASC,EAASH,EAAO,CAAE,GAAI,CAAEC,EAAKL,EAAU,MAASI,CAAK,CAAC,CAAI,OAAQE,EAAG,CAAEJ,EAAOI,CAAC,EAAM,CAC9F,SAASD,EAAKG,EAAQ,CAAEA,EAAO,KAAOP,EAAQO,EAAO,KAAK,EAAI,IAAIT,EAAE,SAAUE,EAAS,CAAEA,EAAQO,EAAO,KAAK,EAAI,EAAE,KAAKL,EAAWI,CAAQ,CAAI,CAC/IF,GAAML,EAAYA,EAAU,MAAMH,EAASC,GAAc,CAAE,CAAA,GAAG,KAAI,CAAE,CAC5E,CAAK,CACL,EACIW,EAAmBb,GAAQA,EAAK,iBAAoB,SAAUc,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAcC,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,MAAMC,EAAYH,EAAgBI,CAAkB,EACpD,SAASC,EAAcC,EAAKC,EAAW,SAAU,CAC7C,IAAIC,EACAC,EACAC,EACJ,MAAMC,EAAU,IAAMzB,EAAU,KAAM,OAAQ,OAAQ,WAAa,CAC/D,GAAIsB,IAAkB,OAElB,OAEJ,MAAMI,EAAcC,GAAS3B,EAAU,KAAM,OAAQ,OAAQ,WAAa,CACtEwB,EAAqBP,EAAU,UAC/B,MAAMW,EAAQD,EAAK,CAAC,EAAEN,CAAQ,EAAI,KAAK,MACvC,GAAIO,GAAS,EAAG,CAEZR,EAAI,OAAOO,EAAK,CAAC,CAAC,EAClBH,EAAmB,QAAO,EAC1B,MACH,CAED,OAAAF,EAAgBK,EAAK,CAAC,EACtBJ,EAAkB,WAAW,IAAM,CAE/BH,EAAI,OAAOO,EAAK,CAAC,CAAC,EACdH,GACAA,EAAmB,QAAO,CAEjC,EAAEI,CAAK,EAEJ,OAAOL,EAAgB,OAAU,YAEjCA,EAAgB,MAAK,EAElBC,EAAmB,OACtC,CAAS,EACD,GAAI,CACA,UAAWK,KAAST,EAChB,MAAMM,EAAWG,CAAK,CAE7B,MACU,CAEV,CACDP,EAAgB,MACxB,CAAK,EACKQ,EAAQ,IAAM,CAChBR,EAAgB,OACZC,IAAoB,SACpB,aAAaA,CAAe,EAC5BA,EAAkB,QAElBC,IAAuB,SACvBA,EAAmB,OAAO,MAAS,EACnCA,EAAqB,OAEjC,EACUO,EAAcX,EAAI,IAAI,KAAKA,CAAG,EACpC,OAAAA,EAAI,IAAM,CAACY,EAAKvB,IAAU,CAClBW,EAAI,IAAIY,CAAG,GAEXZ,EAAI,OAAOY,CAAG,EAGlB,MAAMnB,EAASkB,EAAYC,EAAKvB,CAAK,EAErC,OAAIa,GAAiBA,IAAkBU,GACnCF,IAGJL,IACOZ,CACf,EACIY,IACOL,CACV,CACDJ,EAAA,QAAkBG,EAElBc,EAAA,QAAiBd,EACjBc,EAAA,QAAA,QAAyBd","x_google_ignoreList":[0]}