@softchef/cdk-iot-device-management
Version:
IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.
78 lines (77 loc) • 3.29 kB
JavaScript
import { __assign, __awaiter, __generator } from "tslib";
import { AdaptiveRetryStrategy } from "./AdaptiveRetryStrategy";
import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES } from "./config";
import { StandardRetryStrategy } from "./StandardRetryStrategy";
export var ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS";
export var CONFIG_MAX_ATTEMPTS = "max_attempts";
export var NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {
environmentVariableSelector: function (env) {
var value = env[ENV_MAX_ATTEMPTS];
if (!value)
return undefined;
var maxAttempt = parseInt(value);
if (Number.isNaN(maxAttempt)) {
throw new Error("Environment variable " + ENV_MAX_ATTEMPTS + " mast be a number, got \"" + value + "\"");
}
return maxAttempt;
},
configFileSelector: function (profile) {
var value = profile[CONFIG_MAX_ATTEMPTS];
if (!value)
return undefined;
var maxAttempt = parseInt(value);
if (Number.isNaN(maxAttempt)) {
throw new Error("Shared config file entry " + CONFIG_MAX_ATTEMPTS + " mast be a number, got \"" + value + "\"");
}
return maxAttempt;
},
default: DEFAULT_MAX_ATTEMPTS,
};
export var resolveRetryConfig = function (input) {
var maxAttempts = normalizeMaxAttempts(input.maxAttempts);
return __assign(__assign({}, input), { maxAttempts: maxAttempts, retryStrategy: function () { return __awaiter(void 0, void 0, void 0, function () {
var retryMode;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (input.retryStrategy) {
return [2, input.retryStrategy];
}
return [4, getRetryMode(input.retryMode)];
case 1:
retryMode = _a.sent();
if (retryMode === RETRY_MODES.ADAPTIVE) {
return [2, new AdaptiveRetryStrategy(maxAttempts)];
}
return [2, new StandardRetryStrategy(maxAttempts)];
}
});
}); } });
};
var getRetryMode = function (retryMode) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (typeof retryMode === "string") {
return [2, retryMode];
}
return [4, retryMode()];
case 1: return [2, _a.sent()];
}
});
}); };
var normalizeMaxAttempts = function (maxAttempts) {
if (maxAttempts === void 0) { maxAttempts = DEFAULT_MAX_ATTEMPTS; }
if (typeof maxAttempts === "number") {
var promisified_1 = Promise.resolve(maxAttempts);
return function () { return promisified_1; };
}
return maxAttempts;
};
export var ENV_RETRY_MODE = "AWS_RETRY_MODE";
export var CONFIG_RETRY_MODE = "retry_mode";
export var NODE_RETRY_MODE_CONFIG_OPTIONS = {
environmentVariableSelector: function (env) { return env[ENV_RETRY_MODE]; },
configFileSelector: function (profile) { return profile[CONFIG_RETRY_MODE]; },
default: DEFAULT_RETRY_MODE,
};