| Current Path : /usr/local/lib/node_modules/@google/gemini-cli/node_modules/es-toolkit/dist/function/ |
| Current File : //usr/local/lib/node_modules/@google/gemini-cli/node_modules/es-toolkit/dist/function/throttle.mjs |
import { debounce } from './debounce.mjs';
function throttle(func, throttleMs, { signal, edges = ['leading', 'trailing'] } = {}) {
let pendingAt = null;
const debounced = debounce(func, throttleMs, { signal, edges });
const throttled = function (...args) {
if (pendingAt == null) {
pendingAt = Date.now();
}
else {
if (Date.now() - pendingAt >= throttleMs) {
pendingAt = Date.now();
debounced.cancel();
}
}
debounced(...args);
};
throttled.cancel = debounced.cancel;
throttled.flush = debounced.flush;
return throttled;
}
export { throttle };