@nesvet/n
Version:
Various utilities
20 lines • 698 B
JavaScript
const timeoutsMapMap = new Map(); // eslint-disable-line @typescript-eslint/no-explicit-any
export function cleanup(map, key) {
map.delete(key);
const timeoutsMap = timeoutsMapMap.get(map);
if (timeoutsMap) {
const timeout = timeoutsMap.get(key);
if (timeout) {
clearTimeout(timeout);
timeoutsMap.delete(key);
}
if (!timeoutsMap.size)
timeoutsMapMap.delete(map);
}
}
export function setup(map, key, ms) {
const timeout = setTimeout(() => cleanup(map, key), ms);
timeoutsMapMap.get(map)?.set(key, timeout) ??
timeoutsMapMap.set(map, new Map([[key, timeout]]));
}
//# sourceMappingURL=timeouts.js.map