diff --git a/packages/util-waiter/package.json b/packages/util-waiter/package.json index 6ce26782ea85..2c7a4e8a725a 100644 --- a/packages/util-waiter/package.json +++ b/packages/util-waiter/package.json @@ -4,10 +4,10 @@ "description": "Shared utilities for client waiters for the AWS SDK", "dependencies": { "@aws-sdk/abort-controller": "3.0.0", - "@aws-sdk/types": "3.0.0", "tslib": "^1.8.0" }, "devDependencies": { + "@aws-sdk/types": "3.0.0", "@types/jest": "^26.0.4", "jest": "^26.1.0", "typescript": "~4.1.2" diff --git a/packages/util-waiter/src/createWaiter.ts b/packages/util-waiter/src/createWaiter.ts index dab4476a56df..ae0fe46bbb1e 100644 --- a/packages/util-waiter/src/createWaiter.ts +++ b/packages/util-waiter/src/createWaiter.ts @@ -1,13 +1,8 @@ import { AbortSignal } from "@aws-sdk/types"; import { runPolling } from "./poller"; -import { sleep, validateWaiterOptions } from "./utils"; -import { SmithyClient, WaiterOptions, WaiterResult, waiterServiceDefaults, WaiterState } from "./waiter"; - -const waiterTimeout = async (seconds: number): Promise => { - await sleep(seconds); - return { state: WaiterState.TIMEOUT }; -}; +import { validateWaiterOptions } from "./utils"; +import { WaiterOptions, WaiterResult, waiterServiceDefaults, WaiterState } from "./waiter"; const abortTimeout = async (abortSignal: AbortSignal): Promise => { return new Promise((resolve) => { @@ -24,7 +19,7 @@ const abortTimeout = async (abortSignal: AbortSignal): Promise => * * @internal */ -export const createWaiter = async ( +export const createWaiter = async ( options: WaiterOptions, input: Input, acceptorChecks: (client: Client, input: Input) => Promise diff --git a/packages/util-waiter/src/poller.ts b/packages/util-waiter/src/poller.ts index 70da94b046a5..33b9e42e87b4 100644 --- a/packages/util-waiter/src/poller.ts +++ b/packages/util-waiter/src/poller.ts @@ -1,5 +1,5 @@ import { sleep } from "./utils/sleep"; -import { ResolvedWaiterOptions, SmithyClient, WaiterResult, WaiterState } from "./waiter"; +import { ResolvedWaiterOptions, WaiterResult, WaiterState } from "./waiter"; /** * Reference: https://awslabs.github.io/smithy/1.0/spec/waiters.html#waiter-retries @@ -19,10 +19,10 @@ const randomInRange = (min: number, max: number) => min + Math.random() * (max - * @param input client input * @param stateChecker function that checks the acceptor states on each poll. */ -export const runPolling = async ( - { minDelay, maxDelay, maxWaitTime, abortController, client }: ResolvedWaiterOptions, - input: S, - acceptorChecks: (client: T, input: S) => Promise +export const runPolling = async ( + { minDelay, maxDelay, maxWaitTime, abortController, client }: ResolvedWaiterOptions, + input: Input, + acceptorChecks: (client: Client, input: Input) => Promise ): Promise => { let currentAttempt = 1; const waitUntil = Date.now() + maxWaitTime * 1000; diff --git a/packages/util-waiter/src/utils/validate.ts b/packages/util-waiter/src/utils/validate.ts index 63e256fe752f..9db7c64abc9d 100644 --- a/packages/util-waiter/src/utils/validate.ts +++ b/packages/util-waiter/src/utils/validate.ts @@ -1,10 +1,10 @@ -import { ResolvedWaiterOptions, SmithyClient } from "../waiter"; +import { ResolvedWaiterOptions } from "../waiter"; /** * Validates that waiter options are passed correctly * @param options a waiter configuration object */ -export const validateWaiterOptions = (options: ResolvedWaiterOptions): void => { +export const validateWaiterOptions = (options: ResolvedWaiterOptions): void => { if (options.maxWaitTime < 1) { throw `WaiterOptions.maxWaitTime must be greater than 0`; } else if (options.maxWaitTime <= options.minDelay) { diff --git a/packages/util-waiter/src/waiter.ts b/packages/util-waiter/src/waiter.ts index 293585253c44..66575e35383e 100644 --- a/packages/util-waiter/src/waiter.ts +++ b/packages/util-waiter/src/waiter.ts @@ -1,10 +1,6 @@ -import { AbortController, Client } from "@aws-sdk/types"; +import { AbortController } from "@aws-sdk/types"; -/** - * @internal - */ -export type SmithyClient = Client; -export interface WaiterConfiguration { +export interface WaiterConfiguration { /** * Required service client */ @@ -21,7 +17,7 @@ export interface WaiterConfiguration { abortController?: AbortController; } -export interface WaiterOptions extends WaiterConfiguration { +export interface WaiterOptions extends WaiterConfiguration { /** * The minimum amount of time to delay between retries in seconds. This value defaults * to 2 if not specified. If specified, this value MUST be greater than or equal to 1 @@ -48,7 +44,7 @@ export const waiterServiceDefaults = { /** * @private */ -export type ResolvedWaiterOptions = WaiterOptions & +export type ResolvedWaiterOptions = WaiterOptions & Required, "minDelay" | "maxDelay">>; export enum WaiterState {