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) 2.23 kB
/** * @module CircuitBreaker */ /** * @internal */ export declare const backoffsLua = "\n-- @param args WithJitterArgs\n-- @return number\nlocal function withJitter(args)\n if args.jitter ~= nil and args.jitter ~= cjson.null then\n return (1 - args.jitter * args.mathRandom) * args.value\n end\n\n return args.value\nend\n\n-- @param settings Required<SerializedConstantBackoffSettings>\n-- @return BackoffPolicy\nlocal function constantBackoff(settings)\n -- @param _attempt number\n -- @return number\n return function(_attempt)\n return withJitter({\n jitter = settings.jitter,\n value = settings.delay,\n mathRandom = settings._mathRandom,\n })\n end\nend\n\n-- @param settings Required<SerializedExponentialBackoffSettings>\n-- @return BackoffPolicy\nlocal function exponentialBackoff(settings)\n -- @param attempt number\n -- @return number\n return function(attempt)\n local exponential = math.min(settings.maxDelay, settings.minDelay, math.pow(settings.multiplier, attempt))\n return withJitter({\n jitter = settings.jitter,\n value = exponential,\n mathRandom = settings._mathRandom,\n })\n end\nend\n\n-- @param settings Required<SerializedLinearBackoffSettings>\n-- @return BackoffPolicy\nlocal function linearBackoff(settings)\n -- @param attempt number\n -- @return number\n return function(attempt)\n local linear = math.min(settings.maxDelay, settings.minDelay * attempt)\n return withJitter({\n jitter = settings.jitter,\n value = linear,\n mathRandom = settings._mathRandom,\n })\n end\nend\n\n\n-- @param settings Required<SerializedPolynomialBackoffSettings>\n-- @return BackoffPolicy\nlocal function polynomialBackoff(settings)\n -- @param attempt number\n -- @return number\n return function(attempt)\n local polynomial = math.min(settings.maxDelay, settings.minDelay * math.pow(attempt, settings.degree))\n return withJitter({\n jitter = settings.jitter,\n value = polynomial,\n mathRandom = settings._mathRandom,\n })\n end\nend\n";