@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
TypeScript
/**
* @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";