UNPKG

@temporalio/common

Version:

Common library for code that's used across the Client, Worker, and/or Workflow

61 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compileRetryPolicy = compileRetryPolicy; exports.decompileRetryPolicy = decompileRetryPolicy; const errors_1 = require("./errors"); const time_1 = require("./time"); /** * Turn a TS RetryPolicy into a proto compatible RetryPolicy */ function compileRetryPolicy(retryPolicy) { if (retryPolicy.backoffCoefficient != null && retryPolicy.backoffCoefficient <= 0) { throw new errors_1.ValueError('RetryPolicy.backoffCoefficient must be greater than 0'); } if (retryPolicy.maximumAttempts != null) { if (retryPolicy.maximumAttempts === Number.POSITIVE_INFINITY) { // drop field (Infinity is the default) const { maximumAttempts: _, ...without } = retryPolicy; retryPolicy = without; } else if (retryPolicy.maximumAttempts <= 0) { throw new errors_1.ValueError('RetryPolicy.maximumAttempts must be a positive integer'); } else if (!Number.isInteger(retryPolicy.maximumAttempts)) { throw new errors_1.ValueError('RetryPolicy.maximumAttempts must be an integer'); } } const maximumInterval = (0, time_1.msOptionalToNumber)(retryPolicy.maximumInterval); const initialInterval = (0, time_1.msToNumber)(retryPolicy.initialInterval ?? 1000); if (maximumInterval === 0) { throw new errors_1.ValueError('RetryPolicy.maximumInterval cannot be 0'); } if (initialInterval === 0) { throw new errors_1.ValueError('RetryPolicy.initialInterval cannot be 0'); } if (maximumInterval != null && maximumInterval < initialInterval) { throw new errors_1.ValueError('RetryPolicy.maximumInterval cannot be less than its initialInterval'); } return { maximumAttempts: retryPolicy.maximumAttempts, initialInterval: (0, time_1.msToTs)(initialInterval), maximumInterval: (0, time_1.msOptionalToTs)(maximumInterval), backoffCoefficient: retryPolicy.backoffCoefficient, nonRetryableErrorTypes: retryPolicy.nonRetryableErrorTypes, }; } /** * Turn a proto compatible RetryPolicy into a TS RetryPolicy */ function decompileRetryPolicy(retryPolicy) { if (!retryPolicy) { return undefined; } return { backoffCoefficient: retryPolicy.backoffCoefficient ?? undefined, maximumAttempts: retryPolicy.maximumAttempts ?? undefined, maximumInterval: (0, time_1.optionalTsToMs)(retryPolicy.maximumInterval), initialInterval: (0, time_1.optionalTsToMs)(retryPolicy.initialInterval), nonRetryableErrorTypes: retryPolicy.nonRetryableErrorTypes ?? undefined, }; } //# sourceMappingURL=retry-policy.js.map