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.

8 lines (7 loc) 1.81 kB
/** * @module RateLimiter */ /** * @internal */ export declare const fixedWindowLimiterLua = "\n-- @param settings Required<SerializedFixedWindowLimiterSettings>\n-- @return IRateLimiterPolicy<FixedWindowLimiterState>\nlocal function FixedWindowLimiter(settings)\n return {\n -- @param currentDate number\n -- @return FixedWindowLimiterState\n initialMetrics = function(currentDate)\n return {\n attempt = 0,\n lastAttemptAt = currentDate\n }\n end,\n\n -- @param currentMetrics FixedWindowLimiterState\n -- @param limit number\n -- @param currentDate number\n shouldBlock = function(currentMetrics, limit, currentDate)\n local timeSinceLastAttempt = currentDate - currentMetrics.lastAttemptAt\n return timeSinceLastAttempt < settings.window and currentMetrics.attempt > limit\n end,\n\n -- @param currentMetrics FixedWindowLimiterState\n -- @param _currentDate number\n -- @return number\n getExpiration = function(currentMetrics, _currentDate)\n return settings.window + currentMetrics.lastAttemptAt\n end,\n\n -- @param currentMetrics FixedWindowLimiterState\n -- @param _currentDate number\n -- @return number\n getAttempts = function(currentMetrics, _currentDate)\n return currentMetrics.attempt\n end,\n\n -- @param currentMetrics FixedWindowLimiterState\n -- @param currentDate number\n -- @return FixedWindowLimiterState\n updateMetrics = function(currentMetrics, currentDate)\n return {\n attempt = currentMetrics.attempt + 1,\n lastAttemptAt = currentDate\n }\n end\n }\nend\n";