diff --git a/packages/config-resolver/src/endpointsConfig/configurations.ts b/packages/config-resolver/src/endpointsConfig/configurations.ts deleted file mode 100644 index b2bb792e4116..000000000000 --- a/packages/config-resolver/src/endpointsConfig/configurations.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@aws-sdk/types"; - -export interface EndpointsInputConfig { - /** - * The fully qualified endpoint of the webservice. This is only required when using a custom endpoint (for example, when using a local version of S3). - */ - endpoint?: string | Endpoint | Provider; - - /** - * Whether TLS is enabled for requests. - */ - tls?: boolean; -} - -export interface PreviouslyResolved { - regionInfoProvider: RegionInfoProvider; - urlParser: UrlParser; - region: Provider; -} - -export interface EndpointsResolvedConfig extends Required { - /** - * Resolved value for input {@link EndpointsResolvedConfig.endpoint} - */ - endpoint: Provider; - - /** - * Whether the endpoint is specified by caller. - * @internal - */ - isCustomEndpoint: boolean; -} diff --git a/packages/config-resolver/src/endpointsConfig/getEndpointFromRegion.ts b/packages/config-resolver/src/endpointsConfig/getEndpointFromRegion.ts index 1bedc0abc159..5125f53df345 100644 --- a/packages/config-resolver/src/endpointsConfig/getEndpointFromRegion.ts +++ b/packages/config-resolver/src/endpointsConfig/getEndpointFromRegion.ts @@ -1,6 +1,13 @@ -import { EndpointsInputConfig, PreviouslyResolved } from "./configurations"; +import { Provider, RegionInfoProvider, UrlParser } from "@aws-sdk/types"; -export const getEndpointFromRegion = async (input: EndpointsInputConfig & PreviouslyResolved) => { +interface GetEndpointFromRegionOptions { + region: Provider; + tls?: boolean; + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; +} + +export const getEndpointFromRegion = async (input: GetEndpointFromRegionOptions) => { const { tls = true } = input; const region = await input.region(); diff --git a/packages/config-resolver/src/endpointsConfig/index.ts b/packages/config-resolver/src/endpointsConfig/index.ts index 730e84edde2e..6ad656210885 100644 --- a/packages/config-resolver/src/endpointsConfig/index.ts +++ b/packages/config-resolver/src/endpointsConfig/index.ts @@ -1,2 +1 @@ -export * from "./configurations"; export * from "./resolveEndpointsConfig"; diff --git a/packages/config-resolver/src/endpointsConfig/normalizeEndpoint.ts b/packages/config-resolver/src/endpointsConfig/normalizeEndpoint.ts index 73397d215369..c1edc560beb7 100644 --- a/packages/config-resolver/src/endpointsConfig/normalizeEndpoint.ts +++ b/packages/config-resolver/src/endpointsConfig/normalizeEndpoint.ts @@ -1,11 +1,11 @@ -import { Endpoint, Provider } from "@aws-sdk/types"; +import { Endpoint, Provider, UrlParser } from "@aws-sdk/types"; -import { EndpointsInputConfig, PreviouslyResolved } from "./configurations"; +interface NormalizeEndpointOptions { + endpoint: string | Endpoint | Provider; + urlParser: UrlParser; +} -export const normalizeEndpoint = ({ - endpoint, - urlParser, -}: EndpointsInputConfig & PreviouslyResolved): Provider => { +export const normalizeEndpoint = ({ endpoint, urlParser }: NormalizeEndpointOptions): Provider => { if (typeof endpoint === "string") { const promisified = Promise.resolve(urlParser(endpoint)); return () => promisified; @@ -13,5 +13,5 @@ export const normalizeEndpoint = ({ const promisified = Promise.resolve(endpoint); return () => promisified; } - return endpoint!; + return endpoint; }; diff --git a/packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.ts b/packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.ts index d4dc3c4d64fc..005315812be8 100644 --- a/packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.ts +++ b/packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.ts @@ -1,12 +1,46 @@ -import { EndpointsInputConfig, EndpointsResolvedConfig, PreviouslyResolved } from "./configurations"; +import { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@aws-sdk/types"; + import { getEndpointFromRegion } from "./getEndpointFromRegion"; import { normalizeEndpoint } from "./normalizeEndpoint"; +export interface EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only required when using a custom endpoint (for example, when using a local version of S3). + */ + endpoint?: string | Endpoint | Provider; + + /** + * Whether TLS is enabled for requests. + */ + tls?: boolean; +} + +interface PreviouslyResolved { + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + region: Provider; +} + +export interface EndpointsResolvedConfig extends Required { + /** + * Resolved value for input {@link EndpointsResolvedConfig.endpoint} + */ + endpoint: Provider; + + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint: boolean; +} + export const resolveEndpointsConfig = ( input: T & EndpointsInputConfig & PreviouslyResolved ): T & EndpointsResolvedConfig => ({ ...input, tls: input.tls ?? true, - endpoint: input.endpoint ? normalizeEndpoint(input) : () => getEndpointFromRegion(input), + endpoint: input.endpoint + ? normalizeEndpoint({ ...input, endpoint: input.endpoint }) + : () => getEndpointFromRegion(input), isCustomEndpoint: input.endpoint ? true : false, });