20 lines
613 B
TypeScript
20 lines
613 B
TypeScript
const lastRunMap = new Map();
|
|
|
|
/**
|
|
* Returns true if the function with a given key was called within the last `seconds`.
|
|
* @param {string} key - Unique key to track cooldown per function/context.
|
|
* @param {number} seconds - Cooldown in seconds.
|
|
* @returns {boolean} - true if should skip (still in cooldown), false if allowed.
|
|
*/
|
|
export function shouldSkipByCooldown(key: any, seconds: any) {
|
|
const now = Date.now();
|
|
const cooldown = seconds * 1000;
|
|
|
|
if (lastRunMap.has(key) && now - lastRunMap.get(key) < cooldown) {
|
|
return true;
|
|
}
|
|
|
|
lastRunMap.set(key, now);
|
|
return false;
|
|
}
|