Variable rateLimiterLuaConst
rateLimiterLua: "\n-- @template TMetrics\n-- @param rateLimiterStorage RateLimiterStorage<AllRateLimiterState<TMetrics>>\n-- @param rateLimiterStateManager RateLimiterStateManager<TMetrics>\n-- @param currentDate number\n-- @return IRateLimiterAdapter\nlocal function RateLimiter(rateLimiterStorage, rateLimiterStateManager, currentDate)\n return {\n -- @param key string\n -- @return IRedisJsonRateLimiterState | null\n getState = function(key)\n local state = rateLimiterStorage.find(key)\n if state == nil or state == cjson.null then\n return nil\n end\n\n return {\n success = state.success,\n attempt = state.attempt,\n resetTime = state.resetTime\n }\n end,\n\n -- @param key string\n -- @param limit number\n -- @return IRedisJsonRateLimiterState\n updateState = function(key, limit)\n local track = rateLimiterStateManager.track(currentDate) \n local updateState = rateLimiterStateManager.updateState(limit, currentDate)\n return rateLimiterStorage.atomicUpdate({\n key = key,\n update = function(prevState)\n local newState1 = track(prevState)\n local newState2 = updateState(newState1)\n return newState2\n end\n })\n end,\n }\nend\n" = ...