diff --git a/private/aws-client-api-test/package.json b/private/aws-client-api-test/package.json index fdde74821286..bb36d0e346e8 100644 --- a/private/aws-client-api-test/package.json +++ b/private/aws-client-api-test/package.json @@ -18,7 +18,16 @@ "module": "./dist-es/index.js", "sideEffects": false, "dependencies": { + "@aws-sdk/client-dynamodb": "*", + "@aws-sdk/client-ec2": "*", + "@aws-sdk/client-glacier": "*", + "@aws-sdk/client-rds": "*", + "@aws-sdk/client-route-53": "*", "@aws-sdk/client-s3": "*", + "@aws-sdk/client-s3-control": "*", + "@aws-sdk/client-sqs": "*", + "@aws-sdk/client-sts": "*", + "@aws-sdk/client-transcribe-streaming": "*", "@aws-sdk/credential-provider-node": "*", "@aws-sdk/middleware-bucket-endpoint": "*", "@aws-sdk/middleware-flexible-checksums": "*", diff --git a/private/aws-client-api-test/src/client-interface-tests/config/client-config-custody.spec.ts b/private/aws-client-api-test/src/client-interface-tests/config/client-config-custody.spec.ts new file mode 100644 index 000000000000..996f99ad107d --- /dev/null +++ b/private/aws-client-api-test/src/client-interface-tests/config/client-config-custody.spec.ts @@ -0,0 +1,42 @@ +import { describe, test as it, expect } from "vitest"; +import { S3 } from "@aws-sdk/client-s3"; +import { S3Control } from "@aws-sdk/client-s3-control"; +import { DynamoDB } from "@aws-sdk/client-dynamodb"; +import { EC2 } from "@aws-sdk/client-ec2"; +import { SQS } from "@aws-sdk/client-sqs"; +import { Glacier } from "@aws-sdk/client-glacier"; +import { STS } from "@aws-sdk/client-sts"; +import { TranscribeStreaming } from "@aws-sdk/client-transcribe-streaming"; +import { Route53 } from "@aws-sdk/client-route-53"; +import { RDS } from "@aws-sdk/client-rds"; + +describe("client config object custody", () => { + it("should maintain a consistent object reference throughout the client resolver stack lifecycle (the constructor)", () => { + const clients = [ + new S3(), + new S3Control(), + new DynamoDB(), + new EC2(), + new Glacier(), + new RDS(), + new Route53(), + new SQS(), + new STS(), + new TranscribeStreaming(), + ]; + for (const client of clients) { + try { + expect(Object.keys(client.config)).toEqual(Object.keys(client.initConfig ?? {})); + } catch (e) { + throw new Error(`MismatchedObjectKeys - config object custody error for ${client.constructor.name}`); + } + + // reference equality assertion + try { + expect(client.config).toBe(client.initConfig); + } catch (e) { + throw new Error(`ReferenceEqualityError - config object custody error for ${client.constructor.name}`); + } + } + }); +}); diff --git a/yarn.lock b/yarn.lock index 9ba23ad57e75..1168ec387866 100644 --- a/yarn.lock +++ b/yarn.lock @@ -101,7 +101,16 @@ __metadata: version: 0.0.0-use.local resolution: "@aws-sdk/aws-client-api-test@workspace:private/aws-client-api-test" dependencies: + "@aws-sdk/client-dynamodb": "npm:*" + "@aws-sdk/client-ec2": "npm:*" + "@aws-sdk/client-glacier": "npm:*" + "@aws-sdk/client-rds": "npm:*" + "@aws-sdk/client-route-53": "npm:*" "@aws-sdk/client-s3": "npm:*" + "@aws-sdk/client-s3-control": "npm:*" + "@aws-sdk/client-sqs": "npm:*" + "@aws-sdk/client-sts": "npm:*" + "@aws-sdk/client-transcribe-streaming": "npm:*" "@aws-sdk/credential-provider-node": "npm:*" "@aws-sdk/middleware-bucket-endpoint": "npm:*" "@aws-sdk/middleware-flexible-checksums": "npm:*" @@ -9462,7 +9471,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-glacier@workspace:clients/client-glacier": +"@aws-sdk/client-glacier@npm:*, @aws-sdk/client-glacier@workspace:clients/client-glacier": version: 0.0.0-use.local resolution: "@aws-sdk/client-glacier@workspace:clients/client-glacier" dependencies: @@ -17209,7 +17218,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-rds@workspace:clients/client-rds": +"@aws-sdk/client-rds@npm:*, @aws-sdk/client-rds@workspace:clients/client-rds": version: 0.0.0-use.local resolution: "@aws-sdk/client-rds@workspace:clients/client-rds" dependencies: @@ -17957,7 +17966,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-route-53@workspace:clients/client-route-53": +"@aws-sdk/client-route-53@npm:*, @aws-sdk/client-route-53@workspace:clients/client-route-53": version: 0.0.0-use.local resolution: "@aws-sdk/client-route-53@workspace:clients/client-route-53" dependencies: @@ -20164,7 +20173,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-sqs@workspace:clients/client-sqs": +"@aws-sdk/client-sqs@npm:*, @aws-sdk/client-sqs@workspace:clients/client-sqs": version: 0.0.0-use.local resolution: "@aws-sdk/client-sqs@workspace:clients/client-sqs" dependencies: @@ -20695,7 +20704,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-sts@workspace:clients/client-sts": +"@aws-sdk/client-sts@npm:*, @aws-sdk/client-sts@workspace:clients/client-sts": version: 0.0.0-use.local resolution: "@aws-sdk/client-sts@workspace:clients/client-sts" dependencies: @@ -21330,7 +21339,7 @@ __metadata: languageName: unknown linkType: soft -"@aws-sdk/client-transcribe-streaming@workspace:clients/client-transcribe-streaming": +"@aws-sdk/client-transcribe-streaming@npm:*, @aws-sdk/client-transcribe-streaming@workspace:clients/client-transcribe-streaming": version: 0.0.0-use.local resolution: "@aws-sdk/client-transcribe-streaming@workspace:clients/client-transcribe-streaming" dependencies: