@across-protocol/sdk 4.3.145-alpha.1 → 4.3.145-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/utils/common.d.ts +11 -0
- package/dist/cjs/src/utils/common.js +16 -2
- package/dist/cjs/src/utils/common.js.map +1 -1
- package/dist/esm/src/utils/common.d.ts +29 -7
- package/dist/esm/src/utils/common.js +15 -11
- package/dist/esm/src/utils/common.js.map +1 -1
- package/dist/types/src/utils/common.d.ts +29 -7
- package/dist/types/src/utils/common.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/common.ts +54 -10
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Decimal from "decimal.js";
|
|
2
2
|
import bs58 from "bs58";
|
|
3
3
|
import { ethers } from "ethers";
|
|
4
|
+
import { Struct } from "superstruct";
|
|
4
5
|
import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
|
|
5
6
|
export type Decimalish = string | number | Decimal;
|
|
6
7
|
export declare const AddressZero = "0x0000000000000000000000000000000000000000";
|
|
@@ -28,11 +29,21 @@ export type Result<T, E = Error> = {
|
|
|
28
29
|
ok: false;
|
|
29
30
|
error: E;
|
|
30
31
|
};
|
|
32
|
+
export type AttemptOptions<T = unknown> = {
|
|
33
|
+
schema?: Struct<T>;
|
|
34
|
+
};
|
|
31
35
|
export type RetryOptions = {
|
|
32
36
|
retries?: number;
|
|
33
37
|
delaySeconds?: number;
|
|
34
38
|
isRetryable?: (err: unknown) => boolean;
|
|
35
39
|
};
|
|
40
|
+
export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
|
|
41
|
+
schema: Struct<T>;
|
|
42
|
+
}): Promise<Result<T>>;
|
|
43
|
+
export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
|
|
44
|
+
export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
|
|
45
|
+
schema: Struct<T>;
|
|
46
|
+
}): Promise<Result<T>>;
|
|
36
47
|
export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
|
|
37
48
|
export type TransactionCostEstimate = {
|
|
38
49
|
nativeGasCost: BigNumber;
|
|
@@ -7,6 +7,7 @@ exports.nativeToToken = nativeToToken;
|
|
|
7
7
|
exports.calculateGasFees = calculateGasFees;
|
|
8
8
|
exports.percent = percent;
|
|
9
9
|
exports.delay = delay;
|
|
10
|
+
exports.attempt = attempt;
|
|
10
11
|
exports.retry = retry;
|
|
11
12
|
exports.randomAddress = randomAddress;
|
|
12
13
|
const tslib_1 = require("tslib");
|
|
@@ -14,6 +15,7 @@ const decimal_js_1 = tslib_1.__importDefault(require("decimal.js"));
|
|
|
14
15
|
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
15
16
|
exports.bs58 = bs58_1.default;
|
|
16
17
|
const ethers_1 = require("ethers");
|
|
18
|
+
const superstruct_1 = require("superstruct");
|
|
17
19
|
const BigNumberUtils_1 = require("./BigNumberUtils");
|
|
18
20
|
const FormattingUtils_1 = require("./FormattingUtils");
|
|
19
21
|
exports.AddressZero = ethers_1.ethers.constants.AddressZero;
|
|
@@ -100,12 +102,24 @@ const DEFAULT_RETRY_OPTIONS = {
|
|
|
100
102
|
delaySeconds: 1,
|
|
101
103
|
isRetryable: () => true,
|
|
102
104
|
};
|
|
105
|
+
async function attempt(call, options = {}) {
|
|
106
|
+
try {
|
|
107
|
+
const raw = await call();
|
|
108
|
+
const value = options.schema ? (0, superstruct_1.create)(raw, options.schema) : raw;
|
|
109
|
+
return { ok: true, value };
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
103
115
|
async function retry(call, options = {}) {
|
|
104
116
|
const resolved = { ...DEFAULT_RETRY_OPTIONS, ...options };
|
|
105
|
-
const backoffSeconds = (
|
|
117
|
+
const backoffSeconds = (n) => resolved.delaySeconds * 2 ** n + Math.random();
|
|
106
118
|
for (let nAttempts = 0;; ++nAttempts) {
|
|
107
119
|
try {
|
|
108
|
-
|
|
120
|
+
const raw = await call();
|
|
121
|
+
const value = options.schema ? (0, superstruct_1.create)(raw, options.schema) : raw;
|
|
122
|
+
return { ok: true, value };
|
|
109
123
|
}
|
|
110
124
|
catch (err) {
|
|
111
125
|
if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Decimal from "decimal.js";
|
|
2
2
|
import bs58 from "bs58";
|
|
3
3
|
import { ethers } from "ethers";
|
|
4
|
+
import { Struct } from "superstruct";
|
|
4
5
|
import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
|
|
5
6
|
export type Decimalish = string | number | Decimal;
|
|
6
7
|
export declare const AddressZero = "0x0000000000000000000000000000000000000000";
|
|
@@ -132,7 +133,15 @@ export type Result<T, E = Error> = {
|
|
|
132
133
|
error: E;
|
|
133
134
|
};
|
|
134
135
|
/**
|
|
135
|
-
* Configures {@link
|
|
136
|
+
* Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
|
|
137
|
+
* through `create(value, schema)` before wrapping — validation failures surface as a
|
|
138
|
+
* `{ ok: false }` Result like any other throw.
|
|
139
|
+
*/
|
|
140
|
+
export type AttemptOptions<T = unknown> = {
|
|
141
|
+
schema?: Struct<T>;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Configures the outer loop of {@link retry}. Backoff is always exponential
|
|
136
145
|
* (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
|
|
137
146
|
* rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
|
|
138
147
|
*/
|
|
@@ -145,14 +154,27 @@ export type RetryOptions = {
|
|
|
145
154
|
isRetryable?: (err: unknown) => boolean;
|
|
146
155
|
};
|
|
147
156
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
|
|
153
|
-
|
|
157
|
+
* Run a failable operation once, catching throws and returning a {@link Result}. When
|
|
158
|
+
* `schema` is supplied, the successful value is validated via `create(value, schema)`
|
|
159
|
+
* before being wrapped; a failed validation lands in `{ ok: false, error }` with the
|
|
160
|
+
* superstruct error preserved.
|
|
161
|
+
*/
|
|
162
|
+
export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
|
|
163
|
+
schema: Struct<T>;
|
|
164
|
+
}): Promise<Result<T>>;
|
|
165
|
+
export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
|
|
166
|
+
/**
|
|
167
|
+
* Loop {@link attempt} with exponential backoff until success or a terminal failure —
|
|
168
|
+
* exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
|
|
169
|
+
* validation (via `schema`) participates in the retry budget; a malformed response is
|
|
170
|
+
* retried unless `isRetryable` opts out.
|
|
171
|
+
* @param call The function to call on each attempt.
|
|
172
|
+
* @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
|
|
154
173
|
* @returns A `Result<T>` wrapping the terminal outcome.
|
|
155
174
|
*/
|
|
175
|
+
export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
|
|
176
|
+
schema: Struct<T>;
|
|
177
|
+
}): Promise<Result<T>>;
|
|
156
178
|
export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
|
|
157
179
|
export type TransactionCostEstimate = {
|
|
158
180
|
nativeGasCost: BigNumber;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Decimal from "decimal.js";
|
|
2
2
|
import bs58 from "bs58";
|
|
3
3
|
import { ethers } from "ethers";
|
|
4
|
+
import { create } from "superstruct";
|
|
4
5
|
import { BigNumber, formatUnits, parseUnits, toBN } from "./BigNumberUtils";
|
|
5
6
|
import { ConvertDecimals } from "./FormattingUtils";
|
|
6
7
|
export const AddressZero = ethers.constants.AddressZero;
|
|
@@ -180,21 +181,24 @@ const DEFAULT_RETRY_OPTIONS = {
|
|
|
180
181
|
delaySeconds: 1,
|
|
181
182
|
isRetryable: () => true,
|
|
182
183
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
184
|
+
export async function attempt(call, options = {}) {
|
|
185
|
+
try {
|
|
186
|
+
const raw = await call();
|
|
187
|
+
const value = options.schema ? create(raw, options.schema) : raw;
|
|
188
|
+
return { ok: true, value };
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
192
194
|
export async function retry(call, options = {}) {
|
|
193
195
|
const resolved = { ...DEFAULT_RETRY_OPTIONS, ...options };
|
|
194
|
-
const backoffSeconds = (
|
|
196
|
+
const backoffSeconds = (n) => resolved.delaySeconds * 2 ** n + Math.random();
|
|
195
197
|
for (let nAttempts = 0;; ++nAttempts) {
|
|
196
198
|
try {
|
|
197
|
-
|
|
199
|
+
const raw = await call();
|
|
200
|
+
const value = options.schema ? create(raw, options.schema) : raw;
|
|
201
|
+
return { ok: true, value };
|
|
198
202
|
}
|
|
199
203
|
catch (err) {
|
|
200
204
|
if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Decimal from "decimal.js";
|
|
2
2
|
import bs58 from "bs58";
|
|
3
3
|
import { ethers } from "ethers";
|
|
4
|
+
import { Struct } from "superstruct";
|
|
4
5
|
import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
|
|
5
6
|
export type Decimalish = string | number | Decimal;
|
|
6
7
|
export declare const AddressZero = "0x0000000000000000000000000000000000000000";
|
|
@@ -132,7 +133,15 @@ export type Result<T, E = Error> = {
|
|
|
132
133
|
error: E;
|
|
133
134
|
};
|
|
134
135
|
/**
|
|
135
|
-
* Configures {@link
|
|
136
|
+
* Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
|
|
137
|
+
* through `create(value, schema)` before wrapping — validation failures surface as a
|
|
138
|
+
* `{ ok: false }` Result like any other throw.
|
|
139
|
+
*/
|
|
140
|
+
export type AttemptOptions<T = unknown> = {
|
|
141
|
+
schema?: Struct<T>;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Configures the outer loop of {@link retry}. Backoff is always exponential
|
|
136
145
|
* (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
|
|
137
146
|
* rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
|
|
138
147
|
*/
|
|
@@ -145,14 +154,27 @@ export type RetryOptions = {
|
|
|
145
154
|
isRetryable?: (err: unknown) => boolean;
|
|
146
155
|
};
|
|
147
156
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
|
|
153
|
-
|
|
157
|
+
* Run a failable operation once, catching throws and returning a {@link Result}. When
|
|
158
|
+
* `schema` is supplied, the successful value is validated via `create(value, schema)`
|
|
159
|
+
* before being wrapped; a failed validation lands in `{ ok: false, error }` with the
|
|
160
|
+
* superstruct error preserved.
|
|
161
|
+
*/
|
|
162
|
+
export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
|
|
163
|
+
schema: Struct<T>;
|
|
164
|
+
}): Promise<Result<T>>;
|
|
165
|
+
export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
|
|
166
|
+
/**
|
|
167
|
+
* Loop {@link attempt} with exponential backoff until success or a terminal failure —
|
|
168
|
+
* exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
|
|
169
|
+
* validation (via `schema`) participates in the retry budget; a malformed response is
|
|
170
|
+
* retried unless `isRetryable` opts out.
|
|
171
|
+
* @param call The function to call on each attempt.
|
|
172
|
+
* @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
|
|
154
173
|
* @returns A `Result<T>` wrapping the terminal outcome.
|
|
155
174
|
*/
|
|
175
|
+
export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
|
|
176
|
+
schema: Struct<T>;
|
|
177
|
+
}): Promise<Result<T>>;
|
|
156
178
|
export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
|
|
157
179
|
export type TransactionCostEstimate = {
|
|
158
180
|
nativeGasCost: BigNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,WAAW,MAAM,KAAG,EAU9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,WAAW,MAAM,KAAG,MAA+C,CAAC;AAE/G;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AAED,eAAO,MAAM,oBAAoB,kBAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,YAAY,EACxB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,UAAU,SAAK,EACf,cAAc,SAAK,GAClB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,UAAU,YAAY,KAAG,SAEnE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,QAAQ,SAAK,GACZ,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,CAE9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GACzC,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAGF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAClB,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAEF,CAAC;AACF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,eAYvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,oBAEpC;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEpF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,6HAA6H;IAC7H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iHAAiH;IACjH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;CACzC,CAAC;AAQF;;;;;;;;GAQG;AACH,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/utils/common.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Decimal from "decimal.js";
|
|
2
2
|
import bs58 from "bs58";
|
|
3
3
|
import { ethers } from "ethers";
|
|
4
|
+
import { create, Struct } from "superstruct";
|
|
4
5
|
import { BigNumber, BigNumberish, BN, formatUnits, parseUnits, toBN } from "./BigNumberUtils";
|
|
5
6
|
import { ConvertDecimals } from "./FormattingUtils";
|
|
6
7
|
|
|
@@ -228,7 +229,16 @@ export function delay(seconds: number) {
|
|
|
228
229
|
export type Result<T, E = Error> = { ok: true; value: T } | { ok: false; error: E };
|
|
229
230
|
|
|
230
231
|
/**
|
|
231
|
-
* Configures {@link
|
|
232
|
+
* Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
|
|
233
|
+
* through `create(value, schema)` before wrapping — validation failures surface as a
|
|
234
|
+
* `{ ok: false }` Result like any other throw.
|
|
235
|
+
*/
|
|
236
|
+
export type AttemptOptions<T = unknown> = {
|
|
237
|
+
schema?: Struct<T>;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Configures the outer loop of {@link retry}. Backoff is always exponential
|
|
232
242
|
* (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
|
|
233
243
|
* rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
|
|
234
244
|
*/
|
|
@@ -248,21 +258,55 @@ const DEFAULT_RETRY_OPTIONS: Required<RetryOptions> = {
|
|
|
248
258
|
};
|
|
249
259
|
|
|
250
260
|
/**
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
|
|
256
|
-
|
|
261
|
+
* Run a failable operation once, catching throws and returning a {@link Result}. When
|
|
262
|
+
* `schema` is supplied, the successful value is validated via `create(value, schema)`
|
|
263
|
+
* before being wrapped; a failed validation lands in `{ ok: false, error }` with the
|
|
264
|
+
* superstruct error preserved.
|
|
265
|
+
*/
|
|
266
|
+
export function attempt<T>(
|
|
267
|
+
call: () => Promise<unknown>,
|
|
268
|
+
options: AttemptOptions<T> & { schema: Struct<T> }
|
|
269
|
+
): Promise<Result<T>>;
|
|
270
|
+
export function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
|
|
271
|
+
export async function attempt<T>(
|
|
272
|
+
call: () => Promise<unknown>,
|
|
273
|
+
options: AttemptOptions<T> = {}
|
|
274
|
+
): Promise<Result<T>> {
|
|
275
|
+
try {
|
|
276
|
+
const raw = await call();
|
|
277
|
+
const value = options.schema ? create(raw, options.schema) : (raw as T);
|
|
278
|
+
return { ok: true, value };
|
|
279
|
+
} catch (err) {
|
|
280
|
+
return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Loop {@link attempt} with exponential backoff until success or a terminal failure —
|
|
286
|
+
* exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
|
|
287
|
+
* validation (via `schema`) participates in the retry budget; a malformed response is
|
|
288
|
+
* retried unless `isRetryable` opts out.
|
|
289
|
+
* @param call The function to call on each attempt.
|
|
290
|
+
* @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
|
|
257
291
|
* @returns A `Result<T>` wrapping the terminal outcome.
|
|
258
292
|
*/
|
|
259
|
-
export
|
|
293
|
+
export function retry<T>(
|
|
294
|
+
call: () => Promise<unknown>,
|
|
295
|
+
options: RetryOptions & AttemptOptions<T> & { schema: Struct<T> }
|
|
296
|
+
): Promise<Result<T>>;
|
|
297
|
+
export function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
|
|
298
|
+
export async function retry<T>(
|
|
299
|
+
call: () => Promise<unknown>,
|
|
300
|
+
options: RetryOptions & AttemptOptions<T> = {}
|
|
301
|
+
): Promise<Result<T>> {
|
|
260
302
|
const resolved: Required<RetryOptions> = { ...DEFAULT_RETRY_OPTIONS, ...options };
|
|
261
|
-
const backoffSeconds = (
|
|
303
|
+
const backoffSeconds = (n: number): number => resolved.delaySeconds * 2 ** n + Math.random();
|
|
262
304
|
|
|
263
305
|
for (let nAttempts = 0; ; ++nAttempts) {
|
|
264
306
|
try {
|
|
265
|
-
|
|
307
|
+
const raw = await call();
|
|
308
|
+
const value = options.schema ? create(raw, options.schema) : (raw as T);
|
|
309
|
+
return { ok: true, value };
|
|
266
310
|
} catch (err) {
|
|
267
311
|
if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
|
|
268
312
|
return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
|