UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

55 lines (51 loc) 1.81 kB
/** * @module RateLimiter */ /** * @internal */ export const fixedWindowLimiterLua = ` -- @param settings Required<SerializedFixedWindowLimiterSettings> -- @return IRateLimiterPolicy<FixedWindowLimiterState> local function FixedWindowLimiter(settings) return { -- @param currentDate number -- @return FixedWindowLimiterState initialMetrics = function(currentDate) return { attempt = 0, lastAttemptAt = currentDate } end, -- @param currentMetrics FixedWindowLimiterState -- @param limit number -- @param currentDate number shouldBlock = function(currentMetrics, limit, currentDate) local timeSinceLastAttempt = currentDate - currentMetrics.lastAttemptAt return timeSinceLastAttempt < settings.window and currentMetrics.attempt > limit end, -- @param currentMetrics FixedWindowLimiterState -- @param _currentDate number -- @return number getExpiration = function(currentMetrics, _currentDate) return settings.window + currentMetrics.lastAttemptAt end, -- @param currentMetrics FixedWindowLimiterState -- @param _currentDate number -- @return number getAttempts = function(currentMetrics, _currentDate) return currentMetrics.attempt end, -- @param currentMetrics FixedWindowLimiterState -- @param currentDate number -- @return FixedWindowLimiterState updateMetrics = function(currentMetrics, currentDate) return { attempt = currentMetrics.attempt + 1, lastAttemptAt = currentDate } end } end `; //# sourceMappingURL=fixed-window-limiter-lua.js.map