From e23392d3e5c8869eceb048c98811e28814bb3800 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:27:32 +0000 Subject: [PATCH 1/5] chore(middleware-endpoint-discovery): pass Ctor in options --- .../src/resolveEndpointDiscoveryConfig.spec.ts | 10 +++++----- .../src/resolveEndpointDiscoveryConfig.ts | 11 +++++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts index f0d554a2304ca..88a5d92ee2b1f 100644 --- a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts +++ b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts @@ -17,7 +17,7 @@ describe(resolveEndpointDiscoveryConfig.name, () => { }); it("assigns endpointDiscoveryCommandCtor in resolvedConfig", () => { - const resolvedConfig = resolveEndpointDiscoveryConfig(mockInput, endpointDiscoveryCommandCtor); + const resolvedConfig = resolveEndpointDiscoveryConfig(mockInput, { endpointDiscoveryCommandCtor }); expect(resolvedConfig.endpointDiscoveryCommandCtor).toStrictEqual(endpointDiscoveryCommandCtor); }); @@ -29,13 +29,13 @@ describe(resolveEndpointDiscoveryConfig.name, () => { ...mockInput, endpointCacheSize, }, - endpointDiscoveryCommandCtor + { endpointDiscoveryCommandCtor } ); expect(EndpointCache).toBeCalledWith(endpointCacheSize); }); it("creates cache of size 1000 if endpointCacheSize not passed", () => { - resolveEndpointDiscoveryConfig(mockInput, endpointDiscoveryCommandCtor); + resolveEndpointDiscoveryConfig(mockInput, { endpointDiscoveryCommandCtor }); expect(EndpointCache).toBeCalledWith(1000); }); }); @@ -47,7 +47,7 @@ describe(resolveEndpointDiscoveryConfig.name, () => { ...mockInput, endpointDiscoveryEnabled, }, - endpointDiscoveryCommandCtor + { endpointDiscoveryCommandCtor } ); expect(resolvedConfig.endpointDiscoveryEnabled()).resolves.toBe(endpointDiscoveryEnabled); expect(mockInput.endpointDiscoveryEnabledProvider).not.toHaveBeenCalled(); @@ -55,7 +55,7 @@ describe(resolveEndpointDiscoveryConfig.name, () => { }); it(`sets to endpointDiscoveryEnabledProvider if value is not passed`, () => { - const resolvedConfig = resolveEndpointDiscoveryConfig(mockInput, endpointDiscoveryCommandCtor); + const resolvedConfig = resolveEndpointDiscoveryConfig(mockInput, { endpointDiscoveryCommandCtor }); expect(resolvedConfig.endpointDiscoveryEnabled).toBe(mockInput.endpointDiscoveryEnabledProvider); expect(resolvedConfig.isClientEndpointDiscoveryEnabled).toStrictEqual(false); }); diff --git a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts index 6d702544b0d91..dda443f868cad 100644 --- a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts +++ b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts @@ -51,12 +51,19 @@ export interface EndpointDiscoveryResolvedConfig { isClientEndpointDiscoveryEnabled: boolean; } +export interface EndpointDiscoveryConfigOptions { + /** + * The constructor of the Command used for discovering endpoints. + */ + endpointDiscoveryCommandCtor: new (comandConfig: any) => any; +} + export const resolveEndpointDiscoveryConfig = ( input: T & PreviouslyResolved & EndpointDiscoveryInputConfig, - endpointDiscoveryCommandCtor: new (comandConfig: any) => any + options: EndpointDiscoveryConfigOptions ): T & EndpointDiscoveryResolvedConfig => ({ ...input, - endpointDiscoveryCommandCtor, + endpointDiscoveryCommandCtor: options.endpointDiscoveryCommandCtor, endpointCache: new EndpointCache(input.endpointCacheSize ?? 1000), endpointDiscoveryEnabled: input.endpointDiscoveryEnabled !== undefined From e2cfde39739a50e1bfe3ef22a879fd8889102d20 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:30:41 +0000 Subject: [PATCH 2/5] chore(middleware-sdk-sts): pass Ctor in options --- packages/middleware-sdk-sts/src/index.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/middleware-sdk-sts/src/index.ts b/packages/middleware-sdk-sts/src/index.ts index aa11e7dca4cae..01230da21ae6b 100644 --- a/packages/middleware-sdk-sts/src/index.ts +++ b/packages/middleware-sdk-sts/src/index.ts @@ -18,6 +18,13 @@ export interface StsAuthResolvedConfig extends AwsAuthResolvedConfig { stsClientCtor: new (clientConfig: any) => Client; } +export interface StsAuthConfigOptions { + /** + * Reference to STSClient class constructor. + */ + stsClientCtor: new (clientConfig: any) => Client; +} + /** * Set STS client constructor to `stsClientCtor` config parameter. It is used * for role assumers for STS client internally. See `clients/client-sts/defaultStsRoleAssumers.ts` @@ -25,10 +32,9 @@ export interface StsAuthResolvedConfig extends AwsAuthResolvedConfig { */ export const resolveStsAuthConfig = ( input: T & PreviouslyResolved & StsAuthInputConfig, - stsClientCtor: new (clientConfig: any) => Client -): T & StsAuthResolvedConfig => { - return resolveAwsAuthConfig({ + { stsClientCtor }: StsAuthConfigOptions +): T & StsAuthResolvedConfig => + resolveAwsAuthConfig({ ...input, stsClientCtor, }); -}; From 184766f088b28af0ec4fa6d94c6f9a8992349971 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:31:41 +0000 Subject: [PATCH 3/5] chore(middleware-endpoint-discovery): use destructuring in resolve function --- .../src/resolveEndpointDiscoveryConfig.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts index dda443f868cad..2306846170bfe 100644 --- a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts +++ b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.ts @@ -60,10 +60,10 @@ export interface EndpointDiscoveryConfigOptions { export const resolveEndpointDiscoveryConfig = ( input: T & PreviouslyResolved & EndpointDiscoveryInputConfig, - options: EndpointDiscoveryConfigOptions + { endpointDiscoveryCommandCtor }: EndpointDiscoveryConfigOptions ): T & EndpointDiscoveryResolvedConfig => ({ ...input, - endpointDiscoveryCommandCtor: options.endpointDiscoveryCommandCtor, + endpointDiscoveryCommandCtor, endpointCache: new EndpointCache(input.endpointCacheSize ?? 1000), endpointDiscoveryEnabled: input.endpointDiscoveryEnabled !== undefined From 500abeddf2bfa6d905e5f4a1ff9fcd6661560ead Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:34:59 +0000 Subject: [PATCH 4/5] chore(codegen): set keys for resolve function arguments --- .../amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java | 2 +- .../aws/typescript/codegen/AddEndpointDiscoveryPlugin.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java index 5bb78512bc68e..59171c15217fe 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddAwsAuthPlugin.java @@ -107,7 +107,7 @@ && isAwsService(s) .withConventions(AwsDependency.STS_MIDDLEWARE.dependency, "StsAuth", HAS_CONFIG) .additionalResolveFunctionParamsSupplier((m, s, o) -> new HashMap() {{ - put("STSClient", Symbol.builder().name("STSClient").build()); + put("stsClientCtor", Symbol.builder().name("STSClient").build()); }}) .servicePredicate((m, s) -> testServiceId(s, "STS")) .build(), diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 45ac5372eda0e..e1732de88f938 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -71,7 +71,8 @@ public List getClientPlugins() { "EndpointDiscovery", RuntimeClientPlugin.Convention.HAS_CONFIG) // ToDo: The Endpoint Discovery Command Name needs to be read from ClientEndpointDiscoveryTrait. .additionalResolveFunctionParamsSupplier((m, s, o) -> new HashMap() {{ - put("DescribeEndpointsCommand", Symbol.builder().name("DescribeEndpointsCommand").build()); + put("endpointDiscoveryCommandCtor", + Symbol.builder().name("DescribeEndpointsCommand").build()); }}) .servicePredicate((m, s) -> hasClientEndpointDiscovery(s)) .build(), From 08f804dbb19ca309c935de30e2395d6dd384ee8e Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:40:18 +0000 Subject: [PATCH 5/5] chore(clients): convert second argument of resolve to options --- clients/client-dynamodb/DynamoDBClient.ts | 4 +++- clients/client-sts/STSClient.ts | 2 +- clients/client-timestream-query/TimestreamQueryClient.ts | 4 +++- clients/client-timestream-write/TimestreamWriteClient.ts | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/clients/client-dynamodb/DynamoDBClient.ts b/clients/client-dynamodb/DynamoDBClient.ts index c8086081719d2..a95207c3e17b2 100644 --- a/clients/client-dynamodb/DynamoDBClient.ts +++ b/clients/client-dynamodb/DynamoDBClient.ts @@ -454,7 +454,9 @@ export class DynamoDBClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, { + endpointDiscoveryCommandCtor: DescribeEndpointsCommand, + }); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); diff --git a/clients/client-sts/STSClient.ts b/clients/client-sts/STSClient.ts index 6b8ad3030bee0..c7e85f819d087 100644 --- a/clients/client-sts/STSClient.ts +++ b/clients/client-sts/STSClient.ts @@ -244,7 +244,7 @@ export class STSClient extends __Client< let _config_2 = resolveEndpointsConfig(_config_1); let _config_3 = resolveRetryConfig(_config_2); let _config_4 = resolveHostHeaderConfig(_config_3); - let _config_5 = resolveStsAuthConfig(_config_4, STSClient); + let _config_5 = resolveStsAuthConfig(_config_4, { stsClientCtor: STSClient }); let _config_6 = resolveUserAgentConfig(_config_5); super(_config_6); this.config = _config_6; diff --git a/clients/client-timestream-query/TimestreamQueryClient.ts b/clients/client-timestream-query/TimestreamQueryClient.ts index c82c860727b32..62748cfb6acbd 100644 --- a/clients/client-timestream-query/TimestreamQueryClient.ts +++ b/clients/client-timestream-query/TimestreamQueryClient.ts @@ -240,7 +240,9 @@ export class TimestreamQueryClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, { + endpointDiscoveryCommandCtor: DescribeEndpointsCommand, + }); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); diff --git a/clients/client-timestream-write/TimestreamWriteClient.ts b/clients/client-timestream-write/TimestreamWriteClient.ts index 1d17050e270c1..38e35cc3a34f0 100644 --- a/clients/client-timestream-write/TimestreamWriteClient.ts +++ b/clients/client-timestream-write/TimestreamWriteClient.ts @@ -283,7 +283,9 @@ export class TimestreamWriteClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, { + endpointDiscoveryCommandCtor: DescribeEndpointsCommand, + }); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config));