1 | import { __assign, __awaiter, __generator } from "tslib";
|
2 | import { normalizeProvider } from "@aws-sdk/util-middleware";
|
3 | import { AdaptiveRetryStrategy } from "./AdaptiveRetryStrategy";
|
4 | import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES } from "./config";
|
5 | import { StandardRetryStrategy } from "./StandardRetryStrategy";
|
6 | export var ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS";
|
7 | export var CONFIG_MAX_ATTEMPTS = "max_attempts";
|
8 | export var NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {
|
9 | environmentVariableSelector: function (env) {
|
10 | var value = env[ENV_MAX_ATTEMPTS];
|
11 | if (!value)
|
12 | return undefined;
|
13 | var maxAttempt = parseInt(value);
|
14 | if (Number.isNaN(maxAttempt)) {
|
15 | throw new Error("Environment variable ".concat(ENV_MAX_ATTEMPTS, " mast be a number, got \"").concat(value, "\""));
|
16 | }
|
17 | return maxAttempt;
|
18 | },
|
19 | configFileSelector: function (profile) {
|
20 | var value = profile[CONFIG_MAX_ATTEMPTS];
|
21 | if (!value)
|
22 | return undefined;
|
23 | var maxAttempt = parseInt(value);
|
24 | if (Number.isNaN(maxAttempt)) {
|
25 | throw new Error("Shared config file entry ".concat(CONFIG_MAX_ATTEMPTS, " mast be a number, got \"").concat(value, "\""));
|
26 | }
|
27 | return maxAttempt;
|
28 | },
|
29 | default: DEFAULT_MAX_ATTEMPTS,
|
30 | };
|
31 | export var resolveRetryConfig = function (input) {
|
32 | var _a;
|
33 | var maxAttempts = normalizeProvider((_a = input.maxAttempts) !== null && _a !== void 0 ? _a : DEFAULT_MAX_ATTEMPTS);
|
34 | return __assign(__assign({}, input), { maxAttempts: maxAttempts, retryStrategy: function () { return __awaiter(void 0, void 0, void 0, function () {
|
35 | var retryMode;
|
36 | return __generator(this, function (_a) {
|
37 | switch (_a.label) {
|
38 | case 0:
|
39 | if (input.retryStrategy) {
|
40 | return [2, input.retryStrategy];
|
41 | }
|
42 | return [4, normalizeProvider(input.retryMode)()];
|
43 | case 1:
|
44 | retryMode = _a.sent();
|
45 | if (retryMode === RETRY_MODES.ADAPTIVE) {
|
46 | return [2, new AdaptiveRetryStrategy(maxAttempts)];
|
47 | }
|
48 | return [2, new StandardRetryStrategy(maxAttempts)];
|
49 | }
|
50 | });
|
51 | }); } });
|
52 | };
|
53 | export var ENV_RETRY_MODE = "AWS_RETRY_MODE";
|
54 | export var CONFIG_RETRY_MODE = "retry_mode";
|
55 | export var NODE_RETRY_MODE_CONFIG_OPTIONS = {
|
56 | environmentVariableSelector: function (env) { return env[ENV_RETRY_MODE]; },
|
57 | configFileSelector: function (profile) { return profile[CONFIG_RETRY_MODE]; },
|
58 | default: DEFAULT_RETRY_MODE,
|
59 | };
|