From b0e6fece078fa192fc61a81d1dee7228e12bab4f Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Wed, 26 May 2021 22:27:33 +0000 Subject: [PATCH] chore(middleware-retry): move non-config interfaces to types.ts --- .../middleware-retry/src/defaultRetryQuota.ts | 2 +- .../src/defaultStrategy.spec.ts | 3 +- .../middleware-retry/src/defaultStrategy.ts | 42 +------------------ packages/middleware-retry/src/index.ts | 1 + packages/middleware-retry/src/types.ts | 42 +++++++++++++++++++ 5 files changed, 47 insertions(+), 43 deletions(-) create mode 100644 packages/middleware-retry/src/types.ts diff --git a/packages/middleware-retry/src/defaultRetryQuota.ts b/packages/middleware-retry/src/defaultRetryQuota.ts index 1ee56b5c0071..31010ef63664 100644 --- a/packages/middleware-retry/src/defaultRetryQuota.ts +++ b/packages/middleware-retry/src/defaultRetryQuota.ts @@ -1,7 +1,7 @@ import { SdkError } from "@aws-sdk/smithy-client"; import { NO_RETRY_INCREMENT, RETRY_COST, TIMEOUT_RETRY_COST } from "./constants"; -import { RetryQuota } from "./defaultStrategy"; +import { RetryQuota } from "./types"; export const getDefaultRetryQuota = (initialRetryTokens: number): RetryQuota => { const MAX_CAPACITY = initialRetryTokens; diff --git a/packages/middleware-retry/src/defaultStrategy.spec.ts b/packages/middleware-retry/src/defaultStrategy.spec.ts index e007a78f9bd2..fc5d868679cd 100644 --- a/packages/middleware-retry/src/defaultStrategy.spec.ts +++ b/packages/middleware-retry/src/defaultStrategy.spec.ts @@ -4,9 +4,10 @@ import { v4 } from "uuid"; import { DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, THROTTLING_RETRY_DELAY_BASE } from "./constants"; import { getDefaultRetryQuota } from "./defaultRetryQuota"; -import { DEFAULT_MAX_ATTEMPTS, RetryQuota, StandardRetryStrategy } from "./defaultStrategy"; +import { DEFAULT_MAX_ATTEMPTS, StandardRetryStrategy } from "./defaultStrategy"; import { defaultDelayDecider } from "./delayDecider"; import { defaultRetryDecider } from "./retryDecider"; +import { RetryQuota } from "./types"; jest.mock("@aws-sdk/service-error-classification"); jest.mock("./delayDecider"); diff --git a/packages/middleware-retry/src/defaultStrategy.ts b/packages/middleware-retry/src/defaultStrategy.ts index 4b07ae3eb6f5..f9b334504da0 100644 --- a/packages/middleware-retry/src/defaultStrategy.ts +++ b/packages/middleware-retry/src/defaultStrategy.ts @@ -14,6 +14,7 @@ import { import { getDefaultRetryQuota } from "./defaultRetryQuota"; import { defaultDelayDecider } from "./delayDecider"; import { defaultRetryDecider } from "./retryDecider"; +import { DelayDecider, RetryDecider, RetryQuota } from "./types"; /** * The default value for how many HTTP requests an SDK should make for a @@ -26,47 +27,6 @@ export const DEFAULT_MAX_ATTEMPTS = 3; */ export const DEFAULT_RETRY_MODE = "standard"; -/** - * Determines whether an error is retryable based on the number of retries - * already attempted, the HTTP status code, and the error received (if any). - * - * @param error The error encountered. - */ -export interface RetryDecider { - (error: SdkError): boolean; -} - -/** - * Determines the number of milliseconds to wait before retrying an action. - * - * @param delayBase The base delay (in milliseconds). - * @param attempts The number of times the action has already been tried. - */ -export interface DelayDecider { - (delayBase: number, attempts: number): number; -} - -/** - * Interface that specifies the retry quota behavior. - */ -export interface RetryQuota { - /** - * returns true if retry tokens are available from the retry quota bucket. - */ - hasRetryTokens: (error: SdkError) => boolean; - - /** - * returns token amount from the retry quota bucket. - * throws error is retry tokens are not available. - */ - retrieveRetryTokens: (error: SdkError) => number; - - /** - * releases tokens back to the retry quota. - */ - releaseRetryTokens: (releaseCapacityAmount?: number) => void; -} - /** * Strategy options to be passed to StandardRetryStrategy */ diff --git a/packages/middleware-retry/src/index.ts b/packages/middleware-retry/src/index.ts index 929d7e1237fa..6013d7d0e74c 100644 --- a/packages/middleware-retry/src/index.ts +++ b/packages/middleware-retry/src/index.ts @@ -4,3 +4,4 @@ export * from "./defaultStrategy"; export * from "./configurations"; export * from "./delayDecider"; export * from "./retryDecider"; +export * from "./types"; diff --git a/packages/middleware-retry/src/types.ts b/packages/middleware-retry/src/types.ts new file mode 100644 index 000000000000..e480758de0ba --- /dev/null +++ b/packages/middleware-retry/src/types.ts @@ -0,0 +1,42 @@ +import { SdkError } from "@aws-sdk/smithy-client"; + +/** + * Determines whether an error is retryable based on the number of retries + * already attempted, the HTTP status code, and the error received (if any). + * + * @param error The error encountered. + */ +export interface RetryDecider { + (error: SdkError): boolean; +} + +/** + * Determines the number of milliseconds to wait before retrying an action. + * + * @param delayBase The base delay (in milliseconds). + * @param attempts The number of times the action has already been tried. + */ +export interface DelayDecider { + (delayBase: number, attempts: number): number; +} + +/** + * Interface that specifies the retry quota behavior. + */ +export interface RetryQuota { + /** + * returns true if retry tokens are available from the retry quota bucket. + */ + hasRetryTokens: (error: SdkError) => boolean; + + /** + * returns token amount from the retry quota bucket. + * throws error is retry tokens are not available. + */ + retrieveRetryTokens: (error: SdkError) => number; + + /** + * releases tokens back to the retry quota. + */ + releaseRetryTokens: (releaseCapacityAmount?: number) => void; +}