1 | import { requestMethods } from '../core/constants.js';
|
2 | export const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;
|
3 | const retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];
|
4 | const retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];
|
5 | const retryAfterStatusCodes = [413, 429, 503];
|
6 | const defaultRetryOptions = {
|
7 | limit: 2,
|
8 | methods: retryMethods,
|
9 | statusCodes: retryStatusCodes,
|
10 | afterStatusCodes: retryAfterStatusCodes,
|
11 | maxRetryAfter: Number.POSITIVE_INFINITY
|
12 | };
|
13 | export const normalizeRetryOptions = (retry = {}) => {
|
14 | if (typeof retry === 'number') {
|
15 | return {
|
16 | ...defaultRetryOptions,
|
17 | limit: retry
|
18 | };
|
19 | }
|
20 | if (retry.methods && !Array.isArray(retry.methods)) {
|
21 | throw new Error('retry.methods must be an array');
|
22 | }
|
23 | if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {
|
24 | throw new Error('retry.statusCodes must be an array');
|
25 | }
|
26 | return {
|
27 | ...defaultRetryOptions,
|
28 | ...retry,
|
29 | afterStatusCodes: retryAfterStatusCodes
|
30 | };
|
31 | };
|
32 |
|
\ | No newline at end of file |