From 55a4f1fc869e41aca748c63d3018f0448b1606e0 Mon Sep 17 00:00:00 2001 From: pack Date: Sun, 9 Aug 2026 10:37:07 +0000 Subject: first commit --- .../exponential-backoff/src/delay/delay.base.ts | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 node_modules/exponential-backoff/src/delay/delay.base.ts (limited to 'node_modules/exponential-backoff/src/delay/delay.base.ts') diff --git a/node_modules/exponential-backoff/src/delay/delay.base.ts b/node_modules/exponential-backoff/src/delay/delay.base.ts new file mode 100644 index 0000000..bed90d6 --- /dev/null +++ b/node_modules/exponential-backoff/src/delay/delay.base.ts @@ -0,0 +1,34 @@ +import { IDelay } from "./delay.interface"; +import { IBackOffOptions } from "../options"; +import { JitterFactory } from "../jitter/jitter.factory"; + +export abstract class Delay implements IDelay { + protected attempt = 0; + constructor(private options: IBackOffOptions) {} + + public apply() { + return new Promise(resolve => setTimeout(resolve, this.jitteredDelay)); + } + + public setAttemptNumber(attempt: number) { + this.attempt = attempt; + } + + private get jitteredDelay() { + const jitter = JitterFactory(this.options); + return jitter(this.delay); + } + + private get delay() { + const constant = this.options.startingDelay; + const base = this.options.timeMultiple; + const power = this.numOfDelayedAttempts; + const delay = constant * Math.pow(base, power); + + return Math.min(delay, this.options.maxDelay); + } + + protected get numOfDelayedAttempts() { + return this.attempt; + } +} -- cgit v1.2.3