From 77a1e9ebedc2dc7aad0f6a3aa498e881a49aaf07 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 11 Jul 2025 14:15:10 -0700 Subject: [PATCH 01/13] refactor: start provider-cloudformation --- .../package.json | 19 +- .../src/aws-utils/DynamoDBService.ts | 45 +- .../src/aws-utils/S3Service.ts | 43 +- .../src/aws-utils/aws-apigw.ts | 20 +- .../src/aws-utils/aws-ecr.ts | 16 +- .../src/aws-utils/aws-location-service.ts | 15 +- .../src/download-api-models.ts | 3 +- .../src/system-config-manager.ts | 48 +- .../src/utils/auth-types.ts | 3 + yarn.lock | 1839 ++++++++++++++++- 10 files changed, 1961 insertions(+), 90 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 3e8447f1572..68ff2d4ca72 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -37,10 +37,27 @@ "@aws-amplify/cli-extensibility-helper": "3.0.39", "@aws-amplify/graphql-transformer-core": "^2.11.1", "@aws-amplify/graphql-transformer-interfaces": "^3.12.0", + "@aws-sdk/client-api-gateway": "^3.624.0", + "@aws-sdk/client-cloudformation": "^3.624.0", + "@aws-sdk/client-cognito-identity": "^3.624.0", + "@aws-sdk/client-cognito-identity-provider": "^3.624.0", + "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/client-ecr": "^3.624.0", + "@aws-sdk/client-iam": "^3.624.0", + "@aws-sdk/client-lambda": "^3.624.0", + "@aws-sdk/client-location": "^3.624.0", + "@aws-sdk/client-s3": "^3.624.0", + "@aws-sdk/client-ssm": "^3.624.0", + "@aws-sdk/client-sts": "^3.624.0", + "@aws-sdk/credential-provider-node": "^3.624.0", + "@aws-sdk/credential-providers": "^3.624.0", + "@aws-sdk/lib-dynamodb": "^3.624.0", + "@aws-sdk/s3-request-presigner": "^3.624.0", + "@aws-sdk/types": "^3.624.0", + "@smithy/node-http-handler": "^4.1.0", "amplify-codegen": "^4.10.3", "archiver": "^7.0.1", "aws-cdk-lib": "~2.189.1", - "aws-sdk": "^2.1464.0", "bottleneck": "2.19.5", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts index fb3bbec4802..e666dbef667 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts @@ -1,6 +1,14 @@ import { $TSAny, $TSContext } from '@aws-amplify/amplify-cli-core'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { IDynamoDBService } from '@aws-amplify/amplify-util-import'; -import DynamoDB, { ListTablesInput, ListTablesOutput, TableDescription, TableName } from 'aws-sdk/clients/dynamodb'; +import { + DynamoDBClient, + ListTablesCommand, + ListTablesCommandInput, + ListTablesCommandOutput, + DescribeTableCommand, + TableDescription, +} from '@aws-sdk/client-dynamodb'; import { loadConfiguration } from '../configuration-manager'; import { pagedAWSCall } from './paged-call'; @@ -13,26 +21,28 @@ export const createDynamoDBService = async (context: $TSContext, options: $TSAny // could not load credentials } - const dynamoDB = new DynamoDB({ ...credentials, ...options }); + const dynamoDBClient = new DynamoDBClient({ + ...credentials, + ...options, + }); - return new DynamoDBService(dynamoDB); + return new DynamoDBService(dynamoDBClient); }; export class DynamoDBService implements IDynamoDBService { private cachedTableList: string[] = []; - public constructor(private dynamoDB: DynamoDB) {} + public constructor(private dynamoDBClient: DynamoDBClient) {} - public async listTables(): Promise { + public async listTables(): Promise { if (this.cachedTableList.length === 0) { - const result = await pagedAWSCall( - async (params: ListTablesInput, nextToken: TableName) => { - return await this.dynamoDB - .listTables({ - ...params, - ExclusiveStartTableName: nextToken, - }) - .promise(); + const result = await pagedAWSCall( + async (params: ListTablesCommandInput, nextToken: string) => { + const command = new ListTablesCommand({ + ...params, + ExclusiveStartTableName: nextToken, + }); + return await this.dynamoDBClient.send(command); }, { Limit: 100, @@ -48,11 +58,10 @@ export class DynamoDBService implements IDynamoDBService { } public async getTableDetails(tableName: string): Promise { - const response = await this.dynamoDB - .describeTable({ - TableName: tableName, - }) - .promise(); + const command = new DescribeTableCommand({ + TableName: tableName, + }); + const response = await this.dynamoDBClient.send(command); return response.Table; } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts index c8a2578ef7a..d4b9f7aff05 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts @@ -1,24 +1,26 @@ import { $TSContext, AmplifyFault } from '@aws-amplify/amplify-cli-core'; import { IS3Service } from '@aws-amplify/amplify-util-import'; -import { S3 } from 'aws-sdk'; -import { Bucket } from 'aws-sdk/clients/s3'; +import { S3Client, ListBucketsCommand, HeadBucketCommand, GetBucketLocationCommand, Bucket } from '@aws-sdk/client-s3'; import { AwsSecrets, loadConfiguration } from '../configuration-manager'; export const createS3Service = async (context: $TSContext): Promise => { const credentials = await tryGetCredentials(context); - const s3 = new S3({ ...credentials }); + const s3Client = new S3Client({ + ...credentials, + }); - return new S3Service(s3); + return new S3Service(s3Client); }; export class S3Service implements IS3Service { private cachedBucketList: Bucket[] = []; - public constructor(private s3: S3) {} + public constructor(private s3Client: S3Client) {} public async listBuckets(): Promise { if (this.cachedBucketList.length === 0) { - const response = await this.s3.listBuckets().promise(); + const command = new ListBucketsCommand({}); + const response = await this.s3Client.send(command); if (response.Buckets) { this.cachedBucketList.push(...response.Buckets); @@ -28,16 +30,21 @@ export class S3Service implements IS3Service { return this.cachedBucketList; } - private async checkIfBucketExists(bucketName: string, s3?: S3): Promise { - const s3Client = s3 ?? this.s3; + private async checkIfBucketExists(bucketName: string, s3Client?: S3Client): Promise { + const client = s3Client ?? this.s3Client; try { - const response = await s3Client.headBucket({ Bucket: bucketName }).promise(); + const command = new HeadBucketCommand({ Bucket: bucketName }); + const response = await client.send(command); // If the return object has no keys then it means successful empty object was returned. return Object.keys(response).length === 0; } catch (error) { // workaround for S3 service bug causing headBucket for a opt-in region bucket to respond with BadRequest if s3 client is initialized with a different region - if (error.region !== s3Client.config.region && error.code === 'BadRequest') { - return this.checkIfBucketExists(bucketName, new S3({ ...s3Client.config?.credentials, region: error.region })); + if (error.region !== client.config.region && error.name === 'BadRequest') { + const newClient = new S3Client({ + ...client.config?.credentials, + region: error.region, + }); + return this.checkIfBucketExists(bucketName, newClient); } return handleS3Error(error); @@ -49,15 +56,17 @@ export class S3Service implements IS3Service { } public async getBucketLocation(bucketName: string): Promise { - const response = await this.s3 - .getBucketLocation({ - Bucket: bucketName, - }) - .promise(); + const command = new GetBucketLocationCommand({ + Bucket: bucketName, + }); + const response = await this.s3Client.send(command); + // For us-east-1 buckets the LocationConstraint is always empty, we have to return a // region in every case. // https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html - if (response.LocationConstraint === undefined || response.LocationConstraint === '' || response.LocationConstraint === null) { + if ( + (response.LocationConstraint === undefined || response.LocationConstraint, toString() === '' || response.LocationConstraint === null) + ) { return 'us-east-1'; } return response.LocationConstraint; diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-apigw.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-apigw.ts index 7d11020cc38..e9e70e03d40 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-apigw.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-apigw.ts @@ -1,13 +1,13 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; -import aws from './aws.js'; -import { APIGateway as APIGW } from 'aws-sdk'; +import { APIGatewayClient, APIGatewayClientConfig } from '@aws-sdk/client-api-gateway'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { loadConfiguration } from '../configuration-manager'; import { proxyAgent } from './aws-globals'; export class APIGateway { private static instance: APIGateway; private readonly context: $TSContext; - public readonly apigw: APIGW; + public readonly apigw: APIGatewayClient; static async getInstance(context: $TSContext, options = {}): Promise { if (!APIGateway.instance) { @@ -25,12 +25,16 @@ export class APIGateway { constructor(context: $TSContext, creds, options = {}) { this.context = context; - this.apigw = new aws.APIGateway({ + + const clientConfig: APIGatewayClientConfig = { ...creds, ...options, - httpOptions: { - agent: proxyAgent(), - }, - }); + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), + }; + + this.apigw = new APIGatewayClient(clientConfig); } } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ecr.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ecr.ts index 4486e1672da..3073505f16f 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ecr.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ecr.ts @@ -1,10 +1,11 @@ -import AWS from 'aws-sdk'; -import aws from './aws'; +import { ECRClient } from '@aws-sdk/client-ecr'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { loadConfiguration } from '../configuration-manager'; import { $TSContext } from '@aws-amplify/amplify-cli-core'; import { proxyAgent } from './aws-globals'; + class ECR { - public ecr: AWS.ECR; + public ecr: ECRClient; constructor(private readonly context: $TSContext, options = {}) { const instancePromise = (async () => { @@ -15,12 +16,13 @@ class ECR { // ignore missing config } - this.ecr = new (aws as typeof AWS).ECR({ + this.ecr = new ECRClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-location-service.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-location-service.ts index 3037a6a6b9b..01b2186c836 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-location-service.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-location-service.ts @@ -1,12 +1,12 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; -import * as AWS from 'aws-sdk'; +import { LocationClient } from '@aws-sdk/client-location'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { AwsSecrets, loadConfiguration } from '../configuration-manager'; -import aws from './aws.js'; import { proxyAgent } from './aws-globals'; export class LocationService { private static instance: LocationService; - readonly client: AWS.Location; + readonly client: LocationClient; static async getInstance(context: $TSContext, options = {}): Promise { if (!LocationService.instance) { @@ -22,12 +22,13 @@ export class LocationService { } private constructor(cred: AwsSecrets, options = {}) { - this.client = new aws.Location({ + this.client = new LocationClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); } } diff --git a/packages/amplify-provider-awscloudformation/src/download-api-models.ts b/packages/amplify-provider-awscloudformation/src/download-api-models.ts index aed23fc633e..279ae169e8d 100644 --- a/packages/amplify-provider-awscloudformation/src/download-api-models.ts +++ b/packages/amplify-provider-awscloudformation/src/download-api-models.ts @@ -3,6 +3,7 @@ import { printer } from '@aws-amplify/amplify-prompts'; import * as fs from 'fs-extra'; import sequential from 'promise-sequential'; import { APIGateway } from './aws-utils/aws-apigw'; +import { GetSdkCommand } from '@aws-sdk/client-api-gateway'; /** * Download API models from API Gateway @@ -41,7 +42,7 @@ const extractAPIModel = async (context: $TSContext, resource: $TSObject, framewo const apiName = resource.output.ApiName; - const data = await apigw.apigw.getSdk(apigwParams).promise(); + const data = await apigw.apigw.send(new GetSdkCommand(apigwParams)); const backendDir = pathManager.getBackendDirPath(); diff --git a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts index 69e738c01fa..408036a286b 100644 --- a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts @@ -1,6 +1,8 @@ import { $TSAny, $TSContext, AmplifyError, JSONUtilities, pathManager, SecretFileMode, spinner } from '@aws-amplify/amplify-cli-core'; -import { STS, ProcessCredentials, CredentialProviderChain } from 'aws-sdk'; +import { STSClient, AssumeRoleCommand, AssumeRoleCommandInput, Credentials as STSCredentials } from '@aws-sdk/client-sts'; +import { fromProcess } from '@aws-sdk/credential-providers'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import * as fs from 'fs-extra'; import * as path from 'path'; import * as ini from 'ini'; @@ -91,23 +93,23 @@ export const getProfiledAwsConfig = async ( ...roleCredentials, }; } else if (profileConfig.credential_process) { - // need to force AWS_SDK_LOAD_CONFIG to a truthy value to force ProcessCredentials to prefer the credential process in ~/.aws/config instead of ~/.aws/credentials + // TO DO: need to revisit this + // need to force AWS_SDK_LOAD_CONFIG to a truthy value to force credential process to prefer the credential process in ~/.aws/config instead of ~/.aws/credentials const sdkLoadConfigOriginal = process.env.AWS_SDK_LOAD_CONFIG; process.env.AWS_SDK_LOAD_CONFIG = '1'; - const chain = new CredentialProviderChain(); - const processProvider = () => new ProcessCredentials({ profile: profileName }); - chain.providers.push(processProvider); + // Use fromProcess credential provider from SDK v3 + const credentials = await fromProcess({ profile: profileName })(); - const credentials = await chain.resolvePromise(); awsConfigInfo = { region: profileConfig.region, accessKeyId: credentials.accessKeyId, secretAccessKey: credentials.secretAccessKey, sessionToken: credentials.sessionToken, - expiration: credentials.expireTime, - httpOptions: { - agent: proxyAgent(), - }, + expiration: credentials.expiration, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }; process.env.AWS_SDK_LOAD_CONFIG = sdkLoadConfigOriginal; } else { @@ -149,8 +151,12 @@ const getRoleCredentials = async (context: $TSContext, profileName: string, prof mfaTokenCode = await getMfaTokenCode(); } logger('getRoleCredentials.aws.STS', [sourceProfileAwsConfig])(); - const sts = new STS(sourceProfileAwsConfig); - const assumeRoleRequest = { + + const stsClient = new STSClient({ + ...sourceProfileAwsConfig, + }); + + const assumeRoleRequest: AssumeRoleCommandInput = { RoleArn: profileConfig.role_arn, RoleSessionName: roleSessionName, DurationSeconds: profileConfig.duration_seconds, @@ -161,13 +167,17 @@ const getRoleCredentials = async (context: $TSContext, profileName: string, prof const log = logger('getRoleCredentials.sts.assumeRole', [assumeRoleRequest]); try { log(); - const roleData = await sts.assumeRole(assumeRoleRequest).promise(); - roleCredentials = { - accessKeyId: roleData.Credentials.AccessKeyId, - secretAccessKey: roleData.Credentials.SecretAccessKey, - sessionToken: roleData.Credentials.SessionToken, - expiration: roleData.Credentials.Expiration, - }; + const command = new AssumeRoleCommand(assumeRoleRequest); + const roleData = await stsClient.send(command); + + if (roleData.Credentials) { + roleCredentials = { + accessKeyId: roleData.Credentials.AccessKeyId, + secretAccessKey: roleData.Credentials.SecretAccessKey, + sessionToken: roleData.Credentials.SessionToken, + expiration: roleData.Credentials.Expiration, + }; + } } catch (ex) { log(ex); } diff --git a/packages/amplify-provider-awscloudformation/src/utils/auth-types.ts b/packages/amplify-provider-awscloudformation/src/utils/auth-types.ts index 0fac6ded250..c64d78a73f0 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/auth-types.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/auth-types.ts @@ -1,4 +1,5 @@ import { $TSAny } from '@aws-amplify/amplify-cli-core'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; export type AuthFlow = 'admin' | 'profile' | 'accessKeys' | 'general'; export interface AuthFlowConfig extends Partial { @@ -14,6 +15,8 @@ export interface AwsSdkConfig { region: string; secretAccessKey: string; sessionToken?: string; + requestHandler?: NodeHttpHandler; + // TO DO: remove eventually, V2 style of handling proxies httpOptions?: { agent: $TSAny; }; diff --git a/yarn.lock b/yarn.lock index c1a9b706a82..69b643732c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -811,6 +811,24 @@ __metadata: "@aws-amplify/cli-extensibility-helper": 3.0.39 "@aws-amplify/graphql-transformer-core": ^2.11.1 "@aws-amplify/graphql-transformer-interfaces": ^3.12.0 + "@aws-sdk/client-api-gateway": ^3.624.0 + "@aws-sdk/client-cloudformation": ^3.624.0 + "@aws-sdk/client-cognito-identity": ^3.624.0 + "@aws-sdk/client-cognito-identity-provider": ^3.624.0 + "@aws-sdk/client-dynamodb": ^3.624.0 + "@aws-sdk/client-ecr": ^3.624.0 + "@aws-sdk/client-iam": ^3.624.0 + "@aws-sdk/client-lambda": ^3.624.0 + "@aws-sdk/client-location": ^3.624.0 + "@aws-sdk/client-s3": ^3.624.0 + "@aws-sdk/client-ssm": ^3.624.0 + "@aws-sdk/client-sts": ^3.624.0 + "@aws-sdk/credential-provider-node": ^3.624.0 + "@aws-sdk/credential-providers": ^3.624.0 + "@aws-sdk/lib-dynamodb": ^3.624.0 + "@aws-sdk/s3-request-presigner": ^3.624.0 + "@aws-sdk/types": ^3.624.0 + "@smithy/node-http-handler": ^4.1.0 "@types/columnify": ^1.5.0 "@types/deep-diff": ^1.0.0 "@types/folder-hash": ^4.0.1 @@ -820,7 +838,6 @@ __metadata: amplify-codegen: ^4.10.3 archiver: ^7.0.1 aws-cdk-lib: ~2.189.1 - aws-sdk: ^2.1464.0 bottleneck: 2.19.5 chalk: ^4.1.1 cloudform-types: ^4.2.0 @@ -2023,6 +2040,17 @@ __metadata: languageName: node linkType: hard +"@aws-crypto/util@npm:5.2.0, @aws-crypto/util@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/util@npm:5.2.0" + dependencies: + "@aws-sdk/types": ^3.222.0 + "@smithy/util-utf8": ^2.0.0 + tslib: ^2.6.2 + checksum: 0362d4c197b1fd64b423966945130207d1fe23e1bb2878a18e361f7743c8d339dad3f8729895a29aa34fff6a86c65f281cf5167c4bf253f21627ae80b6dd2951 + languageName: node + linkType: hard + "@aws-crypto/util@npm:^1.2.2": version: 1.2.2 resolution: "@aws-crypto/util@npm:1.2.2" @@ -2045,17 +2073,6 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/util@npm:^5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/util@npm:5.2.0" - dependencies: - "@aws-sdk/types": ^3.222.0 - "@smithy/util-utf8": ^2.0.0 - tslib: ^2.6.2 - checksum: 0362d4c197b1fd64b423966945130207d1fe23e1bb2878a18e361f7743c8d339dad3f8729895a29aa34fff6a86c65f281cf5167c4bf253f21627ae80b6dd2951 - languageName: node - linkType: hard - "@aws-sdk/abort-controller@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/abort-controller@npm:3.186.0" @@ -2076,6 +2093,55 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-api-gateway@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-api-gateway@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-sdk-api-gateway": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 43436e0508033929796dd550d5ff57bb714b6228fa491c9b6a77d9a757f8df27985392ca10168c1dcc67b8c272c4e4920916e93f9c23aa42f9b9a3eb7e3b094c + languageName: node + linkType: hard + "@aws-sdk/client-appsync@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-appsync@npm:3.624.0" @@ -2126,6 +2192,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-cloudformation@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-cloudformation@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 872fe9c27a4dd519e4328ca45f82fc86f2802b196c7b78c9a73d7a4e0ac60b6be53246846865eaf67abf68ee4e4c3f080502ca375804cccbf21a0e9e59238baa + languageName: node + linkType: hard + "@aws-sdk/client-cloudwatch-logs@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-cloudwatch-logs@npm:3.6.1" @@ -2214,6 +2330,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-cognito-identity-provider@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-cognito-identity-provider@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 134676e049c8e611b22de055810bea2d7de35d9a9ebf5b98547920c6a40b4933cdf0a4a7b9325ce9ac9f53103c2fda00d928b4fab5736c905a034ab918e61be4 + languageName: node + linkType: hard + "@aws-sdk/client-cognito-identity@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-cognito-identity@npm:3.624.0" @@ -2263,6 +2426,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-cognito-identity@npm:3.844.0, @aws-sdk/client-cognito-identity@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: b47805cda5c0b296c68a0441847ab3507520fa4d3e1c3389193d4a40a0ada5d5743d328650083a02f14d15c388fb37cb429afac7c32fbd99d7f3d1e8198cd0c4 + languageName: node + linkType: hard + "@aws-sdk/client-comprehend@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-comprehend@npm:3.6.1" @@ -2355,6 +2565,57 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-dynamodb@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-dynamodb@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-endpoint-discovery": 3.840.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 1d00e78cebddbecc7a281c490a866c4a21be7c44b96beeea02b653ff52e6e618201f32dd0964fbb15a9f529921e90c356d4a02450293cbd30900246b12108abb + languageName: node + linkType: hard + "@aws-sdk/client-ec2@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-ec2@npm:3.624.0" @@ -2407,6 +2668,54 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-ecr@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-ecr@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + tslib: ^2.6.2 + checksum: 38c4854c0c26d861819a5a6358cf7d674008022f35f02b317d76fa6cb7e95a26637aa3b8f35bd660667d38ca2d78c35ac89934c2d3d41278ceea8759344f26cc + languageName: node + linkType: hard + "@aws-sdk/client-firehose@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-firehose@npm:3.6.1" @@ -2496,6 +2805,54 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-iam@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-iam@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + tslib: ^2.6.2 + checksum: 4572f2ea477ec5cbb8b310670259f01a41cc924a977d859a737853fa9b7d4e85f93543bfb76912db0970666d290bce46613811903696e98393f669469df8b046 + languageName: node + linkType: hard + "@aws-sdk/client-kinesis@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-kinesis@npm:3.6.1" @@ -2593,6 +2950,58 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-lambda@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-lambda@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/eventstream-serde-browser": ^4.0.4 + "@smithy/eventstream-serde-config-resolver": ^4.1.2 + "@smithy/eventstream-serde-node": ^4.0.4 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + tslib: ^2.6.2 + checksum: c7dd0164e2cb27be722ecd36d281f25119621ff3d050e3d48e5235b93cdbaa1270cae33e1bf57b23dc5e78dbeb04e54205dcb236f11b27cb6f76aac9804cb52b + languageName: node + linkType: hard + "@aws-sdk/client-lex-runtime-service@npm:3.186.3": version: 3.186.3 resolution: "@aws-sdk/client-lex-runtime-service@npm:3.186.3" @@ -2774,6 +3183,54 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-location@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-location@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: c185354e89308d0016752868aa10fb189db50e421c324040ac4e37004dc8e0e136dc67cd17f37a8c0c9b23c7a22df27ea113804471ef423983bf973f10f62b68 + languageName: node + linkType: hard + "@aws-sdk/client-personalize-events@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-personalize-events@npm:3.6.1" @@ -3060,6 +3517,72 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-s3@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-s3@npm:3.844.0" + dependencies: + "@aws-crypto/sha1-browser": 5.2.0 + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-bucket-endpoint": 3.840.0 + "@aws-sdk/middleware-expect-continue": 3.840.0 + "@aws-sdk/middleware-flexible-checksums": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-location-constraint": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-sdk-s3": 3.844.0 + "@aws-sdk/middleware-ssec": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/signature-v4-multi-region": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@aws-sdk/xml-builder": 3.821.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/eventstream-serde-browser": ^4.0.4 + "@smithy/eventstream-serde-config-resolver": ^4.1.2 + "@smithy/eventstream-serde-node": ^4.0.4 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-blob-browser": ^4.0.4 + "@smithy/hash-node": ^4.0.4 + "@smithy/hash-stream-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/md5-js": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: dc4ce8df86cdfdc2af5a8dc495016837d0aefc9fcd4ac5b6b975d2780da19b171e54a48edc5dac3590b4f24df94b709630fe5a58d46d743f87de90bf2634d89a + languageName: node + linkType: hard + "@aws-sdk/client-ssm@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-ssm@npm:3.624.0" @@ -3111,6 +3634,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-ssm@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-ssm@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 726b62e961883f15f522e5783eb31a91f5050234031abf02232e56609a1047e0c4f5c069deee22d3beeb19469a53090f42bcb3ac95c32336407a0266ad54bc4a + languageName: node + linkType: hard + "@aws-sdk/client-sso-oidc@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-sso-oidc@npm:3.624.0" @@ -3245,6 +3818,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/client-sso@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 1943d9ac636c39b2971217704893d8693b739e4e524b2b4ff479b595cf740882a038cfc964fa52d769be95a6c7a9b0ea9127dfa9945f0a12447dd148df80fc65 + languageName: node + linkType: hard + "@aws-sdk/client-sts@npm:3.186.3": version: 3.186.3 resolution: "@aws-sdk/client-sts@npm:3.186.3" @@ -3337,6 +3956,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sts@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/client-sts@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 4f1e308e1d22dca7166a2c27b977c6e49330382eeab7ff0cf4a7fc57261dcf79d95145c15657cfdae191837e410360ed6a082c50efa9f679539bd0d999b7a3b5 + languageName: node + linkType: hard + "@aws-sdk/client-textract@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-textract@npm:3.6.1" @@ -3457,6 +4123,29 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/core@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/core@npm:3.844.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@aws-sdk/xml-builder": 3.821.0 + "@smithy/core": ^3.7.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/property-provider": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/signature-v4": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-utf8": ^4.0.0 + fast-xml-parser: 5.2.5 + tslib: ^2.6.2 + checksum: 7ae80e31c7ad1f4c9d02e32a5c67b1ad33167d1fc2b079d27dcb7b624869df869bb6e8a2ab8104b18cca2971ae44e48fb4d910cb6812af0cc264b0af847a800f + languageName: node + linkType: hard + "@aws-sdk/credential-provider-cognito-identity@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.624.0" @@ -3470,6 +4159,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-cognito-identity@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.844.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: c62863827a4cfa3d81991e7c94ac888b632387093b2a6046d388ea025e32b3168337bde6460e6f53fc096039c7b61273dde41d863e157da5015cc920f6003dd5 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-env@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-env@npm:3.186.0" @@ -3504,6 +4206,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-env@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: a29324c21189570ab9173039eb0732e5f0e6215a0a941a30bb66225936be5550089ec52aece2916abc3b3e40c04799ba6383bbc4ecbeb531d96c27f666caf588 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-http@npm:3.622.0": version: 3.622.0 resolution: "@aws-sdk/credential-provider-http@npm:3.622.0" @@ -3521,6 +4236,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-http@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/util-stream": ^4.2.3 + tslib: ^2.6.2 + checksum: 09f97b3ddc46555d8bd6109e770963af8c207f34bf3d426fc30eeac4fd5c9d444c16a86763a23c52cdf2c0143ab6a99d04cc035efb6f2fd5c7e8f89ad5c06af5 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-imds@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-imds@npm:3.186.0" @@ -3594,6 +4327,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-ini@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-env": 3.844.0 + "@aws-sdk/credential-provider-http": 3.844.0 + "@aws-sdk/credential-provider-process": 3.844.0 + "@aws-sdk/credential-provider-sso": 3.844.0 + "@aws-sdk/credential-provider-web-identity": 3.844.0 + "@aws-sdk/nested-clients": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 3f595ad568b23cb67da2eaecd9df542376f61428b6c3e7172a2a8db44c43494f5bb228ba5eedf62e2e6d7e171464d7b374628080b983c322f82e237ac8cf1378 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-node@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-node@npm:3.186.0" @@ -3648,6 +4402,26 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.844.0, @aws-sdk/credential-provider-node@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.844.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.844.0 + "@aws-sdk/credential-provider-http": 3.844.0 + "@aws-sdk/credential-provider-ini": 3.844.0 + "@aws-sdk/credential-provider-process": 3.844.0 + "@aws-sdk/credential-provider-sso": 3.844.0 + "@aws-sdk/credential-provider-web-identity": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 5587d14042074bd54619026da90926a3f0112ed66676d8b4d55619b2679c703f2b14da64c3329682aa7a8935094b3ae795d4a70112f65f4ab3ec12232537de4e + languageName: node + linkType: hard + "@aws-sdk/credential-provider-process@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-process@npm:3.186.0" @@ -3686,6 +4460,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-process@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 41f08928d38781114856703673f7d1096fb1b987b1d225baa3becb177feec811df5814961dadbbac3f8f480b41bda1c23024f54042f9a37bb96ba93d56e0d34d + languageName: node + linkType: hard + "@aws-sdk/credential-provider-sso@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-sso@npm:3.186.0" @@ -3714,6 +4502,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.844.0" + dependencies: + "@aws-sdk/client-sso": 3.844.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/token-providers": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: db2af01420e31f9edd130f82459fa3c16435c842fef8649b40e167f558eed9599eed7350fcea11e32128a32b7fc80c2139b125a389843204b37cf63ddf18f023 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-web-identity@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-web-identity@npm:3.186.0" @@ -3739,6 +4543,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-web-identity@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/nested-clients": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 5035bdc0340359882d886adc0892cbecc8693fcefad2527dde7597cb7c16c4d05fb04a3b6c6d5a266d4689e755bab4fad131de4260eec654697a3c013bb0c222 + languageName: node + linkType: hard + "@aws-sdk/credential-providers@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/credential-providers@npm:3.624.0" @@ -3763,6 +4581,33 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-providers@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/credential-providers@npm:3.844.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.844.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/credential-provider-cognito-identity": 3.844.0 + "@aws-sdk/credential-provider-env": 3.844.0 + "@aws-sdk/credential-provider-http": 3.844.0 + "@aws-sdk/credential-provider-ini": 3.844.0 + "@aws-sdk/credential-provider-node": 3.844.0 + "@aws-sdk/credential-provider-process": 3.844.0 + "@aws-sdk/credential-provider-sso": 3.844.0 + "@aws-sdk/credential-provider-web-identity": 3.844.0 + "@aws-sdk/nested-clients": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 39107965938daeb419bf829c91c9b184fac4f4cf5a60a48945c8d7382ba27ad0f9aaa143b1b0d1667662322b6aa4e6578fe377038cc826cd579bb42d75261511 + languageName: node + linkType: hard + "@aws-sdk/endpoint-cache@npm:3.572.0": version: 3.572.0 resolution: "@aws-sdk/endpoint-cache@npm:3.572.0" @@ -3773,6 +4618,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/endpoint-cache@npm:3.804.0": + version: 3.804.0 + resolution: "@aws-sdk/endpoint-cache@npm:3.804.0" + dependencies: + mnemonist: 0.38.3 + tslib: ^2.6.2 + checksum: 566bb7bb8633e95d40b8f622c3ff53d193b6b6e5f3e09ee86ef62d885e73ad5b75822e85c8ca920b0d8badc4e2c2b54697b2d87a8afae8920b4108798138d28a + languageName: node + linkType: hard + "@aws-sdk/eventstream-codec@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/eventstream-codec@npm:3.186.0" @@ -4003,6 +4858,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/lib-dynamodb@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/lib-dynamodb@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/util-dynamodb": 3.844.0 + "@smithy/core": ^3.7.0 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.844.0 + checksum: 536402b25494dc218a8470442449de1383df78f4258a73211a1c022d5e970d0da78b4a7323c7f85b39a6a665ad521d0f05543e8318d087eebcdc66e9891ca58b + languageName: node + linkType: hard + "@aws-sdk/lib-storage@npm:^3.25.0": version: 3.44.0 resolution: "@aws-sdk/lib-storage@npm:3.44.0" @@ -4044,6 +4915,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-bucket-endpoint@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-arn-parser": 3.804.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + "@smithy/util-config-provider": ^4.0.0 + tslib: ^2.6.2 + checksum: 371f6e30b16821e1a9c17efcbe6436616eb2bcbfe1757d5f70c56d5eca8452d8dddd42f26f53635b87f927b4da541dc36156e4d3529bb0eb0705969365dce8fc + languageName: node + linkType: hard + "@aws-sdk/middleware-content-length@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-content-length@npm:3.186.0" @@ -4080,6 +4966,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-endpoint-discovery@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-endpoint-discovery@npm:3.840.0" + dependencies: + "@aws-sdk/endpoint-cache": 3.804.0 + "@aws-sdk/types": 3.840.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 683e23d0538f68e655c9db7a3f4e26149210aa7bb43edef6ab2163156694df41dced69580144e252bbba2f83b37c2c3b0e9952cb805b18c12dcc5a01b001c936 + languageName: node + linkType: hard + "@aws-sdk/middleware-eventstream@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-eventstream@npm:3.186.0" @@ -4103,6 +5003,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-expect-continue@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 73099d06d044f5d82cf172398939c8776c966bf88466288270d80a4e93f451c9e620c92252b0b5c8086b22429f6a69137a21d81bbac66e573c36241859f0739b + languageName: node + linkType: hard + "@aws-sdk/middleware-flexible-checksums@npm:3.620.0": version: 3.620.0 resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.620.0" @@ -4119,6 +5031,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-flexible-checksums@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.844.0" + dependencies: + "@aws-crypto/crc32": 5.2.0 + "@aws-crypto/crc32c": 5.2.0 + "@aws-crypto/util": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/is-array-buffer": ^4.0.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: b25cdcd3d0cd58f1d3daca870fd085c4bd044c38150889450f8c0e1f4d41692faf9012b92a88fd064d70a6187efbda1c69430f6859095549ccf65382465fa3ca + languageName: node + linkType: hard + "@aws-sdk/middleware-host-header@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-host-header@npm:3.186.0" @@ -4153,6 +5086,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-host-header@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: aae5964c39118815293f3f1d42c6b5131ff44862d33af9c8d44eb98fb5b8db0e6191cceba59c487a2b89b70b2e7ad710b174a14506bc6d99d333af42fd6b3d07 + languageName: node + linkType: hard + "@aws-sdk/middleware-location-constraint@npm:3.609.0": version: 3.609.0 resolution: "@aws-sdk/middleware-location-constraint@npm:3.609.0" @@ -4164,6 +5109,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-location-constraint@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 4520274c5b350881df39e28b1732b482ee8023801e8cc6fe1da4b11856ea9660af5036dc6144cefce20338ed0cf5622cc03d10dddf67f95354447d3d0448d987 + languageName: node + linkType: hard + "@aws-sdk/middleware-logger@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-logger@npm:3.186.0" @@ -4195,6 +5151,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-logger@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-logger@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 5cc4eec656ec9811b64e504a96812f05f1b57e3542ea1dae6710505f81f8dfb36119709538b736a55792f02565818ab71f803e91b00bc4f0652ab198fce153fd + languageName: node + linkType: hard + "@aws-sdk/middleware-recursion-detection@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-recursion-detection@npm:3.186.0" @@ -4218,6 +5185,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-recursion-detection@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 88b1dfbf487d86b2aa26761b08e3de2fd1edd8d09abffd88f5d31b77215fd0852c74deba38802a15cc7015a716d990c2925523af88577890311958f53ef739e7 + languageName: node + linkType: hard + "@aws-sdk/middleware-retry@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-retry@npm:3.186.0" @@ -4246,6 +5225,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-sdk-api-gateway@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-sdk-api-gateway@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 7ecf72bcac65ac1f82fa8ade145a5331596669fc0f9dc79277f8a3c43d2b8e9c7ccf31158b9153b91adabaae7e847def5b39369f759463898afcf76e2e652127 + languageName: node + linkType: hard + "@aws-sdk/middleware-sdk-ec2@npm:3.622.0": version: 3.622.0 resolution: "@aws-sdk/middleware-sdk-ec2@npm:3.622.0" @@ -4299,6 +5290,28 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-sdk-s3@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-arn-parser": 3.804.0 + "@smithy/core": ^3.7.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/protocol-http": ^5.1.2 + "@smithy/signature-v4": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/util-config-provider": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 281734e45532be1e3d46f562aa96af1f76b83f005c616c6e1e079488865f7ef077e9a381f5cdce20c7f4a2b4ddb29e0575aef9e5f001cfd795551a81f11c1977 + languageName: node + linkType: hard + "@aws-sdk/middleware-sdk-sts@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-sdk-sts@npm:3.186.0" @@ -4370,6 +5383,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-ssec@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 22cdded72582d15adb266e5f65b5756c129b7104535765ff5c67eedc24609bface9eebb1fa3b74ed41e7b8fade57940195810bbbe2e44b8283104849894ec658 + languageName: node + linkType: hard + "@aws-sdk/middleware-stack@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/middleware-stack@npm:3.186.0" @@ -4423,6 +5447,67 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@smithy/core": ^3.7.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 77543b93dfe2d92a6971c436e78c8deb42603ec3ced22b7d7ecaea27a4d9a0fb9ffc1314de4498d1f15419296c8dfdfc6faee0a441a44c6f96693fd233bb2a5a + languageName: node + linkType: hard + +"@aws-sdk/nested-clients@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/nested-clients@npm:3.844.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.844.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.844.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.844.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-retry": ^4.1.15 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.22 + "@smithy/util-defaults-mode-node": ^4.0.22 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 01a84bc8c05eca975e136895f6245301ca680bdfbb72a7326ed6fc087e9dd25915423af2a2976200486554c0f0bfbabc215b5239782087242c90a786f92b8453 + languageName: node + linkType: hard + "@aws-sdk/node-config-provider@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/node-config-provider@npm:3.186.0" @@ -4569,6 +5654,36 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/region-config-resolver@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + "@smithy/util-config-provider": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + tslib: ^2.6.2 + checksum: 27d72bb9657efd79637a4c4aa895004d29c66eefce083fa84050f092f68bcba8cb9bf0e4c16c11c132a5fa01f1841e878fa903bc837c4e1e6904d1b2d2c3dd37 + languageName: node + linkType: hard + +"@aws-sdk/s3-request-presigner@npm:^3.624.0": + version: 3.844.0 + resolution: "@aws-sdk/s3-request-presigner@npm:3.844.0" + dependencies: + "@aws-sdk/signature-v4-multi-region": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-format-url": 3.840.0 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 4e22f939a03e9cc0b7bd243977e1248cfb6bb61b94bd4ff7adae3b430c7c1107f9050d279022c051403ca25bc05aa58fd6ef147ee99f6bef529c000649043a94 + languageName: node + linkType: hard + "@aws-sdk/service-error-classification@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/service-error-classification@npm:3.186.0" @@ -4616,6 +5731,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/signature-v4-multi-region@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.844.0" + dependencies: + "@aws-sdk/middleware-sdk-s3": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/signature-v4": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 192c964d50c1258a1e1a78ebc481a19a88f93e3ef052fe561d42bcce69dd4538257585f84fbc0b433d498c8a73e9d7fb9bfc6bca1d8020be291b16b3e95205a9 + languageName: node + linkType: hard + "@aws-sdk/signature-v4@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/signature-v4@npm:3.186.0" @@ -4680,6 +5809,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/token-providers@npm:3.844.0" + dependencies: + "@aws-sdk/core": 3.844.0 + "@aws-sdk/nested-clients": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 08e81d7529b94dbff58fd98edec22d9057c95613d1d444b9a204e68827ce49af832f0f28c220aa97d11509fd093294563175091423b31def467ec2b282ddd952 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/types@npm:3.186.0" @@ -4713,6 +5857,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:3.840.0, @aws-sdk/types@npm:^3.624.0": + version: 3.840.0 + resolution: "@aws-sdk/types@npm:3.840.0" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 292d38f5087c3aa925addd890f8ae2bf650282c2cf4997d971a341dc0249dfca7ce02d69a4af09da2562b78a4232232d2a3b88105f34f66aee608d52aac238d1 + languageName: node + linkType: hard + "@aws-sdk/url-parser-native@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/url-parser-native@npm:3.6.1" @@ -4756,6 +5910,15 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-arn-parser@npm:3.804.0": + version: 3.804.0 + resolution: "@aws-sdk/util-arn-parser@npm:3.804.0" + dependencies: + tslib: ^2.6.2 + checksum: b6d4c883ec2949fa40552fe8573c9c32af07c92c1bd94a27d978aa14d37b005be95392069d6b882ba977484f4dd0371792296fb2516f5d7601be5102888ee9ee + languageName: node + linkType: hard + "@aws-sdk/util-base64-browser@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/util-base64-browser@npm:3.186.0" @@ -4895,6 +6058,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-dynamodb@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/util-dynamodb@npm:3.844.0" + dependencies: + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.844.0 + checksum: 209a99345c7f4c572a658c8346f4becacac36731f4a55e0511e9ccfdf1466bb12f0b24361720508c49f9b0cf633b74358505bb79859c589eef259415bb306b36 + languageName: node + linkType: hard + "@aws-sdk/util-endpoints@npm:3.614.0": version: 3.614.0 resolution: "@aws-sdk/util-endpoints@npm:3.614.0" @@ -4907,6 +6081,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-endpoints@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/util-endpoints@npm:3.844.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-endpoints": ^3.0.6 + tslib: ^2.6.2 + checksum: 0972c473787e0d3111658f9579750a3fb6fd1654ca8683c38ab353b0b9b64d6e9b83b1da373c0932239b820aef38c3b41830692db21c2f5d204baa14aaea64d5 + languageName: node + linkType: hard + "@aws-sdk/util-format-url@npm:3.609.0": version: 3.609.0 resolution: "@aws-sdk/util-format-url@npm:3.609.0" @@ -4919,6 +6106,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-format-url@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/util-format-url@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/querystring-builder": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 9f1d55e00bc10523d786e9a7c4b387ceb38170a870a1c5c8772bd3cd7d0ab1f352ca1c49a52cbf751acee65091ae9e58f079e6ee94bbe104b8989bff26f40a63 + languageName: node + linkType: hard + "@aws-sdk/util-hex-encoding@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/util-hex-encoding@npm:3.186.0" @@ -5016,6 +6215,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-browser@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + bowser: ^2.11.0 + tslib: ^2.6.2 + checksum: 873d5e3218958aa935127b05dad5a1d8cf26c9b7726584eb424a5958e7e205786dd99e4fa053b65f3b956261a7f8a3746e48e9b7dc47c3149792ff525da97631 + languageName: node + linkType: hard + "@aws-sdk/util-user-agent-node@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/util-user-agent-node@npm:3.186.0" @@ -5060,6 +6271,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.844.0": + version: 3.844.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.844.0" + dependencies: + "@aws-sdk/middleware-user-agent": 3.844.0 + "@aws-sdk/types": 3.840.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: 853dbd07cf4d6a1a88114417f83a00965bc8b2f66f78a00826f32faeab72e7544fbd36de7184f161d9bc7e9a6f765d56211a1aae17c1d7ba2ba6021af833a092 + languageName: node + linkType: hard + "@aws-sdk/util-utf8-browser@npm:3.186.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": version: 3.186.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.186.0" @@ -5129,6 +6358,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:3.821.0": + version: 3.821.0 + resolution: "@aws-sdk/xml-builder@npm:3.821.0" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 316e0eb04bcec0bb0897f67718629deab29adb9664ce78743ad854df772472c02332ab12627d74b96ebe2205adc51b1cb7fb01fcb4251e80a7af405e56cfa135 + languageName: node + linkType: hard + "@babel/cli@npm:^7.27.0": version: 7.27.0 resolution: "@babel/cli@npm:7.27.0" @@ -9135,6 +10374,16 @@ __metadata: languageName: node linkType: hard +"@smithy/abort-controller@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/abort-controller@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: eb172b002fb92406c69b83460f949ace73247e6abd85d0d3714de2765c5db7b98070b9abfb630e2c591dd7b2ff770cc24f7737c1c207581f716c402b16bf46f9 + languageName: node + linkType: hard + "@smithy/chunked-blob-reader-native@npm:^3.0.1": version: 3.0.1 resolution: "@smithy/chunked-blob-reader-native@npm:3.0.1" @@ -9145,6 +10394,16 @@ __metadata: languageName: node linkType: hard +"@smithy/chunked-blob-reader-native@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/chunked-blob-reader-native@npm:4.0.0" + dependencies: + "@smithy/util-base64": ^4.0.0 + tslib: ^2.6.2 + checksum: 4387f4e8841f20c1c4e689078141de7e6f239e7883be3a02810a023aa30939b15576ee00227b991972d2c5a2f3b6152bcaeca0975c9fa8d3669354c647bd532a + languageName: node + linkType: hard + "@smithy/chunked-blob-reader@npm:^4.0.0": version: 4.0.0 resolution: "@smithy/chunked-blob-reader@npm:4.0.0" @@ -9154,6 +10413,15 @@ __metadata: languageName: node linkType: hard +"@smithy/chunked-blob-reader@npm:^5.0.0": + version: 5.0.0 + resolution: "@smithy/chunked-blob-reader@npm:5.0.0" + dependencies: + tslib: ^2.6.2 + checksum: 55ba0fe366ddaa3f93e1faf8a70df0b67efedbd0008922295efe215df09b68df0ba3043293e65b17e7d1be71448d074c2bfc54e5eb6bd18f59b425822c2b9e9a + languageName: node + linkType: hard + "@smithy/config-resolver@npm:^3.0.10, @smithy/config-resolver@npm:^3.0.5": version: 3.0.10 resolution: "@smithy/config-resolver@npm:3.0.10" @@ -9167,6 +10435,19 @@ __metadata: languageName: node linkType: hard +"@smithy/config-resolver@npm:^4.1.4": + version: 4.1.4 + resolution: "@smithy/config-resolver@npm:4.1.4" + dependencies: + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + "@smithy/util-config-provider": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + tslib: ^2.6.2 + checksum: 41832a42f8da7143732c71098b410f4ddcb096066126f7e8f45bae8d9aeb95681bd0d0d54886f46244c945c63829ca5d23373d4de31a038487aa07159722ef4e + languageName: node + linkType: hard + "@smithy/core@npm:^2.3.2, @smithy/core@npm:^2.5.1": version: 2.5.1 resolution: "@smithy/core@npm:2.5.1" @@ -9183,6 +10464,23 @@ __metadata: languageName: node linkType: hard +"@smithy/core@npm:^3.7.0": + version: 3.7.0 + resolution: "@smithy/core@npm:3.7.0" + dependencies: + "@smithy/middleware-serde": ^4.0.8 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: b49848fda805c88f3422db823f19d7ad59859e3180f0cc9f6e0d174a111c09251d00ba788fc3539512fbc08fa53d38977c58b21ddac8f4f74f6cc7f1918066be + languageName: node + linkType: hard + "@smithy/credential-provider-imds@npm:^3.2.0, @smithy/credential-provider-imds@npm:^3.2.5": version: 3.2.5 resolution: "@smithy/credential-provider-imds@npm:3.2.5" @@ -9196,6 +10494,19 @@ __metadata: languageName: node linkType: hard +"@smithy/credential-provider-imds@npm:^4.0.6": + version: 4.0.6 + resolution: "@smithy/credential-provider-imds@npm:4.0.6" + dependencies: + "@smithy/node-config-provider": ^4.1.3 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + tslib: ^2.6.2 + checksum: b1f3157d0a7b9f9155ac80aeac70d7db896d23d0322a6b38f0e848f1e53864ba1bca6d3dc5dd9af86446c371ebc5bffe01f0712ad562e7635e7d13e532622aa4 + languageName: node + linkType: hard + "@smithy/eventstream-codec@npm:^3.1.7": version: 3.1.7 resolution: "@smithy/eventstream-codec@npm:3.1.7" @@ -9208,6 +10519,18 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-codec@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/eventstream-codec@npm:4.0.4" + dependencies: + "@aws-crypto/crc32": 5.2.0 + "@smithy/types": ^4.3.1 + "@smithy/util-hex-encoding": ^4.0.0 + tslib: ^2.6.2 + checksum: 89b76826d4d3bf97317e3539ece105b9a03552144ad816a687b0b2cbca60e2b3513062c04b6cfacaffb270d616ffc8ac8bf549afc4aa676a6d7465df5a3215ba + languageName: node + linkType: hard + "@smithy/eventstream-serde-browser@npm:^3.0.5": version: 3.0.11 resolution: "@smithy/eventstream-serde-browser@npm:3.0.11" @@ -9219,6 +10542,17 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-serde-browser@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/eventstream-serde-browser@npm:4.0.4" + dependencies: + "@smithy/eventstream-serde-universal": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: b2444538555c54ac96d4049b0be3a65d959914bcd5198a8059edc838c7ffac5a1db225290194f85ea8805c47c1edc95484dfeb415cb2004ec3e572880f4fc8c5 + languageName: node + linkType: hard + "@smithy/eventstream-serde-config-resolver@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.8" @@ -9229,6 +10563,16 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-serde-config-resolver@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/eventstream-serde-config-resolver@npm:4.1.2" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 54184a29d1e42f1b972292efc3a5cbbe3ca237cd9ab76132bad40e8426fa62d0b7f6fdac01f23e3a9cac69919107ddfd9d2f2873f83ae1f65470d3052c67cefc + languageName: node + linkType: hard + "@smithy/eventstream-serde-node@npm:^3.0.4": version: 3.0.10 resolution: "@smithy/eventstream-serde-node@npm:3.0.10" @@ -9240,6 +10584,17 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-serde-node@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/eventstream-serde-node@npm:4.0.4" + dependencies: + "@smithy/eventstream-serde-universal": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: e6d0765a73332c79b69531ed20c27e49475173da09ce21e4c011a64d8a61d7c5c328c9bc1cab991e145fc969b16071ffd6a33ab11291c0fa2a46e8dae28da23b + languageName: node + linkType: hard + "@smithy/eventstream-serde-universal@npm:^3.0.10": version: 3.0.10 resolution: "@smithy/eventstream-serde-universal@npm:3.0.10" @@ -9251,6 +10606,17 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-serde-universal@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/eventstream-serde-universal@npm:4.0.4" + dependencies: + "@smithy/eventstream-codec": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: f0c18efa6cafa111ed20c8c53b4a7b6a0f8e25ccb0d2cafdf83282ebc6f96e47f26daf24b5b810ea83a02e03c994c35419d94fad76871f2cc6cb01d2aed277d9 + languageName: node + linkType: hard + "@smithy/fetch-http-handler@npm:^3.2.4": version: 3.2.9 resolution: "@smithy/fetch-http-handler@npm:3.2.9" @@ -9277,6 +10643,19 @@ __metadata: languageName: node linkType: hard +"@smithy/fetch-http-handler@npm:^5.1.0": + version: 5.1.0 + resolution: "@smithy/fetch-http-handler@npm:5.1.0" + dependencies: + "@smithy/protocol-http": ^5.1.2 + "@smithy/querystring-builder": ^4.0.4 + "@smithy/types": ^4.3.1 + "@smithy/util-base64": ^4.0.0 + tslib: ^2.6.2 + checksum: 9bd54f40f00f35a4eee3c359e5942fc5c6ea1c43d7c708e5dd2cd74e8291c55fc6f1ce043d66eea7c1ca687dda682899058967c5b92df75ab56e44a773bb8679 + languageName: node + linkType: hard + "@smithy/hash-blob-browser@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/hash-blob-browser@npm:3.1.7" @@ -9289,6 +10668,18 @@ __metadata: languageName: node linkType: hard +"@smithy/hash-blob-browser@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/hash-blob-browser@npm:4.0.4" + dependencies: + "@smithy/chunked-blob-reader": ^5.0.0 + "@smithy/chunked-blob-reader-native": ^4.0.0 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: f970058c2e04e86427e1474355199027fc84dc1d96d9a2278ed37904458d37b020472541390558bd3fb071bbd177b2850b18ceb1beb39d387fead06a2912f974 + languageName: node + linkType: hard + "@smithy/hash-node@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/hash-node@npm:3.0.8" @@ -9301,6 +10692,18 @@ __metadata: languageName: node linkType: hard +"@smithy/hash-node@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/hash-node@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + "@smithy/util-buffer-from": ^4.0.0 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 07beb38643990f6c055457765d65af2aedd5944d819025df90d1f2f59596d1a1394cd8c9035ac6d343bc55e3afeb186b51b0ac91938024da8687120fc0b436dc + languageName: node + linkType: hard + "@smithy/hash-stream-node@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/hash-stream-node@npm:3.1.7" @@ -9312,6 +10715,17 @@ __metadata: languageName: node linkType: hard +"@smithy/hash-stream-node@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/hash-stream-node@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 4899132433f520e45972bbacb6a999da8d7ccf4c813f2fb28b1af65eaf268ba549b2c37dd54a586cd7bcd82f6e4cec914651a6446b3fb3e1f226ca1864051535 + languageName: node + linkType: hard + "@smithy/invalid-dependency@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/invalid-dependency@npm:3.0.8" @@ -9322,6 +10736,16 @@ __metadata: languageName: node linkType: hard +"@smithy/invalid-dependency@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/invalid-dependency@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 5e5a6282c17a7310f8e866c7e34fa07479d42c650cf3c1875bdb0ec38d5280eeac82a269605a3521b8fa455b92673d8fd5e97eb997acf81a80da82d6f501d651 + languageName: node + linkType: hard + "@smithy/is-array-buffer@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/is-array-buffer@npm:2.0.0" @@ -9340,6 +10764,15 @@ __metadata: languageName: node linkType: hard +"@smithy/is-array-buffer@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/is-array-buffer@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: ae393fbd5944d710443cd5dd225d1178ef7fb5d6259c14f3e1316ec75e401bda6cf86f7eb98bfd38e5ed76e664b810426a5756b916702cbd418f0933e15e7a3b + languageName: node + linkType: hard + "@smithy/md5-js@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/md5-js@npm:3.0.8" @@ -9351,6 +10784,17 @@ __metadata: languageName: node linkType: hard +"@smithy/md5-js@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/md5-js@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 7c66405dca5d7df6694367dbb4a3d9f13fdfe2589abc81f85d5fb7bf876e1382578d9c477d2256d4b5bc59951c3c534e51eb65c53c2fb3251080f16d1d7ea82c + languageName: node + linkType: hard + "@smithy/middleware-content-length@npm:^3.0.5": version: 3.0.10 resolution: "@smithy/middleware-content-length@npm:3.0.10" @@ -9362,6 +10806,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-content-length@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/middleware-content-length@npm:4.0.4" + dependencies: + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: fde43ff13f0830c4608b83cf6e2bd3ae142aa6eb3df6f6c190c2564dd00c2c98f4f95da9146c69bc09115ad87ffc9dc24935d1a3d6d3b2383a9c8558d9177dd6 + languageName: node + linkType: hard + "@smithy/middleware-endpoint@npm:^3.1.0, @smithy/middleware-endpoint@npm:^3.2.1": version: 3.2.1 resolution: "@smithy/middleware-endpoint@npm:3.2.1" @@ -9378,6 +10833,22 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-endpoint@npm:^4.1.14": + version: 4.1.14 + resolution: "@smithy/middleware-endpoint@npm:4.1.14" + dependencies: + "@smithy/core": ^3.7.0 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-middleware": ^4.0.4 + tslib: ^2.6.2 + checksum: 83d86051d30e402bdb98f62df637d76b2e9c31409cbe30ad39d8a56eb052eaa25c82118ce77d5e1055796a9f4b34eeb65bf51f6d85c68959bbfdb1632a7d0424 + languageName: node + linkType: hard + "@smithy/middleware-retry@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/middleware-retry@npm:3.0.25" @@ -9395,6 +10866,23 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-retry@npm:^4.1.15": + version: 4.1.15 + resolution: "@smithy/middleware-retry@npm:4.1.15" + dependencies: + "@smithy/node-config-provider": ^4.1.3 + "@smithy/protocol-http": ^5.1.2 + "@smithy/service-error-classification": ^4.0.6 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 738fc245faac0b2302bc0db803abcc30456471289e87e7e543d2c567a098ed9440823897f13acbd43b81792dc55724c36e742a6375f3666fbcde7efe6a832d03 + languageName: node + linkType: hard + "@smithy/middleware-serde@npm:^3.0.3, @smithy/middleware-serde@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/middleware-serde@npm:3.0.8" @@ -9405,6 +10893,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-serde@npm:^4.0.8": + version: 4.0.8 + resolution: "@smithy/middleware-serde@npm:4.0.8" + dependencies: + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 11414e584780716b2b0487fe748da9927943d4d810b5b0161e73df6ab24a4d17f675773287f95868c57a71013385f7b027eb2afbab1eed3dbaafef754b482b27 + languageName: node + linkType: hard + "@smithy/middleware-stack@npm:^3.0.3, @smithy/middleware-stack@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/middleware-stack@npm:3.0.8" @@ -9415,6 +10914,16 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-stack@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/middleware-stack@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: b29b6430e31f11683f0ce0e06d21a4bfe6cb791ce1eb5686533559baa81698f617bfbfdac06f569e13f077ce177cb70e55f4db20701906b3e344d9294817f382 + languageName: node + linkType: hard + "@smithy/node-config-provider@npm:^3.1.4, @smithy/node-config-provider@npm:^3.1.9": version: 3.1.9 resolution: "@smithy/node-config-provider@npm:3.1.9" @@ -9427,6 +10936,18 @@ __metadata: languageName: node linkType: hard +"@smithy/node-config-provider@npm:^4.1.3": + version: 4.1.3 + resolution: "@smithy/node-config-provider@npm:4.1.3" + dependencies: + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: bea20b3f92290fbefa32d30c4ac7632f94d4e89b5432dfe5a2d0c6261bfd90e882d62dd02e0a4e65f3bc89f815b19e44d7bb103a78b6c77941cc186450ad79f1 + languageName: node + linkType: hard + "@smithy/node-http-handler@npm:^3.1.4, @smithy/node-http-handler@npm:^3.2.5": version: 3.2.5 resolution: "@smithy/node-http-handler@npm:3.2.5" @@ -9440,6 +10961,19 @@ __metadata: languageName: node linkType: hard +"@smithy/node-http-handler@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/node-http-handler@npm:4.1.0" + dependencies: + "@smithy/abort-controller": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/querystring-builder": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 6212b86b62dc44d0d8eb3949428b2ddbb5d064e722979fc5384ec52367b8246b19619732822514e0be9d6455b8c2c41d29f46a74bf43548cc2713ea7552c07a8 + languageName: node + linkType: hard + "@smithy/property-provider@npm:^3.1.3, @smithy/property-provider@npm:^3.1.8": version: 3.1.8 resolution: "@smithy/property-provider@npm:3.1.8" @@ -9450,6 +10984,16 @@ __metadata: languageName: node linkType: hard +"@smithy/property-provider@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/property-provider@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: c370efbb43ab01fb6050fbf4c231bbe2fb7d660256adeee40c0c4c14b7af1b9b75c36f6924aeacdd2885fad1aaf0655047cafe5f0d22f5e371cbd25ff2f04b27 + languageName: node + linkType: hard + "@smithy/protocol-http@npm:^4.1.0, @smithy/protocol-http@npm:^4.1.4, @smithy/protocol-http@npm:^4.1.5": version: 4.1.5 resolution: "@smithy/protocol-http@npm:4.1.5" @@ -9460,6 +11004,16 @@ __metadata: languageName: node linkType: hard +"@smithy/protocol-http@npm:^5.1.2": + version: 5.1.2 + resolution: "@smithy/protocol-http@npm:5.1.2" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 50fb026efa321e65a77f9747312eeb428ff2196095c15ed5937efe807a4734c47746759ccf2dbc84a45719effcbc81221662289be6d4d5ec122afb0e3cd66fd9 + languageName: node + linkType: hard + "@smithy/querystring-builder@npm:^3.0.3, @smithy/querystring-builder@npm:^3.0.7, @smithy/querystring-builder@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-builder@npm:3.0.8" @@ -9471,6 +11025,17 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-builder@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/querystring-builder@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + "@smithy/util-uri-escape": ^4.0.0 + tslib: ^2.6.2 + checksum: 30ec0301fbc2212101391841000a3117ab6c3ae2b6b2a1db230cc1dfcf97738f527b23f859f0a5e843f2a983793b58cdcd21a0ce11ef93fcdf5d8a1ee0d70fbc + languageName: node + linkType: hard + "@smithy/querystring-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-parser@npm:3.0.8" @@ -9481,6 +11046,16 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-parser@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/querystring-parser@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 36bc93732a1628be5dd53748f6f36237bad26de2da810195213541dd35b20eee0b0264160a0de734b9333ca747e0229253d6729d1a8ddc26d176c0b1cce309e0 + languageName: node + linkType: hard + "@smithy/service-error-classification@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/service-error-classification@npm:3.0.8" @@ -9490,6 +11065,15 @@ __metadata: languageName: node linkType: hard +"@smithy/service-error-classification@npm:^4.0.6": + version: 4.0.6 + resolution: "@smithy/service-error-classification@npm:4.0.6" + dependencies: + "@smithy/types": ^4.3.1 + checksum: b67f5ef633fa803f6b9f81f53dcc361253f33e01ffefbcb1beaf29c578834b1381e5f979e25b38985d351142e1ab4ee638cf132a2ba9f6f7a0a806a35da76d86 + languageName: node + linkType: hard + "@smithy/shared-ini-file-loader@npm:^3.1.4, @smithy/shared-ini-file-loader@npm:^3.1.9": version: 3.1.9 resolution: "@smithy/shared-ini-file-loader@npm:3.1.9" @@ -9500,6 +11084,16 @@ __metadata: languageName: node linkType: hard +"@smithy/shared-ini-file-loader@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/shared-ini-file-loader@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: a3ecabadda13ff6fca99585e7e0086a04c4d2350b8c783b3a23493c2ae0a599f397d3cb80a7e171b7123889340995cada866d320726fa6a03f3063d60d5d0207 + languageName: node + linkType: hard + "@smithy/signature-v4@npm:^4.1.0": version: 4.2.1 resolution: "@smithy/signature-v4@npm:4.2.1" @@ -9516,6 +11110,22 @@ __metadata: languageName: node linkType: hard +"@smithy/signature-v4@npm:^5.1.2": + version: 5.1.2 + resolution: "@smithy/signature-v4@npm:5.1.2" + dependencies: + "@smithy/is-array-buffer": ^4.0.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + "@smithy/util-hex-encoding": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-uri-escape": ^4.0.0 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 83d3870668a6c080c1d0cbecf2e7d1a86c0298cc3a3df9fba21bd942e2a9bcae81eb50960c66bba00c6f9820ef9e5ab3e5ddba67b2d7914a09a82c7887621c0c + languageName: node + linkType: hard + "@smithy/smithy-client@npm:^3.1.12, @smithy/smithy-client@npm:^3.4.2": version: 3.4.2 resolution: "@smithy/smithy-client@npm:3.4.2" @@ -9531,6 +11141,21 @@ __metadata: languageName: node linkType: hard +"@smithy/smithy-client@npm:^4.4.6": + version: 4.4.6 + resolution: "@smithy/smithy-client@npm:4.4.6" + dependencies: + "@smithy/core": ^3.7.0 + "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + "@smithy/util-stream": ^4.2.3 + tslib: ^2.6.2 + checksum: fc241798d60e0cdc2502f0e9ce5dd275a780a566fe686b1130c83eac2ce773edc6b5bc3409f2fa7dc6551b6a9836dca0499ae7b8dd048853e1bddc35489f4335 + languageName: node + linkType: hard + "@smithy/types@npm:^3.3.0, @smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": version: 3.6.0 resolution: "@smithy/types@npm:3.6.0" @@ -9540,6 +11165,15 @@ __metadata: languageName: node linkType: hard +"@smithy/types@npm:^4.3.1": + version: 4.3.1 + resolution: "@smithy/types@npm:4.3.1" + dependencies: + tslib: ^2.6.2 + checksum: 8b350562b9ed4ff97465025b4ae77a34bb07b9d47fb6f9781755aac9401b0355a63c2fef307393e2dae3fa0277149dd7d83f5bc2a63d4ad3519ea32fd56b5cda + languageName: node + linkType: hard + "@smithy/url-parser@npm:^3.0.3, @smithy/url-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/url-parser@npm:3.0.8" @@ -9551,6 +11185,17 @@ __metadata: languageName: node linkType: hard +"@smithy/url-parser@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/url-parser@npm:4.0.4" + dependencies: + "@smithy/querystring-parser": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 5f4649d9ff618c683e339fa826b1d722419bf8e20d72726fc5fe3cd479ec8c161d4b09b6e24e49b0143a6fb4f9a950d35410db1834e143c28e377b9c529a3657 + languageName: node + linkType: hard + "@smithy/util-base64@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-base64@npm:3.0.0" @@ -9562,6 +11207,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-base64@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-base64@npm:4.0.0" + dependencies: + "@smithy/util-buffer-from": ^4.0.0 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: ad18ec66cc357c189eef358d96876b114faf7086b13e47e009b265d0ff80cec046052500489c183957b3a036768409acdd1a373e01074cc002ca6983f780cffc + languageName: node + linkType: hard + "@smithy/util-body-length-browser@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-body-length-browser@npm:3.0.0" @@ -9571,6 +11227,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-body-length-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-body-length-browser@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: 574a10934024a86556e9dcde1a9776170284326c3dfcc034afa128cc5a33c1c8179fca9cfb622ef8be5f2004316cc3f427badccceb943e829105536ec26306d9 + languageName: node + linkType: hard + "@smithy/util-body-length-node@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-body-length-node@npm:3.0.0" @@ -9580,6 +11245,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-body-length-node@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-body-length-node@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: e91fd3816767606c5f786166ada26440457fceb60f96653b3d624dcf762a8c650e513c275ff3f647cb081c63c283cc178853a7ed9aa224abc8ece4eeeef7a1dd + languageName: node + linkType: hard + "@smithy/util-buffer-from@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-buffer-from@npm:2.0.0" @@ -9600,6 +11274,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-buffer-from@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-buffer-from@npm:4.0.0" + dependencies: + "@smithy/is-array-buffer": ^4.0.0 + tslib: ^2.6.2 + checksum: be7cd33b6cb91503982b297716251e67cdca02819a15797632091cadab2dc0b4a147fff0709a0aa9bbc0b82a2644a7ed7c8afdd2194d5093cee2e9605b3a9f6f + languageName: node + linkType: hard + "@smithy/util-config-provider@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-config-provider@npm:3.0.0" @@ -9609,6 +11293,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-config-provider@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-config-provider@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: cd9498d5f77a73aadd575084bcb22d2bb5945bac4605d605d36f2efe3f165f2b60f4dc88b7a62c2ed082ffa4b2c2f19621d0859f18399edbc2b5988d92e4649f + languageName: node + linkType: hard + "@smithy/util-defaults-mode-browser@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/util-defaults-mode-browser@npm:3.0.25" @@ -9622,6 +11315,19 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-browser@npm:^4.0.22": + version: 4.0.22 + resolution: "@smithy/util-defaults-mode-browser@npm:4.0.22" + dependencies: + "@smithy/property-provider": ^4.0.4 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + bowser: ^2.11.0 + tslib: ^2.6.2 + checksum: 7c83c1c8e25fb00e43af187c4787b92c9748786fb978e51196fe061a8d45b84b2e5e2c860322289799fa57b972c20071f74c8c2c3a8a85ac5f2dc36b02279463 + languageName: node + linkType: hard + "@smithy/util-defaults-mode-node@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/util-defaults-mode-node@npm:3.0.25" @@ -9637,6 +11343,21 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-node@npm:^4.0.22": + version: 4.0.22 + resolution: "@smithy/util-defaults-mode-node@npm:4.0.22" + dependencies: + "@smithy/config-resolver": ^4.1.4 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/property-provider": ^4.0.4 + "@smithy/smithy-client": ^4.4.6 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 1a2894078397be4786c2501e20167d2f3a86bf77d4f270be862053ec4aeca5fe43850c2fc117df29854c7e60a4b8f3640fe81007e518283e98bfc429d8d771c9 + languageName: node + linkType: hard + "@smithy/util-endpoints@npm:^2.0.5": version: 2.1.4 resolution: "@smithy/util-endpoints@npm:2.1.4" @@ -9648,6 +11369,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-endpoints@npm:^3.0.6": + version: 3.0.6 + resolution: "@smithy/util-endpoints@npm:3.0.6" + dependencies: + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: d7d583c73a0c1ce38188569616cd4d7c95c36c0393516117043962b932f8c743e8cd672d2edd23ea8a9da0e30b84ee0f0ced0709cc8024b70ea8e5f17f505811 + languageName: node + linkType: hard + "@smithy/util-hex-encoding@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-hex-encoding@npm:3.0.0" @@ -9657,6 +11389,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-hex-encoding@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-hex-encoding@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: 70dbb3aa1a79aff3329d07a66411ff26398df338bdd8a6d077b438231afe3dc86d9a7022204baddecd8bc633f059d5c841fa916d81dd7447ea79b64148f386d2 + languageName: node + linkType: hard + "@smithy/util-middleware@npm:^3.0.3, @smithy/util-middleware@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/util-middleware@npm:3.0.8" @@ -9667,6 +11408,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-middleware@npm:^4.0.4": + version: 4.0.4 + resolution: "@smithy/util-middleware@npm:4.0.4" + dependencies: + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 39530add63ec13dac555846c30e98128316136f7f57bfd8fe876a8c15a7677cb64d0a33fd1f08b671096d769ab3f025d4d8c785a9d7a7cdf42fd0188236b0f32 + languageName: node + linkType: hard + "@smithy/util-retry@npm:^3.0.3, @smithy/util-retry@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/util-retry@npm:3.0.8" @@ -9678,6 +11429,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-retry@npm:^4.0.6": + version: 4.0.6 + resolution: "@smithy/util-retry@npm:4.0.6" + dependencies: + "@smithy/service-error-classification": ^4.0.6 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: b1d3a5875769300bb74d63243868eba8a8f3567a9b22776cfb11700cfdd10bf10b2ed96bffdc9527d9130daf1be2482ea9217e1865a94efed01fe66e688768f4 + languageName: node + linkType: hard + "@smithy/util-stream@npm:^3.1.3, @smithy/util-stream@npm:^3.2.1": version: 3.2.1 resolution: "@smithy/util-stream@npm:3.2.1" @@ -9694,6 +11456,22 @@ __metadata: languageName: node linkType: hard +"@smithy/util-stream@npm:^4.2.3": + version: 4.2.3 + resolution: "@smithy/util-stream@npm:4.2.3" + dependencies: + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/types": ^4.3.1 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-buffer-from": ^4.0.0 + "@smithy/util-hex-encoding": ^4.0.0 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 3321f944a36c7a9a8ef17f5c58b29ef06107c9bc682d7932f2ea9e1b6f839174d07d053e81285bad8b29c11848e799795e6c016648a6e3a8636d8acfe24183ef + languageName: node + linkType: hard + "@smithy/util-uri-escape@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-uri-escape@npm:3.0.0" @@ -9703,6 +11481,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-uri-escape@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-uri-escape@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: 23984624060756adba8aa4ab1693fe6b387ee5064d8ec4dfd39bb5908c4ee8b9c3f2dc755da9b07505d8e3ce1338c1867abfa74158931e4728bf3cfcf2c05c3d + languageName: node + linkType: hard + "@smithy/util-utf8@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-utf8@npm:2.0.0" @@ -9723,6 +11510,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-utf8@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/util-utf8@npm:4.0.0" + dependencies: + "@smithy/util-buffer-from": ^4.0.0 + tslib: ^2.6.2 + checksum: 28a5a5372cbf0b3d2e32dd16f79b04c2aec6f704cf13789db922e9686fde38dde0171491cfa4c2c201595d54752a319faaeeed3c325329610887694431e28c98 + languageName: node + linkType: hard + "@smithy/util-waiter@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/util-waiter@npm:3.1.7" @@ -9734,6 +11531,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-waiter@npm:^4.0.6": + version: 4.0.6 + resolution: "@smithy/util-waiter@npm:4.0.6" + dependencies: + "@smithy/abort-controller": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 4027aed03515dfb627c09e0d490f001b912def1142865d0ec8de1fc0422e7c71e96df3efc7b92c7fdfff9030105b2b4213120506d064ad346cc79124708c1b17 + languageName: node + linkType: hard + "@surma/rollup-plugin-off-main-thread@npm:^2.2.3": version: 2.2.3 resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3" @@ -10842,6 +12650,13 @@ __metadata: languageName: node linkType: hard +"@types/uuid@npm:^9.0.1": + version: 9.0.8 + resolution: "@types/uuid@npm:9.0.8" + checksum: b411b93054cb1d4361919579ef3508a1f12bf15b5fdd97337d3d351bece6c921b52b6daeef89b62340fd73fd60da407878432a1af777f40648cbe53a01723489 + languageName: node + linkType: hard + "@types/which@npm:^1.3.2": version: 1.3.2 resolution: "@types/which@npm:1.3.2" From aca2d07e5300a2f6a12fd25c67a7ee5643481116 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 14 Jul 2025 15:07:12 -0700 Subject: [PATCH 02/13] refactor: category storage --- packages/amplify-category-storage/package.json | 3 ++- .../awscloudformation/import/import-s3.ts | 2 +- .../provider-utils/awscloudformation/import/types.ts | 4 ++-- packages/amplify-util-import/package.json | 3 ++- packages/amplify-util-import/src/IDynamoDBService.ts | 4 ++-- packages/amplify-util-import/src/IS3Service.ts | 4 ++-- yarn.lock | 10 ++++++---- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/amplify-category-storage/package.json b/packages/amplify-category-storage/package.json index dfdb8dce246..d7860016a46 100644 --- a/packages/amplify-category-storage/package.json +++ b/packages/amplify-category-storage/package.json @@ -32,10 +32,11 @@ "@aws-amplify/amplify-prompts": "2.8.7", "@aws-amplify/amplify-util-import": "2.8.3", "@aws-amplify/cli-extensibility-helper": "3.0.39", + "@aws-sdk/client-dynamodb": "^3.515.0", + "@aws-sdk/client-s3": "^3.515.0", "amplify-headless-interface": "1.17.8", "amplify-util-headless-input": "1.9.19", "aws-cdk-lib": "~2.189.1", - "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "constructs": "^10.0.5", "enquirer": "^2.3.6", diff --git a/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/import-s3.ts b/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/import-s3.ts index ca15b8d9f62..0a52bc2c47c 100644 --- a/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/import-s3.ts +++ b/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/import-s3.ts @@ -10,7 +10,7 @@ import { } from '@aws-amplify/amplify-cli-core'; import { printer } from '@aws-amplify/amplify-prompts'; import { IS3Service } from '@aws-amplify/amplify-util-import'; -import { Bucket } from 'aws-sdk/clients/s3'; +import { Bucket } from '@aws-sdk/client-s3'; import Enquirer from 'enquirer'; import _ from 'lodash'; import { v4 as uuid } from 'uuid'; diff --git a/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/types.ts b/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/types.ts index 958d9a86a7e..98c1abb0120 100644 --- a/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/types.ts +++ b/packages/amplify-category-storage/src/provider-utils/awscloudformation/import/types.ts @@ -1,7 +1,7 @@ import { $TSContext, $TSObject } from '@aws-amplify/amplify-cli-core'; import { IDynamoDBService, IS3Service } from '@aws-amplify/amplify-util-import'; -import { Bucket } from 'aws-sdk/clients/s3'; -import { TableDescription } from 'aws-sdk/clients/dynamodb'; +import { Bucket } from '@aws-sdk/client-s3'; +import { TableDescription } from '@aws-sdk/client-dynamodb'; // parameters.json export type S3ResourceParameters = { diff --git a/packages/amplify-util-import/package.json b/packages/amplify-util-import/package.json index ed3e3daa34a..87564c44d6c 100644 --- a/packages/amplify-util-import/package.json +++ b/packages/amplify-util-import/package.json @@ -20,7 +20,8 @@ "author": "Amazon Web Services", "license": "Apache-2.0", "dependencies": { - "aws-sdk": "^2.1464.0" + "@aws-sdk/client-dynamodb": "^3.515.0", + "@aws-sdk/client-s3": "^3.515.0" }, "devDependencies": { "@types/node": "^12.12.6" diff --git a/packages/amplify-util-import/src/IDynamoDBService.ts b/packages/amplify-util-import/src/IDynamoDBService.ts index 81864d704e4..597a80a347d 100644 --- a/packages/amplify-util-import/src/IDynamoDBService.ts +++ b/packages/amplify-util-import/src/IDynamoDBService.ts @@ -1,7 +1,7 @@ -import { TableDescription, TableName } from 'aws-sdk/clients/dynamodb'; +import { TableDescription } from '@aws-sdk/client-dynamodb'; export interface IDynamoDBService { - listTables(): Promise; + listTables(): Promise; getTableDetails(tableName: string): Promise; tableExists(tableName: string): Promise; } diff --git a/packages/amplify-util-import/src/IS3Service.ts b/packages/amplify-util-import/src/IS3Service.ts index a949250f3a2..b59e0179245 100644 --- a/packages/amplify-util-import/src/IS3Service.ts +++ b/packages/amplify-util-import/src/IS3Service.ts @@ -1,7 +1,7 @@ -import { Buckets } from 'aws-sdk/clients/s3'; +import { Bucket } from '@aws-sdk/client-s3'; export interface IS3Service { - listBuckets(): Promise; + listBuckets(): Promise; bucketExists(bucketName: string): Promise; getBucketLocation(bucketName: string): Promise; } diff --git a/yarn.lock b/yarn.lock index 69b643732c7..33a5c33e358 100644 --- a/yarn.lock +++ b/yarn.lock @@ -377,10 +377,11 @@ __metadata: "@aws-amplify/amplify-prompts": 2.8.7 "@aws-amplify/amplify-util-import": 2.8.3 "@aws-amplify/cli-extensibility-helper": 3.0.39 + "@aws-sdk/client-dynamodb": ^3.515.0 + "@aws-sdk/client-s3": ^3.515.0 amplify-headless-interface: 1.17.8 amplify-util-headless-input: 1.9.19 aws-cdk-lib: ~2.189.1 - aws-sdk: ^2.1464.0 chalk: ^4.1.1 cloudform-types: ^4.2.0 constructs: ^10.0.5 @@ -883,8 +884,9 @@ __metadata: version: 0.0.0-use.local resolution: "@aws-amplify/amplify-util-import@workspace:packages/amplify-util-import" dependencies: + "@aws-sdk/client-dynamodb": ^3.515.0 + "@aws-sdk/client-s3": ^3.515.0 "@types/node": ^12.12.6 - aws-sdk: ^2.1464.0 languageName: unknown linkType: soft @@ -2565,7 +2567,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-dynamodb@npm:^3.624.0": +"@aws-sdk/client-dynamodb@npm:^3.515.0, @aws-sdk/client-dynamodb@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-dynamodb@npm:3.844.0" dependencies: @@ -3517,7 +3519,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.624.0": +"@aws-sdk/client-s3@npm:^3.515.0, @aws-sdk/client-s3@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-s3@npm:3.844.0" dependencies: From 28e12ba3eb266bc6ae63d2535092cec588c96b7e Mon Sep 17 00:00:00 2001 From: Vieltojarvi Date: Tue, 15 Jul 2025 09:19:07 -0700 Subject: [PATCH 03/13] chore: returning aws-sdk for now --- packages/amplify-provider-awscloudformation/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 68ff2d4ca72..8b3d454c1e4 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -58,6 +58,7 @@ "amplify-codegen": "^4.10.3", "archiver": "^7.0.1", "aws-cdk-lib": "~2.189.1", + "aws-sdk": "^2.1464.0", "bottleneck": "2.19.5", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", From 6bb961e3644273ad478d7a460be89e56f7b4de32 Mon Sep 17 00:00:00 2001 From: Vieltojarvi Date: Tue, 15 Jul 2025 10:28:26 -0700 Subject: [PATCH 04/13] fix: yarn lock --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index 33a5c33e358..2eed2147c50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -839,6 +839,7 @@ __metadata: amplify-codegen: ^4.10.3 archiver: ^7.0.1 aws-cdk-lib: ~2.189.1 + aws-sdk: ^2.1464.0 bottleneck: 2.19.5 chalk: ^4.1.1 cloudform-types: ^4.2.0 From 4b26596aa935aa7468da710471fb84d6ed19593e Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 16 Jul 2025 09:41:08 -0700 Subject: [PATCH 05/13] fix: some adjustments --- .../src/aws-utils/S3Service.ts | 4 +++- .../src/system-config-manager.ts | 1 - packages/amplify-util-import/package.json | 3 ++- yarn.lock | 13 +++++++------ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts index d4b9f7aff05..bd9721ce6a9 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts @@ -65,7 +65,9 @@ export class S3Service implements IS3Service { // region in every case. // https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html if ( - (response.LocationConstraint === undefined || response.LocationConstraint, toString() === '' || response.LocationConstraint === null) + response.LocationConstraint === undefined || + response.LocationConstraint.toString() === '' || + response.LocationConstraint === null ) { return 'us-east-1'; } diff --git a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts index 408036a286b..ea0dc81025c 100644 --- a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts @@ -97,7 +97,6 @@ export const getProfiledAwsConfig = async ( // need to force AWS_SDK_LOAD_CONFIG to a truthy value to force credential process to prefer the credential process in ~/.aws/config instead of ~/.aws/credentials const sdkLoadConfigOriginal = process.env.AWS_SDK_LOAD_CONFIG; process.env.AWS_SDK_LOAD_CONFIG = '1'; - // Use fromProcess credential provider from SDK v3 const credentials = await fromProcess({ profile: profileName })(); awsConfigInfo = { diff --git a/packages/amplify-util-import/package.json b/packages/amplify-util-import/package.json index 87564c44d6c..e7e8f10ab99 100644 --- a/packages/amplify-util-import/package.json +++ b/packages/amplify-util-import/package.json @@ -21,7 +21,8 @@ "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-dynamodb": "^3.515.0", - "@aws-sdk/client-s3": "^3.515.0" + "@aws-sdk/client-s3": "^3.515.0", + "aws-sdk": "^2.1464.0" }, "devDependencies": { "@types/node": "^12.12.6" diff --git a/yarn.lock b/yarn.lock index 2eed2147c50..435f6be8e22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -888,6 +888,7 @@ __metadata: "@aws-sdk/client-dynamodb": ^3.515.0 "@aws-sdk/client-s3": ^3.515.0 "@types/node": ^12.12.6 + aws-sdk: ^2.1464.0 languageName: unknown linkType: soft @@ -3454,7 +3455,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-s3@npm:3.624.0, @aws-sdk/client-s3@npm:^3.25.0": +"@aws-sdk/client-s3@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-s3@npm:3.624.0" dependencies: @@ -3520,7 +3521,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.515.0, @aws-sdk/client-s3@npm:^3.624.0": +"@aws-sdk/client-s3@npm:^3.25.0, @aws-sdk/client-s3@npm:^3.515.0, @aws-sdk/client-s3@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-s3@npm:3.844.0" dependencies: @@ -5850,7 +5851,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.609.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.25.0": +"@aws-sdk/types@npm:3.609.0": version: 3.609.0 resolution: "@aws-sdk/types@npm:3.609.0" dependencies: @@ -5860,7 +5861,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.840.0, @aws-sdk/types@npm:^3.624.0": +"@aws-sdk/types@npm:3.840.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.25.0, @aws-sdk/types@npm:^3.624.0": version: 3.840.0 resolution: "@aws-sdk/types@npm:3.840.0" dependencies: @@ -5904,7 +5905,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-arn-parser@npm:3.568.0, @aws-sdk/util-arn-parser@npm:^3.310.0": +"@aws-sdk/util-arn-parser@npm:3.568.0": version: 3.568.0 resolution: "@aws-sdk/util-arn-parser@npm:3.568.0" dependencies: @@ -5913,7 +5914,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-arn-parser@npm:3.804.0": +"@aws-sdk/util-arn-parser@npm:3.804.0, @aws-sdk/util-arn-parser@npm:^3.310.0": version: 3.804.0 resolution: "@aws-sdk/util-arn-parser@npm:3.804.0" dependencies: From 53cb005047c82d3515bb08176cfd8fd43af884a8 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 16 Jul 2025 15:52:00 -0700 Subject: [PATCH 06/13] fix: fixed some tests --- .../src/__tests__/aws-utils/S3Service.test.ts | 69 +++++++++++-------- .../__tests__/system-config-manager.test.ts | 57 ++++++--------- .../src/aws-utils/DynamoDBService.ts | 1 - .../src/system-config-manager.ts | 2 +- 4 files changed, 64 insertions(+), 65 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/S3Service.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/S3Service.test.ts index a82fdafc6e5..2c47a9db4a8 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/S3Service.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/S3Service.test.ts @@ -1,44 +1,57 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; import { createS3Service } from '../../aws-utils/S3Service'; +import { HeadBucketCommand } from '@aws-sdk/client-s3'; -jest.mock('aws-sdk', () => { - const mockHeadBucketForUsEast1 = jest.fn().mockImplementation((params: { Bucket: string }) => { - return { - promise: jest.fn().mockImplementation(() => { - if (params.Bucket.includes('us-east-1')) { - return Promise.resolve({}); - } - return Promise.reject({ code: 'BadRequest', region: 'eu-south-1' }); - }), - }; +// Mock the AWS SDK v3 S3Client +jest.mock('@aws-sdk/client-s3', () => { + const mockSendForUsEast1 = jest.fn().mockImplementation(async (command) => { + if (command instanceof HeadBucketCommand) { + const params = command.input; + if (params.Bucket!.includes('us-east-1')) { + return {}; + } + const error = new Error('BadRequest'); + error.name = 'BadRequest'; + throw error; + } + return {}; + }); + + const mockSendForEuSouth1 = jest.fn().mockImplementation(async (command) => { + if (command instanceof HeadBucketCommand) { + const params = command.input; + if (params.Bucket!.includes('eu-south-1')) { + return {}; + } + const error = new Error('BadRequest'); + error.name = 'BadRequest'; + throw error; + } + return {}; }); - const mockHeadBucketForEuSouth1 = jest.fn().mockImplementation((params) => { + // Mock S3Client constructor + const mockS3Client = jest.fn().mockImplementation((options) => { + const region = options.region || 'us-east-1'; + return { - promise: jest.fn().mockImplementation(() => { - if (params.Bucket.includes('eu-south-1')) { - return Promise.resolve({}); - } - return Promise.reject({ code: 'BadRequest', region: 'us-east-1' }); - }), + send: region === 'eu-south-1' ? mockSendForEuSouth1 : mockSendForUsEast1, + config: { + region, + credentials: options.credentials, + }, }; }); return { - S3: jest.fn((options) => { - const region = options.region || 'us-east-1'; - if (region === 'eu-south-1') { - return { - headBucket: mockHeadBucketForEuSouth1, - }; - } + S3Client: mockS3Client, + HeadBucketCommand: jest.fn().mockImplementation((params) => { return { - config: { - region, - }, - headBucket: mockHeadBucketForUsEast1, + input: params, }; }), + ListBucketsCommand: jest.fn(), + GetBucketLocationCommand: jest.fn(), }; }); diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/system-config-manager.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/system-config-manager.test.ts index a8da05f6557..24ca84ea870 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/system-config-manager.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/system-config-manager.test.ts @@ -1,6 +1,6 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; import fs from 'fs-extra'; -import { CredentialProviderChain, ProcessCredentials } from 'aws-sdk'; +import { fromProcess } from '@aws-sdk/credential-providers'; import { getProfileCredentials, getProfiledAwsConfig } from '../system-config-manager'; jest.setTimeout(15000); @@ -11,9 +11,8 @@ jest.mock('../utils/aws-logger', () => ({ jest.mock('fs-extra'); const fs_mock = fs as jest.Mocked; -jest.mock('aws-sdk'); -const ProcessCredentialsMock = ProcessCredentials as jest.MockedClass; -const CredentialProviderChainMock = CredentialProviderChain as jest.MockedClass; +jest.mock('@aws-sdk/credential-providers'); +const fromProcessMock = fromProcess as jest.MockedFunction; const context_stub = { print: { @@ -29,14 +28,14 @@ describe('profile tests', () => { fs_mock.existsSync.mockReturnValue(true); describe('credential process loading', () => { - const mockResolvePromise = jest.fn().mockReturnValue( - Promise.resolve({ - accessKeyId: 'chainTestAccessKey', - secretAccessKey: 'chainTestSecret', - sessionToken: 'chainTestSessionToken', - expireTime: new Date(1234), - }), - ); + const mockCredentials = { + accessKeyId: 'chainTestAccessKey', + secretAccessKey: 'chainTestSecret', + sessionToken: 'chainTestSessionToken', + expiration: new Date(1234), + }; + + const mockCredentialProvider = jest.fn().mockResolvedValue(mockCredentials); beforeEach(() => { // setup @@ -47,24 +46,7 @@ describe('profile tests', () => { fs_mock.readFileSync.mockReturnValue(awsConfigContent); - CredentialProviderChainMock.mockImplementation(() => ({ - providers: [], - resolvePromise: mockResolvePromise, - resolve: jest.fn(), - })); - - ProcessCredentialsMock.mockImplementation(() => ({ - accessKeyId: 'testAccessKey', - secretAccessKey: 'testSecret', - sessionToken: 'testSessionToken', - expireTime: new Date(1234), - expired: false, - get: jest.fn(), - getPromise: jest.fn(), - needsRefresh: jest.fn(), - refresh: jest.fn(), - refreshPromise: jest.fn(), - })); + fromProcessMock.mockReturnValue(mockCredentialProvider); }); it('should use credential_process defined in config file', async () => { @@ -73,24 +55,29 @@ describe('profile tests', () => { // expect expect(profile_config).toBeDefined(); - expect(mockResolvePromise).toBeCalled(); + expect(fromProcessMock).toHaveBeenCalledWith({ profile: 'fake' }); + expect(mockCredentialProvider).toHaveBeenCalled(); expect(profile_config.accessKeyId).toBe('chainTestAccessKey'); expect(profile_config.secretAccessKey).toBe('chainTestSecret'); expect(profile_config.sessionToken).toBe('chainTestSessionToken'); expect(profile_config.expiration).toEqual(new Date(1234)); }); - it('sets AWS_SDK_LOAD_CONFIG while ProcessCredentials executes', async () => { + it('sets AWS_SDK_LOAD_CONFIG while credential provider executes', async () => { const sdkLoadConfigOriginal = process.env.AWS_SDK_LOAD_CONFIG; - mockResolvePromise.mockImplementationOnce(() => { + mockCredentialProvider.mockImplementationOnce(() => { expect(process.env.AWS_SDK_LOAD_CONFIG).toBeTruthy(); - return Promise.resolve({ accessKeyId: 'chainTestAccessKey', + secretAccessKey: 'chainTestSecret', + sessionToken: 'chainTestSessionToken', + expiration: new Date(1234), }); }); + await getProfiledAwsConfig(context_stub, 'fake'); - expect(mockResolvePromise).toBeCalled(); + expect(fromProcessMock).toHaveBeenCalledWith({ profile: 'fake' }); + expect(mockCredentialProvider).toHaveBeenCalled(); expect(process.env.AWS_SDK_LOAD_CONFIG).toStrictEqual(sdkLoadConfigOriginal); }); }); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts index e666dbef667..02b14a049d1 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/DynamoDBService.ts @@ -1,5 +1,4 @@ import { $TSAny, $TSContext } from '@aws-amplify/amplify-cli-core'; -import { NodeHttpHandler } from '@smithy/node-http-handler'; import { IDynamoDBService } from '@aws-amplify/amplify-util-import'; import { DynamoDBClient, diff --git a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts index ea0dc81025c..68730225a61 100644 --- a/packages/amplify-provider-awscloudformation/src/system-config-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/system-config-manager.ts @@ -1,6 +1,6 @@ import { $TSAny, $TSContext, AmplifyError, JSONUtilities, pathManager, SecretFileMode, spinner } from '@aws-amplify/amplify-cli-core'; -import { STSClient, AssumeRoleCommand, AssumeRoleCommandInput, Credentials as STSCredentials } from '@aws-sdk/client-sts'; +import { STSClient, AssumeRoleCommand, AssumeRoleCommandInput } from '@aws-sdk/client-sts'; import { fromProcess } from '@aws-sdk/credential-providers'; import { NodeHttpHandler } from '@smithy/node-http-handler'; import * as fs from 'fs-extra'; From ba3238dd5dbf153b03604cce7f4c6536362a656b Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 17 Jul 2025 13:18:45 -0700 Subject: [PATCH 07/13] refactor: most of provider-awscloudformation --- .../package.json | 7 + .../src/amplify-service-manager.ts | 52 +- .../src/amplify-service-migrate.ts | 24 +- .../src/amplify-service-permission-check.js | 5 +- .../src/attach-backend.ts | 45 +- .../src/aws-utils/S3Service.ts | 4 +- .../src/aws-utils/aws-amplify.js | 14 +- .../src/aws-utils/aws-appsync.js | 12 +- .../src/aws-utils/aws-cfn.js | 410 +++++------ .../src/aws-utils/aws-dynamodb.js | 12 +- .../src/aws-utils/aws-iam.ts | 18 +- .../src/aws-utils/aws-lambda.ts | 45 +- .../src/aws-utils/aws-lex.js | 13 +- .../src/aws-utils/aws-polly.js | 12 +- .../src/aws-utils/aws-route53.js | 14 +- .../src/aws-utils/aws-s3.ts | 114 +-- .../src/aws-utils/aws-sagemaker.js | 13 +- .../src/aws-utils/aws-secretsmanager.js | 14 +- .../src/aws-utils/aws-sns.ts | 16 +- .../src/aws-utils/aws-ssm.ts | 15 +- .../src/aws-utils/aws-sts.ts | 20 +- .../src/cloud-formation-error-handler.ts | 2 +- .../src/configuration-manager.ts | 6 +- .../disconnect-dependent-resources/index.ts | 4 +- .../disconnect-dependent-resources/utils.ts | 12 +- .../src/display-helpful-urls.ts | 8 +- .../amplify-graphql-resource-manager.ts | 16 +- .../src/initialize-env.ts | 2 +- .../deployment-manager.ts | 67 +- .../stack-event-monitor.ts | 16 +- .../src/iterative-deployment/state-machine.ts | 3 +- .../permissions-boundary.ts | 3 +- .../src/push-resources.ts | 2 +- .../src/utils/admin-helpers.ts | 55 +- .../src/utils/admin-login-server.ts | 12 +- .../src/utils/amplify-resource-state-utils.ts | 36 +- .../utils/ssm-utils/delete-ssm-parameters.ts | 12 +- .../ssm-utils/env-parameter-ssm-helpers.ts | 23 +- .../utils/ssm-utils/exp-backoff-executor.ts | 2 +- yarn.lock | 665 +++++++++++++++++- 40 files changed, 1265 insertions(+), 560 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 8b3d454c1e4..2e3276780c5 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -37,7 +37,9 @@ "@aws-amplify/cli-extensibility-helper": "3.0.39", "@aws-amplify/graphql-transformer-core": "^2.11.1", "@aws-amplify/graphql-transformer-interfaces": "^3.12.0", + "@aws-sdk/client-amplify": "^3.624.0", "@aws-sdk/client-api-gateway": "^3.624.0", + "@aws-sdk/client-appsync": "^3.624.0", "@aws-sdk/client-cloudformation": "^3.624.0", "@aws-sdk/client-cognito-identity": "^3.624.0", "@aws-sdk/client-cognito-identity-provider": "^3.624.0", @@ -46,12 +48,17 @@ "@aws-sdk/client-iam": "^3.624.0", "@aws-sdk/client-lambda": "^3.624.0", "@aws-sdk/client-location": "^3.624.0", + "@aws-sdk/client-polly": "^3.624.0", + "@aws-sdk/client-route-53": "^3.624.0", "@aws-sdk/client-s3": "^3.624.0", + "@aws-sdk/client-secrets-manager": "^3.624.0", + "@aws-sdk/client-sns": "^3.624.0", "@aws-sdk/client-ssm": "^3.624.0", "@aws-sdk/client-sts": "^3.624.0", "@aws-sdk/credential-provider-node": "^3.624.0", "@aws-sdk/credential-providers": "^3.624.0", "@aws-sdk/lib-dynamodb": "^3.624.0", + "@aws-sdk/lib-storage": "^3.624.0", "@aws-sdk/s3-request-presigner": "^3.624.0", "@aws-sdk/types": "^3.624.0", "@smithy/node-http-handler": "^4.1.0", diff --git a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts index 417af98d110..21ee7436fdc 100644 --- a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts @@ -9,6 +9,14 @@ import { checkAmplifyServiceIAMPermission } from './amplify-service-permission-c import { $TSContext, stateManager, AmplifyFault, AmplifyError } from '@aws-amplify/amplify-cli-core'; import { fileLogger } from './utils/aws-logger'; import { loadConfigurationForEnv } from './configuration-manager'; +import { + CreateAppCommand, + CreateBackendEnvironmentCommand, + DeleteBackendEnvironmentCommand, + GetAppCommand, + GetBackendEnvironmentCommand, + ListAppsCommand, +} from '@aws-sdk/client-amplify'; const logger = fileLogger('amplify-service-manager'); @@ -47,11 +55,7 @@ export async function init(amplifyServiceParams) { ])(); try { - const getAppResult = await amplifyClient - .getApp({ - appId: inputAmplifyAppId, - }) - .promise(); + const getAppResult = await amplifyClient.send(new GetAppCommand({ appId: inputAmplifyAppId })); context.print.info(`Amplify AppID found: ${inputAmplifyAppId}. Amplify App name is: ${getAppResult.app.name}`); amplifyAppId = inputAmplifyAppId; } catch (e) { @@ -95,12 +99,12 @@ export async function init(amplifyServiceParams) { maxResults: 25, }, ])(); - listAppsResponse = await amplifyClient - .listApps({ + listAppsResponse = await amplifyClient.send( + new ListAppsCommand({ nextToken: listAppsResponse.nextToken, maxResults: 25, - }) - .promise(); + }), + ); apps = apps.concat(listAppsResponse.apps); } while (listAppsResponse.nextToken); @@ -126,11 +130,11 @@ export async function init(amplifyServiceParams) { logger('init.amplifyClient.createApp', [createAppParams])(); try { if (amplifyAppCreationEnabled()) { - const createAppResponse = await amplifyClient.createApp(createAppParams).promise(); + const createAppResponse = await amplifyClient.send(new CreateAppCommand(createAppParams)); amplifyAppId = createAppResponse.app.appId; } } catch (e) { - if (e.code === 'LimitExceededException') { + if (e.name === 'LimitExceededException') { throw new AmplifyError( 'ProjectInitError', { @@ -141,9 +145,9 @@ export async function init(amplifyServiceParams) { e, ); } - if (context?.exeInfo?.awsConfigInfo?.configLevel === 'general' && e.code === 'ConfigError') { + if (context?.exeInfo?.awsConfigInfo?.configLevel === 'general' && e.name === 'ConfigError') { throw new AmplifyError('ConfigurationError', { - code: e.code, + code: e.name, message: e.message, resolution: 'https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html', }); @@ -177,12 +181,12 @@ export async function init(amplifyServiceParams) { try { log(); - const { backendEnvironment } = await amplifyClient - .getBackendEnvironment({ + const { backendEnvironment } = await amplifyClient.send( + new GetBackendEnvironmentCommand({ appId: amplifyAppId, environmentName: envName, - }) - .promise(); + }), + ); if (backendEnvironment) { verifiedStackName = backendEnvironment.stackName; @@ -204,7 +208,7 @@ export async function init(amplifyServiceParams) { deploymentArtifacts: deploymentBucketName, }; logger('init.amplifyClient.getBackendEnvironment', [createEnvParams])(); - await amplifyClient.createBackendEnvironment(createEnvParams).promise(); + await amplifyClient.send(new CreateBackendEnvironmentCommand(createEnvParams)); } return { @@ -241,9 +245,9 @@ export async function deleteEnv(context: $TSContext, envName: string, awsConfigI }; logger('deleteEnv.amplifyClient.deleteBackendEnvironment', [deleteEnvParams])(); try { - await amplifyClient.deleteBackendEnvironment(deleteEnvParams).promise(); + await amplifyClient.send(new DeleteBackendEnvironmentCommand(deleteEnvParams)); } catch (ex) { - if (ex.code === 'NotFoundException') { + if (ex.name === 'NotFoundException') { context.print.warning(ex.message); } else { throw new AmplifyFault( @@ -325,14 +329,14 @@ export async function postPushCheck(context) { logger('postPushCheck.amplifyClient.createApp', [createAppParams])(); try { if (amplifyAppCreationEnabled()) { - const createAppResponse = await amplifyClient.createApp(createAppParams).promise(); + const createAppResponse = await amplifyClient.send(new CreateAppCommand(createAppParams)); amplifyAppId = createAppResponse.app.appId; } } catch (e) { - if (e.code === 'LimitExceededException') { + if (e.name === 'LimitExceededException') { // Do nothing } else if ( - e.code === 'BadRequestException' && + e.name === 'BadRequestException' && e.message.includes('Rate exceeded while calling CreateApp, please slow down or try again later.') ) { // Do nothing @@ -359,7 +363,7 @@ export async function postPushCheck(context) { deploymentArtifacts: teamProviderInfo[envName][ProviderName].DeploymentBucketName, }; logger('postPushCheck.amplifyClient.createBackendEnvironment', [createEnvParams])(); - await amplifyClient.createBackendEnvironment(createEnvParams).promise(); + await amplifyClient.send(new CreateBackendEnvironmentCommand(createEnvParams)); } providerMeta[AmplifyAppIdLabel] = amplifyAppId; diff --git a/packages/amplify-provider-awscloudformation/src/amplify-service-migrate.ts b/packages/amplify-provider-awscloudformation/src/amplify-service-migrate.ts index 90f4a50a69c..6c33858a0cd 100644 --- a/packages/amplify-provider-awscloudformation/src/amplify-service-migrate.ts +++ b/packages/amplify-provider-awscloudformation/src/amplify-service-migrate.ts @@ -6,6 +6,12 @@ import { checkAmplifyServiceIAMPermission } from './amplify-service-permission-c import constants from './constants'; import { fileLogger } from './utils/aws-logger'; import { storeCurrentCloudBackend } from './utils/upload-current-cloud-backend'; +import { + CreateBackendEnvironmentCommand, + GetAppCommand, + GetBackendEnvironmentCommand, + ListBackendEnvironmentsCommand, +} from '@aws-sdk/client-amplify'; const logger = fileLogger('amplify-service-migrate'); @@ -67,11 +73,7 @@ export const run = async (context): Promise => { }, ])(); try { - const getAppResult = await amplifyClient - .getApp({ - appId: amplifyAppId, - }) - .promise(); + const getAppResult = await amplifyClient.send(new GetAppCommand({ appId: amplifyAppId })); context.print.info(`Amplify AppID found: ${amplifyAppId}. Amplify App name is: ${getAppResult.app.name}`); } catch (e) { throw new AmplifyError( @@ -93,12 +95,12 @@ export const run = async (context): Promise => { nextToken: listEnvResponse.nextToken, }, ])(); - listEnvResponse = await amplifyClient - .listBackendEnvironments({ + listEnvResponse = await amplifyClient.send( + new ListBackendEnvironmentsCommand({ appId: amplifyAppId, nextToken: listEnvResponse.nextToken, - }) - .promise(); + }), + ); backendEnvs = backendEnvs.concat(listEnvResponse.backendEnvironments); } while (listEnvResponse.nextToken); @@ -115,7 +117,7 @@ export const run = async (context): Promise => { const log = logger('run.amplifyClient.createBackendEnvironment', [createEnvParams]); log(); try { - await amplifyClient.createBackendEnvironment(createEnvParams).promise(); + await amplifyClient.send(new CreateBackendEnvironmentCommand(createEnvParams)); } catch (ex) { log(ex); } @@ -126,7 +128,7 @@ export const run = async (context): Promise => { environmentName: envName, }; logger('run.amplifyClient.getBackendEnvironment', [getEnvParams])(); - const { backendEnvironment } = await amplifyClient.getBackendEnvironment(getEnvParams).promise(); + const { backendEnvironment } = await amplifyClient.send(new GetBackendEnvironmentCommand(getEnvParams)); if (StackName !== backendEnvironment.stackName) { throw new AmplifyError('InvalidStackError', { message: `Stack name mismatch for the backend environment ${envName}. Local: ${StackName}, Amplify: ${backendEnvironment.stackName}`, diff --git a/packages/amplify-provider-awscloudformation/src/amplify-service-permission-check.js b/packages/amplify-provider-awscloudformation/src/amplify-service-permission-check.js index ffbddfe6719..074e8647f47 100644 --- a/packages/amplify-provider-awscloudformation/src/amplify-service-permission-check.js +++ b/packages/amplify-provider-awscloudformation/src/amplify-service-permission-check.js @@ -1,5 +1,6 @@ const { printAuthErrorMessage } = require('./aws-utils/aws-amplify'); const { fileLogger } = require('./utils/aws-logger'); +const { ListAppsCommand } = require('@aws-sdk/client-amplify'); const logger = fileLogger('amplify-service-permission-check'); async function checkAmplifyServiceIAMPermission(context, amplifyClient) { @@ -8,10 +9,10 @@ async function checkAmplifyServiceIAMPermission(context, amplifyClient) { try { log(); - await amplifyClient.listApps().promise(); + await amplifyClient.send(new ListAppsCommand({})); } catch (e) { log(e); - if (e.code === 'UnauthorizedException') { + if (e.name === 'UnauthorizedException') { printAuthErrorMessage(context); hasAmplifyServicePermission = false; } diff --git a/packages/amplify-provider-awscloudformation/src/attach-backend.ts b/packages/amplify-provider-awscloudformation/src/attach-backend.ts index 2cd911fcf3a..79ccb76ed8b 100644 --- a/packages/amplify-provider-awscloudformation/src/attach-backend.ts +++ b/packages/amplify-provider-awscloudformation/src/attach-backend.ts @@ -1,4 +1,3 @@ -import S3 from 'aws-sdk/clients/s3'; import fs from 'fs-extra'; import path from 'path'; import { globSync } from 'glob'; @@ -13,6 +12,8 @@ import { isAmplifyAdminApp } from './utils/admin-helpers'; import { resolveAppId } from './utils/resolve-appId'; import { adminLoginFlow } from './admin-login'; import { fileLogger } from './utils/aws-logger'; +import { GetObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; +import { GetAppCommand, ListAppsCommand, GetBackendEnvironmentCommand, ListBackendEnvironmentsCommand } from '@aws-sdk/client-amplify'; const logger = fileLogger('attach-backend'); @@ -118,7 +119,7 @@ async function ensureAmplifyMeta(context, amplifyApp, awsConfigInfo) { async function storeArtifactsForAmplifyService(context, awsConfigInfo, deploymentBucketName) { const projectPath = process.cwd(); - const s3Client = new S3(awsConfigInfo); + const s3Client = new S3Client(awsConfigInfo); const amplifyMetaFilePath = context.amplify.pathManager.getCurrentAmplifyMetaFilePath(projectPath); const backendConfigFilePath = context.amplify.pathManager.getCurrentBackendConfigFilePath(projectPath); await uploadFile(s3Client, deploymentBucketName, amplifyMetaFilePath); @@ -137,7 +138,7 @@ async function uploadFile(s3Client, bucketName, filePath) { Body: body, }; logger('uploadFile.s3.uploadFile', [{ Key: key, Bucket: bucketName }])(); - await s3Client.putObject(s3Params).promise(); + await s3Client.send(new PutObjectCommand(s3Params)); } async function getAmplifyApp(context, amplifyClient) { @@ -151,11 +152,11 @@ async function getAmplifyApp(context, amplifyClient) { }, ])(); try { - const getAppResult = await amplifyClient - .getApp({ + const getAppResult = await amplifyClient.send( + new GetAppCommand({ appId: inputAmplifyAppId, - }) - .promise(); + }), + ); context.print.info(`Amplify AppID found: ${inputAmplifyAppId}. Amplify App name is: ${getAppResult.app.name}`); return getAppResult.app; } catch (e) { @@ -185,12 +186,12 @@ async function getAmplifyApp(context, amplifyClient) { }, ])(); - listAppsResponse = await amplifyClient - .listApps({ + listAppsResponse = await amplifyClient.send( + new ListAppsCommand({ nextToken: listAppsResponse.nextToken, maxResults: 25, - }) - .promise(); + }), + ); apps = apps.concat(listAppsResponse.apps); } while (listAppsResponse.nextToken); @@ -233,12 +234,12 @@ async function getBackendEnv(context, amplifyClient, amplifyApp) { }, ])(); try { - const getBackendEnvironmentResult = await amplifyClient - .getBackendEnvironment({ + const getBackendEnvironmentResult = await amplifyClient.send( + new GetBackendEnvironmentCommand({ appId: amplifyApp.appId, environmentName: inputEnvName, - }) - .promise(); + }), + ); context.print.info(`Backend environment ${inputEnvName} found in Amplify Console app: ${amplifyApp.name}`); return getBackendEnvironmentResult.backendEnvironment; } catch (e) { @@ -263,12 +264,12 @@ async function getBackendEnv(context, amplifyClient, amplifyApp) { nextToken: listEnvResponse.nextToken, }, ])(); - listEnvResponse = await amplifyClient - .listBackendEnvironments({ + listEnvResponse = await amplifyClient.send( + new ListBackendEnvironmentsCommand({ appId: amplifyApp.appId, nextToken: listEnvResponse.nextToken, - }) - .promise(); + }), + ); backendEnvs = backendEnvs.concat(listEnvResponse.backendEnvironments); } while (listEnvResponse.nextToken); @@ -313,7 +314,7 @@ async function downloadBackend(context, backendEnv, awsConfigInfo) { const backendDir = context.amplify.pathManager.getBackendDirPath(projectPath); const zipFileName = constants.S3BackendZipFileName; - const s3Client = new S3(awsConfigInfo); + const s3Client = new S3Client(awsConfigInfo); const deploymentBucketName = backendEnv.deploymentArtifacts; const params = { @@ -325,7 +326,7 @@ async function downloadBackend(context, backendEnv, awsConfigInfo) { let zipObject = null; try { log(); - zipObject = await s3Client.getObject(params).promise(); + zipObject = await s3Client.send(new GetObjectCommand(params)); } catch (err) { log(err); context.print.error(`Error downloading ${zipFileName} from deployment bucket: ${deploymentBucketName}, the error is: ${err.message}`); @@ -340,7 +341,7 @@ async function downloadBackend(context, backendEnv, awsConfigInfo) { try { const tempFilePath = path.join(tempDirPath, zipFileName); - fs.writeFileSync(tempFilePath, buff); + fs.writeFileSync(tempFilePath, buff.toString()); const unzippedDirPath = path.join(tempDirPath, path.basename(zipFileName, '.zip')); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts index bd9721ce6a9..050cc50214e 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/S3Service.ts @@ -75,8 +75,8 @@ export class S3Service implements IS3Service { } } -const handleS3Error = (error: { code: string; message: string }): boolean => { - if (error.code === 'NotFound') { +const handleS3Error = (error: { name: string; message: string }): boolean => { + if (error.name === 'NotFound') { return false; } throw new AmplifyFault( diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-amplify.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-amplify.js index 50f6d5c626c..c4c06233450 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-amplify.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-amplify.js @@ -1,4 +1,5 @@ -const aws = require('aws-sdk'); +const { AmplifyClient } = require('@aws-sdk/client-amplify'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { regions: amplifyServiceRegions } = require('../aws-regions'); const { proxyAgent } = require('./aws-globals'); @@ -24,20 +25,21 @@ async function getConfiguredAmplifyClient(context, options = {}) { ...cred, ...defaultOptions, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }; // this is the "project" config level case, creds and region are explicitly set or retrieved from a profile if (config.region) { if (amplifyServiceRegions.includes(config.region)) { - return new aws.Amplify(config); + return new AmplifyClient(config); } return undefined; } // this is the "general" config level case, aws sdk will resolve creds and region from env variables etc. - return new aws.Amplify(config); + return new AmplifyClient(config); } function printAuthErrorMessage(context) { diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-appsync.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-appsync.js index 44be1b9c3bf..66ba526a812 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-appsync.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-appsync.js @@ -1,4 +1,5 @@ -const aws = require('./aws.js'); +const { AppSyncClient } = require('@aws-sdk/client-appsync'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -13,12 +14,13 @@ class AppSync { } this.context = context; - this.appSync = new aws.AppSync({ + this.appSync = new AppSyncClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })(); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js index 7dedd13908b..5a485151d4b 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js @@ -7,7 +7,23 @@ const BottleNeck = require('bottleneck'); const chalk = require('chalk'); const columnify = require('columnify'); -const aws = require('./aws'); +// AWS SDK v3 imports +const { + CloudFormationClient, + CreateStackCommand, + UpdateStackCommand, + DeleteStackCommand, + DescribeStacksCommand, + ListStacksCommand, + ListStackResourcesCommand, + ListExportsCommand, + DescribeStackEventsCommand, + waitUntilStackCreateComplete, + waitUntilStackUpdateComplete, + waitUntilStackDeleteComplete, +} = require('@aws-sdk/client-cloudformation'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); + const { S3 } = require('./aws-s3'); const providerName = require('../constants').ProviderName; const { formUserAgentParam } = require('./user-agent'); @@ -56,14 +72,16 @@ class CloudFormation { userAgentOption.customUserAgent = userAgentParam; } - this.cfn = new aws.CloudFormation({ + this.cfn = new CloudFormationClient({ ...cred, ...options, ...userAgentOption, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); + this.context = context; if (Object.keys(eventMap).length) { this.eventMap = eventMap; @@ -76,44 +94,48 @@ class CloudFormation { createResourceStack(cfnParentStackParams) { const cfnModel = this.cfn; const { context } = this; - const cfnCompleteStatus = 'stackCreateComplete'; const cfnStackCheckParams = { StackName: cfnParentStackParams.StackName, }; const self = this; self.eventStartTime = new Date(); - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { logger('cfnModel.createStack', [cfnParentStackParams])(); - cfnModel.createStack(cfnParentStackParams, (createErr) => { + try { + await cfnModel.send(new CreateStackCommand(cfnParentStackParams)); this.readStackEvents(cfnParentStackParams.StackName); + } catch (createErr) { logger('cfnModel.createStack', [cfnParentStackParams])(createErr); - if (createErr) { - context.print.error('\nAn error occurred when creating the CloudFormation stack'); - reject(createErr); + context.print.error('\nAn error occurred when creating the CloudFormation stack'); + return reject(createErr); + } + try { + const waitResult = await waitUntilStackCreateComplete({ client: cfnModel, maxWaitTime: 300 }, cfnStackCheckParams); + + if (self.pollForEvents) { + clearTimeout(self.pollForEvents); } - cfnModel.waitFor(cfnCompleteStatus, cfnStackCheckParams, async (completeErr, waitForStackdata) => { - if (self.pollForEvents) { - clearTimeout(self.pollForEvents); - } - this.progressBar?.stop(); + this.progressBar?.stop(); + resolve(waitResult.state); + } catch (completeErr) { + if (self.pollForEvents) { + clearTimeout(self.pollForEvents); + } - if (completeErr) { - context.print.error('\nAn error occurred when creating the CloudFormation stack'); - const errorDetails = await this.collectStackErrors(cfnParentStackParams.StackName); - logger('cfnModel.createStack', [cfnParentStackParams])(completeErr); - const error = new AmplifyFault( - 'DeploymentFault', - { message: 'Initialization of project failed', details: errorDetails }, - completeErr, - ); - error.stack = null; - reject(error); - } - resolve(waitForStackdata); - }); - }); + this.progressBar?.stop(); + context.print.error('\nAn error occurred when creating the CloudFormation stack'); + const errorDetails = await this.collectStackErrors(cfnParentStackParams.StackName); + logger('cfnModel.createStack', [cfnParentStackParams])(completeErr); + const error = new AmplifyFault( + 'DeploymentFault', + { message: 'Initialization of project failed', details: errorDetails }, + completeErr, + ); + error.stack = null; + reject(error); + } }); } @@ -302,38 +324,31 @@ class CloudFormation { } } - getStackEvents(stackName) { + async getStackEvents(stackName) { const self = this; const describeStackEventsArgs = { StackName: stackName }; const log = logger('getStackEvents.cfnModel.describeStackEvents', [describeStackEventsArgs]); log(); - return this.cfn - .describeStackEvents({ StackName: stackName }) - .promise() - .then((data) => { - let events = data.StackEvents; - events = events.filter((event) => self.eventStartTime < new Date(event.Timestamp)); - return Promise.resolve(events); - }) - .catch((e) => { - log(e); - if (e && e.code === 'Throttling') { - return Promise.resolve([]); - } - return Promise.reject(e); - }); + try { + const data = await this.cfn.send(new DescribeStackEventsCommand({ StackName: stackName })); + let events = data.StackEvents; + events = events.filter((event) => self.eventStartTime < new Date(event.Timestamp)); + return events; + } catch (e) { + log(e); + if (e && e.name === 'Throttling') { + return []; + } + throw e; + } } - getStackParameters(stackName) { - return this.cfn - .describeStack({ StackName: stackName }) - .promise() - .then((data) => { - return data.Parameters; - }); + async getStackParameters(stackName) { + const data = await this.cfn.send(new DescribeStacksCommand({ StackName: stackName })); + return data.Stacks[0].Parameters; } - updateResourceStack(filePath) { + async updateResourceStack(filePath) { try { const backEndDir = pathManager.getBackendDirPath(pathManager.findProjectRoot()); const providerDirectory = path.normalize(path.join(backEndDir, providerName)); @@ -365,91 +380,90 @@ class CloudFormation { }); } - return S3.getInstance(this.context) - .then((s3) => { - const s3Params = { - Body: fs.createReadStream(filePath), - Key: cfnFile, - }; - logger('updateResourceStack.s3.uploadFile', [{ Key: s3Params.cfnFile }])(); - return s3.uploadFile(s3Params, false); - }) - .then((bucketName) => { - const templateURL = `https://s3.amazonaws.com/${bucketName}/${cfnFile}`; - const cfnStackCheckParams = { - StackName: stackName, - }; - const cfnModel = this.cfn; - const { context } = this; - const self = this; - this.eventStartTime = new Date(); - return new Promise((resolve, reject) => { - logger('updateResourceStack.describeStack', [cfnStackCheckParams])(); - this.describeStack(cfnStackCheckParams) - .then(() => { - const cfnParentStackParams = { - StackName: stackName, - TemplateURL: templateURL, - Capabilities: ['CAPABILITY_NAMED_IAM', 'CAPABILITY_AUTO_EXPAND'], - Parameters: [ - { - ParameterKey: 'DeploymentBucketName', - ParameterValue: deploymentBucketName, - }, - { - ParameterKey: 'AuthRoleName', - ParameterValue: authRoleName, - }, - { - ParameterKey: 'UnauthRoleName', - ParameterValue: unauthRoleName, - }, - ], - Tags, - }; - logger('updateResourceStack.updateStack', [cfnStackCheckParams])(); - cfnModel.updateStack(cfnParentStackParams, (updateErr) => { - self.readStackEvents(stackName); - - const cfnCompleteStatus = 'stackUpdateComplete'; - if (updateErr) { - if (self.pollForEvents) { - clearTimeout(self.pollForEvents); - } - return reject(updateErr); - } - cfnModel.waitFor(cfnCompleteStatus, cfnStackCheckParams, async (completeErr) => { - if (self.pollForEvents) { - clearTimeout(self.pollForEvents); - } - this.progressBar?.stop(); - - if (completeErr) { - await this.collectStackErrors(cfnParentStackParams.StackName).then((errorDetails) => { - completeErr.details = errorDetails; - reject(completeErr); - }); - } else { - self.context.usageData.calculatePushNormalizationFactor(this.stackEvents, stackId); - await self.updateamplifyMetaFileWithStackOutputs(stackName); - return resolve(); - } - }); - }); - }) - .catch((err) => { - reject(new Error("Project stack doesn't exist")); - context.print.info(err.stack); - }); - }); - }); + const s3 = await S3.getInstance(this.context); + const s3Params = { + Body: fs.createReadStream(filePath), + Key: cfnFile, + }; + logger('updateResourceStack.s3.uploadFile', [{ Key: s3Params.cfnFile }])(); + const bucketName = await s3.uploadFile(s3Params, false); + + const templateURL = `https://s3.amazonaws.com/${bucketName}/${cfnFile}`; + const cfnStackCheckParams = { + StackName: stackName, + }; + const cfnModel = this.cfn; + const { context } = this; + const self = this; + this.eventStartTime = new Date(); + + try { + logger('updateResourceStack.describeStack', [cfnStackCheckParams])(); + await this.describeStack(cfnStackCheckParams); + + const cfnParentStackParams = { + StackName: stackName, + TemplateURL: templateURL, + Capabilities: ['CAPABILITY_NAMED_IAM', 'CAPABILITY_AUTO_EXPAND'], + Parameters: [ + { + ParameterKey: 'DeploymentBucketName', + ParameterValue: deploymentBucketName, + }, + { + ParameterKey: 'AuthRoleName', + ParameterValue: authRoleName, + }, + { + ParameterKey: 'UnauthRoleName', + ParameterValue: unauthRoleName, + }, + ], + Tags, + }; + + logger('updateResourceStack.updateStack', [cfnStackCheckParams])(); + try { + await cfnModel.send(new UpdateStackCommand(cfnParentStackParams)); + self.readStackEvents(stackName); + + await waitUntilStackUpdateComplete({ client: cfnModel, maxWaitTime: 300 }, cfnStackCheckParams); + + if (self.pollForEvents) { + clearTimeout(self.pollForEvents); + } + this.progressBar?.stop(); + + self.context.usageData.calculatePushNormalizationFactor(this.stackEvents, stackId); + await self.updateamplifyMetaFileWithStackOutputs(stackName); + } catch (updateErr) { + if (self.pollForEvents) { + clearTimeout(self.pollForEvents); + } + throw updateErr; + } + } catch (err) { + if (err.message.includes('No updates are to be performed')) { + // This is not a real error, the stack is already up to date + return; + } + + this.progressBar?.stop(); + + if (err.name !== 'ValidationError') { + const errorDetails = await this.collectStackErrors(stackName); + err.details = errorDetails; + } + + throw err; + } } catch (error) { this.progressBar?.stop(); throw new AmplifyFault( 'ResourceNotReadyFault', { message: error.message, - code: error.code, + code: error.name, }, error, ); @@ -457,12 +471,13 @@ class CloudFormation { } async listStacks(nextToken = null, stackStatusFilter) { - return await this.cfn - .listStacks({ + const result = await this.cfn.send( + new ListStacksCommand({ NextToken: nextToken, StackStatusFilter: stackStatusFilter, - }) - .promise(); + }), + ); + return result; } async updateamplifyMetaFileWithStackOutputs(parentStackName) { @@ -475,7 +490,7 @@ class CloudFormation { const stackSummaries = await pagedAWSCall( async (params, nextToken) => { - return await this.cfn.listStackResources({ ...params, NextToken: nextToken }).promise(); + return await this.cfn.send(new ListStackResourcesCommand({ ...params, NextToken: nextToken })); }, { StackName: parentStackName, @@ -581,43 +596,37 @@ class CloudFormation { } } - listExports(nextToken = null) { + async listExports(nextToken = null) { const log = logger('listExports.cfn.listExports', [{ NextToken: nextToken }]); - return new Promise((resolve, reject) => { - log(); - this.cfn.listExports(nextToken ? { NextToken: nextToken } : {}, async (err, data) => { - if (err) { - log(err); - reject(err); - } else if (data.NextToken) { - await this.listExports(data.NextToken).then((innerExports) => resolve([...data.Exports, ...innerExports])); - } else { - resolve(data.Exports); - } - }); - }); + log(); + try { + const data = await this.cfn.send(new ListExportsCommand(nextToken ? { NextToken: nextToken } : {})); + if (data.NextToken) { + const innerExports = await this.listExports(data.NextToken); + return [...data.Exports, ...innerExports]; + } + return data.Exports; + } catch (err) { + log(err); + throw err; + } } - describeStack(cfnNestedStackParams, maxTry = 10, timeout = CFN_POLL_TIME) { + async describeStack(cfnNestedStackParams, maxTry = 10, timeout = CFN_POLL_TIME) { const cfnModel = this.cfn; const log = logger('describeStack.cfn.describeStacks', [cfnNestedStackParams]); - return new Promise((resolve, reject) => { + try { log(); - cfnModel - .describeStacks(cfnNestedStackParams) - .promise() - .then((result) => resolve(result)) - .catch((e) => { - log(e); - if (e.code === 'Throttling' && e.retryable) { - setTimeout(() => { - resolve(this.describeStack(cfnNestedStackParams, maxTry - 1, timeout)); - }, timeout); - } else { - reject(e); - } - }); - }); + const result = await cfnModel.send(new DescribeStacksCommand(cfnNestedStackParams)); + return result; + } catch (e) { + log(e); + if (e.name === 'Throttling' && e.retryable && maxTry > 0) { + await new Promise((resolve) => setTimeout(resolve, timeout)); + return this.describeStack(cfnNestedStackParams, maxTry - 1, timeout); + } + throw e; + } } async listStackResources(stackId) { @@ -629,10 +638,11 @@ class CloudFormation { }); } // StackName param can be a StackName, StackId, or a PhysicalResourceId - return this.cfn.listStackResources({ StackName: stackId }).promise(); + const result = await this.cfn.send(new ListStackResourcesCommand({ StackName: stackId })); + return result; } - deleteResourceStack(envName) { + async deleteResourceStack(envName) { const teamProviderInfo = stateManager.getTeamProviderInfo(); const providerInfo = teamProviderInfo?.[envName]?.[providerName]; const stackName = providerInfo?.StackName; @@ -649,41 +659,35 @@ class CloudFormation { const cfnModel = this.cfn; const log = logger('deleteResourceStack.cfn.describeStacks', [cfnStackParams]); - return new Promise((resolve, reject) => { + try { log(); - cfnModel.describeStacks(cfnStackParams, (err, data) => { - const cfnDeleteStatus = 'stackDeleteComplete'; - if ( - (err && err.statusCode === 400 && err.message.includes(`${stackName} does not exist`)) || - data.StackStatus === 'DELETE_COMPLETE' - ) { + try { + const data = await cfnModel.send(new DescribeStacksCommand(cfnStackParams)); + if (data.Stacks[0].StackStatus === 'DELETE_COMPLETE') { this.context.print.warning('Stack has already been deleted or does not exist'); - resolve(); + return; } - if (err === null) { - cfnModel.deleteStack(cfnStackParams, (deleteErr) => { - if (deleteErr) { - console.log(`Error deleting stack ${stackName}`); - return reject(deleteErr); - } - cfnModel.waitFor(cfnDeleteStatus, cfnStackParams, async (completeErr) => { - if (err) { - console.log(`Error deleting stack ${stackName}`); - await this.collectStackErrors(stackName).then((errorDetails) => { - completeErr.details = errorDetails; - reject(completeErr); - }); - } else { - resolve(); - } - }); - }); - } else { - log(err); - reject(err); + } catch (err) { + if (err.statusCode === 400 && err.message.includes(`${stackName} does not exist`)) { + this.context.print.warning('Stack has already been deleted or does not exist'); + return; } - }); - }); + throw err; + } + + try { + await cfnModel.send(new DeleteStackCommand(cfnStackParams)); + await waitUntilStackDeleteComplete({ client: cfnModel, maxWaitTime: 300 }, cfnStackParams); + } catch (completeErr) { + console.log(`Error deleting stack ${stackName}`); + const errorDetails = await this.collectStackErrors(stackName); + completeErr.details = errorDetails; + throw completeErr; + } + } catch (err) { + log(err); + throw err; + } } } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-dynamodb.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-dynamodb.js index f6c990129f7..3a77bf595a7 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-dynamodb.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-dynamodb.js @@ -1,4 +1,5 @@ -const aws = require('./aws.js'); +const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -13,12 +14,13 @@ class DynamoDB { } this.context = context; - this.dynamodb = new aws.DynamoDB({ + this.dynamodb = new DynamoDBClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })(); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-iam.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-iam.ts index 1088d916fc9..e76ce3b09c2 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-iam.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-iam.ts @@ -1,6 +1,5 @@ -import aws from './aws.js'; -import awstype from 'aws-sdk'; -import { IAM } from 'aws-sdk'; +import { IAMClient as IAM, IAMClientConfig } from '@aws-sdk/client-iam'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { AwsSdkConfig } from '../utils/auth-types.js'; import { getAwsConfig } from '../configuration-manager'; import { $TSContext } from '@aws-amplify/amplify-cli-core'; @@ -10,7 +9,7 @@ export class IAMClient { private static instance: IAMClient; public readonly client: IAM; - static async getInstance(context: $TSContext, options: IAM.ClientConfiguration = {}): Promise { + static async getInstance(context: $TSContext, options: IAMClientConfig = {}): Promise { if (!IAMClient.instance) { let cred: AwsSdkConfig; try { @@ -24,13 +23,14 @@ export class IAMClient { return IAMClient.instance; } - private constructor(creds: AwsSdkConfig, options: IAM.ClientConfiguration = {}) { - this.client = new (aws as typeof awstype).IAM({ + private constructor(creds: AwsSdkConfig, options: IAMClientConfig = {}) { + this.client = new IAM({ ...creds, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); } } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lambda.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lambda.ts index 0a54d8b9b24..4f5b5b1d6e1 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lambda.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lambda.ts @@ -1,17 +1,22 @@ import { $TSAny, $TSContext, AmplifyError } from '@aws-amplify/amplify-cli-core'; -import { Lambda as AwsSdkLambda } from 'aws-sdk'; -import { LayerVersionsListItem, ListLayerVersionsRequest, ListLayerVersionsResponse } from 'aws-sdk/clients/lambda'; +import { + LambdaClient, + ListLayerVersionsCommand, + ListLayerVersionsCommandInput, + ListLayerVersionsCommandOutput, + DeleteLayerVersionCommand, + LayerVersionsListItem, +} from '@aws-sdk/client-lambda'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { AwsSecrets, loadConfiguration } from '../configuration-manager'; import { fileLogger } from '../utils/aws-logger'; import { pagedAWSCall } from './paged-call'; import { proxyAgent } from './aws-globals'; -const aws = require('./aws'); - const logger = fileLogger('aws-lambda'); export class Lambda { - private lambda: AwsSdkLambda; + private lambda: LambdaClient; constructor(private readonly context: $TSContext, options = {}) { return (async () => { @@ -21,24 +26,25 @@ export class Lambda { } catch (e) { // ignore missing config } - this.lambda = new aws.Lambda({ + this.lambda = new LambdaClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })() as $TSAny; } async listLayerVersions(layerNameOrArn: string) { - const startingParams: ListLayerVersionsRequest = { LayerName: layerNameOrArn, MaxItems: 20 }; - const result = await pagedAWSCall( - async (params: ListLayerVersionsRequest, nextMarker?: string) => { + const startingParams: ListLayerVersionsCommandInput = { LayerName: layerNameOrArn, MaxItems: 20 }; + const result = await pagedAWSCall( + async (params: ListLayerVersionsCommandInput, nextMarker?: string) => { params = nextMarker ? { ...params, Marker: nextMarker } : params; logger('Lambda.listLayerVersions', [params])(); - return await this.lambda.listLayerVersions(params).promise(); + return await this.lambda.send(new ListLayerVersionsCommand(params)); }, startingParams, (response) => response?.LayerVersions, @@ -48,15 +54,18 @@ export class Lambda { } async deleteLayerVersions(layerNameOrArn: string, versions: number[]) { - const params = { LayerName: layerNameOrArn, VersionNumber: undefined }; const deletionPromises = []; for (const version of versions) { - params.VersionNumber = version; + const params = { + LayerName: layerNameOrArn, + VersionNumber: version, + }; + deletionPromises.push(async () => { try { - await this.lambda.deleteLayerVersion(params).promise(); + await this.lambda.send(new DeleteLayerVersionCommand(params)); } catch (err) { - if (err.code !== 'ParameterNotFound') { + if (err.name !== 'ParameterNotFound') { throw new AmplifyError( 'LambdaLayerDeleteError', { @@ -70,7 +79,7 @@ export class Lambda { } try { - await Promise.all(deletionPromises); + await Promise.all(deletionPromises.map((fn) => fn())); } catch (e) { this.context.print.error( 'Failed to delete some or all layer versions. Check your internet connection and try again. ' + diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lex.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lex.js index e8bca279458..cbda3b1b82c 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lex.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-lex.js @@ -1,4 +1,5 @@ -const aws = require('./aws.js'); +const { LexModelBuildingServiceClient } = require('@aws-sdk/client-lex-model-building-service'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -36,13 +37,13 @@ class Lex { // ignore missing config } this.context = context; - this.lex = new aws.LexModelBuildingService({ + this.lex = new LexModelBuildingServiceClient({ ...cred, ...options, - apiVersion: '2017-04-19', - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })(); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-polly.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-polly.js index c45cc5b6d3c..a9c50cf6e11 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-polly.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-polly.js @@ -1,4 +1,5 @@ -const aws = require('./aws.js'); +const { PollyClient } = require('@aws-sdk/client-polly'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -12,13 +13,14 @@ class Polly { // ignore missing config } this.context = context; - this.polly = new aws.Polly({ + this.polly = new PollyClient({ ...cred, ...options, apiVersion: '2016-06-10', - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })(); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-route53.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-route53.js index 5154344cbc5..c94eefa605c 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-route53.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-route53.js @@ -1,5 +1,6 @@ // @ts-check -const aws = require('./aws.js'); +const { Route53Client } = require('@aws-sdk/client-route-53'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -15,13 +16,14 @@ class Route53 { } this.context = context; - /** @type {AWS.Route53} */ - this.route53 = new aws.Route53({ + /** @type {Route53Client} */ + this.route53 = new Route53Client({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-s3.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-s3.ts index 690184a661f..2388039951f 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-s3.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-s3.ts @@ -12,10 +12,25 @@ import _ from 'lodash'; import fs from 'fs-extra'; import ora from 'ora'; -import { ListObjectVersionsOutput, ListObjectVersionsRequest, ObjectIdentifier } from 'aws-sdk/clients/s3'; +import { + S3Client, + GetObjectCommand, + CreateBucketCommand, + HeadBucketCommand, + ListObjectVersionsCommand, + DeleteObjectsCommand, + HeadObjectCommand, + DeleteObjectCommand, + DeleteBucketCommand, + waitUntilBucketExists, + ListObjectVersionsCommandOutput, + ObjectIdentifier, + ListObjectVersionsCommandInput, +} from '@aws-sdk/client-s3'; +import { Upload } from '@aws-sdk/lib-storage'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { pagedAWSCall } from './paged-call'; import { loadConfiguration } from '../configuration-manager'; -import aws from './aws'; import { proxyAgent } from './aws-globals'; const providerName = require('../constants').ProviderName; @@ -34,7 +49,7 @@ type OptionalExceptFor = Partial & Pick { - spinner.text = `Uploading files...${Math.round((max.loaded / max.total) * 100)}%`; + uploadTask.on('httpUploadProgress', (progress) => { + spinner.text = `Uploading files...${Math.round((progress.loaded / progress.total) * 100)}%`; }); } - await uploadTask.promise(); + await uploadTask.done(); return this.uploadState.s3Params.Bucket; } finally { if (showSpinner) { @@ -170,7 +189,7 @@ export class S3 { s3Params = this.attachBucketToParams(s3Params, envName); logger('s3.getFile', [s3Params])(); - const result = await this.s3.getObject(s3Params).promise(); + const result = await this.s3.send(new GetObjectCommand(s3Params)); return result.Body; } @@ -192,9 +211,9 @@ export class S3 { ); this.context.print.warning(`Bucket name: ${bucketName}`); logger('createBucket.s3.createBucket', [params])(); - await this.s3.createBucket(params).promise(); + await this.s3.send(new CreateBucketCommand(params)); logger('createBucket.s3.waitFor', ['bucketExists', params])(); - await this.s3.waitFor('bucketExists', params).promise(); + await waitUntilBucketExists({ client: this.s3, maxWaitTime: 60 }, params); this.context.print.success('S3 bucket successfully created'); } else if (throwIfExists) { throw new AmplifyError('BucketAlreadyExistsError', { @@ -212,13 +231,13 @@ export class S3 { */ async getAllObjectVersions( bucketName: string, - options: OptionalExceptFor = null, + options: OptionalExceptFor = null, ) { - const result = await pagedAWSCall, typeof options, ListObjectVersionsRequest>( + const result = await pagedAWSCall( async (param, nextToken?) => { const parmaWithNextToken = nextToken ? { ...param, ...nextToken } : param; logger('getAllObjectKey.s3.listObjectVersions', [parmaWithNextToken])(); - const objVersionList = await this.s3.listObjectVersions(parmaWithNextToken).promise(); + const objVersionList = await this.s3.send(new ListObjectVersionsCommand(parmaWithNextToken)); return objVersionList; }, { @@ -246,14 +265,14 @@ export class S3 { const chunkedResultLength = chunkedResult.length; for (let idx = 0; idx < chunkedResultLength; idx += 1) { logger(`deleteAllObjects.s3.deleteObjects (${idx} of ${chunkedResultLength})`, [{ Bucket: bucketName }])(); - await this.s3 - .deleteObjects({ + await this.s3.send( + new DeleteObjectsCommand({ Bucket: bucketName, Delete: { Objects: chunkedResult[idx], }, - }) - .promise(); + }), + ); } } @@ -266,12 +285,12 @@ export class S3 { public async checkExistObject(bucketName: string, filePath: string): Promise { logger('checkExistObject.s3', [{ BucketName: bucketName, FilePath: filePath }])(); try { - await this.s3 - .headObject({ + await this.s3.send( + new HeadObjectCommand({ Bucket: bucketName, Key: filePath, - }) - .promise(); + }), + ); return true; } catch (error) { logger('checkExistObject.s3', [{ BucketName: bucketName, FilePath: filePath, Error: error.name }])(); @@ -288,12 +307,12 @@ export class S3 { logger('deleteObject.s3', [{ BucketName: bucketName, FilePath: filePath }])(); const objExists = await this.checkExistObject(bucketName, filePath); if (objExists) { - await this.s3 - .deleteObject({ + await this.s3.send( + new DeleteObjectCommand({ Bucket: bucketName, Key: filePath, - }) - .promise(); + }), + ); } } @@ -308,14 +327,14 @@ export class S3 { const chunkedResultLength = chunkedResult.length; for (let idx = 0; idx < chunkedResultLength; idx += 1) { logger(`deleteAllObjects.s3.deleteObjects (${idx} of ${chunkedResultLength})`, [{ Bucket: bucketName }])(); - await this.s3 - .deleteObjects({ + await this.s3.send( + new DeleteObjectsCommand({ Bucket: bucketName, Delete: { Objects: chunkedResult[idx], }, - }) - .promise(); + }), + ); } } @@ -329,7 +348,7 @@ export class S3 { logger('deleteS3Bucket.s3.deleteAllObjects', [{ BucketName: bucketName }])(); await this.deleteAllObjects(bucketName); logger('deleteS3Bucket.s3.deleteBucket', [{ BucketName: bucketName }])(); - await this.s3.deleteBucket({ Bucket: bucketName }).promise(); + await this.s3.send(new DeleteBucketCommand({ Bucket: bucketName })); } } @@ -351,16 +370,16 @@ export class S3 { public async ifBucketExists(bucketName: string): Promise { try { logger('ifBucketExists.s3.headBucket', [{ BucketName: bucketName }])(); - await this.s3 - .headBucket({ + await this.s3.send( + new HeadBucketCommand({ Bucket: bucketName, - }) - .promise(); + }), + ); return true; } catch (e) { logger('ifBucketExists.s3.headBucket', [{ BucketName: bucketName }])(e); - if (e.code === 'NotFound') { + if (e.name === 'NotFound') { throw new AmplifyError( 'BucketNotFoundError', { @@ -389,16 +408,21 @@ export class S3 { */ public getStringObjectFromBucket = async (bucketName: string, objectKey: string): Promise => { try { - const result = await this.s3 - .getObject({ + const result = await this.s3.send( + new GetObjectCommand({ Bucket: bucketName, Key: objectKey, - }) - .promise(); + }), + ); - return result.Body.toString(); + // Convert the stream to string + if (result.Body) { + const bodyContents = await result.Body.transformToString(); + return bodyContents; + } + return undefined; } catch (e) { - if (e.statusCode === 404) { + if (e.$metadata?.httpStatusCode === 404) { return undefined; } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sagemaker.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sagemaker.js index 9e867e7d838..ca9555b8728 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sagemaker.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sagemaker.js @@ -1,4 +1,5 @@ -const aws = require('./aws.js'); +const { SageMakerClient } = require('@aws-sdk/client-sagemaker'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -13,13 +14,13 @@ class SageMaker { } this.context = context; - this.sageMaker = new aws.SageMaker({ + this.sageMaker = new SageMakerClient({ ...cred, ...options, - apiVersion: '2017-07-24', - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; })(); diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-secretsmanager.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-secretsmanager.js index 022964ea4e1..af5620de31f 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-secretsmanager.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-secretsmanager.js @@ -1,5 +1,6 @@ // @ts-check -const aws = require('./aws.js'); +const { SecretsManagerClient } = require('@aws-sdk/client-secrets-manager'); +const { NodeHttpHandler } = require('@smithy/node-http-handler'); const configurationManager = require('../configuration-manager'); const { proxyAgent } = require('./aws-globals'); @@ -15,13 +16,14 @@ class SecretsManager { } this.context = context; - /** @type {AWS.SecretsManager} */ - this.secretsManager = new aws.SecretsManager({ + /** @type {SecretsManagerClient} */ + this.secretsManager = new SecretsManagerClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); return this; diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sns.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sns.ts index 7c82faf9906..2ef7faea18d 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sns.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sns.ts @@ -1,6 +1,7 @@ import { $TSAny, $TSContext } from '@aws-amplify/amplify-cli-core'; import { AwsSecrets, loadConfiguration } from '../configuration-manager'; -import aws from './aws.js'; +import { SNSClient, GetSMSSandboxAccountStatusCommand } from '@aws-sdk/client-sns'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { proxyAgent } from './aws-globals'; // Currently SNS is used only by Cognito for sending SMS and has the following SNS mapping @@ -15,7 +16,7 @@ const COGNITO_SMS_REGION_MAPPING = { }; export class SNS { private static instance: SNS; - private readonly sns: AWS.SNS; + private readonly sns: SNSClient; static async getInstance(context: $TSContext, options = {}): Promise { if (!SNS.instance) { @@ -37,17 +38,18 @@ export class SNS { } private constructor(context: $TSContext, cred: $TSAny, options = {}) { - this.sns = new aws.SNS({ + this.sns = new SNSClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); } public async isInSandboxMode(): Promise { - const result = await this.sns.getSMSSandboxAccountStatus().promise(); + const result = await this.sns.send(new GetSMSSandboxAccountStatusCommand({})); return result.IsInSandbox; } } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ssm.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ssm.ts index 1bf6772319e..529ca0314b1 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ssm.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-ssm.ts @@ -1,12 +1,12 @@ import { $TSContext, $TSObject } from '@aws-amplify/amplify-cli-core'; import { AwsSecrets, loadConfiguration } from '../configuration-manager'; -import aws from './aws.js'; -import * as AWS from 'aws-sdk'; +import { SSMClient } from '@aws-sdk/client-ssm'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { proxyAgent } from './aws-globals'; export class SSM { private static instance: SSM; - readonly client: AWS.SSM; + readonly client: SSMClient; static async getInstance(context: $TSContext, options: $TSObject = {}): Promise { if (!SSM.instance) { @@ -23,12 +23,13 @@ export class SSM { } private constructor(cred: AwsSecrets, options = {}) { - this.client = new aws.SSM({ + this.client = new SSMClient({ ...cred, ...options, - httpOptions: { - agent: proxyAgent(), - }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); } } diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sts.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sts.ts index 69fa9295ec1..c10ed29fead 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sts.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-sts.ts @@ -1,4 +1,5 @@ -import aws from './aws.js'; +import { STSClient, GetCallerIdentityCommand, GetCallerIdentityCommandOutput } from '@aws-sdk/client-sts'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { loadConfiguration } from '../configuration-manager'; import { $TSAny, $TSContext } from '@aws-amplify/amplify-cli-core'; import { proxyAgent } from './aws-globals'; @@ -6,7 +7,7 @@ import { proxyAgent } from './aws-globals'; export class STS { private static instance: STS; private readonly context: $TSContext; - private readonly sts: AWS.STS; + private readonly sts: STSClient; static async getInstance(context: $TSContext, options = {}): Promise { if (!STS.instance) { @@ -24,16 +25,17 @@ export class STS { private constructor(context: $TSContext, cred: $TSAny, options = {}) { this.context = context; - this.sts = new aws.STS({ + this.sts = new STSClient({ ...cred, - options, - httpOptions: { - agent: proxyAgent(), - }, + ...options, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); } - async getCallerIdentity(): Promise { - return await this.sts.getCallerIdentity().promise(); + async getCallerIdentity(): Promise { + return await this.sts.send(new GetCallerIdentityCommand({})); } } diff --git a/packages/amplify-provider-awscloudformation/src/cloud-formation-error-handler.ts b/packages/amplify-provider-awscloudformation/src/cloud-formation-error-handler.ts index a49459b57ab..d9a814576ba 100644 --- a/packages/amplify-provider-awscloudformation/src/cloud-formation-error-handler.ts +++ b/packages/amplify-provider-awscloudformation/src/cloud-formation-error-handler.ts @@ -33,7 +33,7 @@ export const handleCloudFormationError = (err: Error & { details?: string }): vo { message: 'Deployment is already in progress.', resolution: 'Wait for the other deployment to finish and try again.', - code: (err as $TSAny).code, + code: (err as $TSAny).name, }, err, ); diff --git a/packages/amplify-provider-awscloudformation/src/configuration-manager.ts b/packages/amplify-provider-awscloudformation/src/configuration-manager.ts index c67391c769c..4cc1827238d 100644 --- a/packages/amplify-provider-awscloudformation/src/configuration-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/configuration-manager.ts @@ -13,7 +13,6 @@ import chalk from 'chalk'; import { prompt } from 'inquirer'; import _ from 'lodash'; import path from 'path'; -import { STS } from 'aws-sdk'; import awsRegions from './aws-regions'; import constants from './constants'; import * as setupNewUser from './setup-new-user'; @@ -32,6 +31,7 @@ import { retryAuthConfig, } from './question-flows/configuration-questions'; import { proxyAgent } from './aws-utils/aws-globals'; +import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts'; interface AwsConfig extends AwsSecrets { useProfile?: boolean; @@ -469,7 +469,7 @@ async function validateConfig(context: $TSContext) { awsConfigInfo.config.secretAccessKey !== constants.DefaultAWSSecretAccessKey && awsConfigInfo.config.region && awsRegions.regions.includes(awsConfigInfo.config.region); - const sts = new STS({ + const sts = new STSClient({ credentials: { accessKeyId: awsConfigInfo.config.accessKeyId, secretAccessKey: awsConfigInfo.config.secretAccessKey, @@ -477,7 +477,7 @@ async function validateConfig(context: $TSContext) { }, }); try { - await sts.getCallerIdentity({}).promise(); + await sts.send(new GetCallerIdentityCommand({})); } catch (err) { awsConfigInfo.configValidated = false; } diff --git a/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/index.ts b/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/index.ts index 5cbef21c793..848d1cd7f10 100644 --- a/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/index.ts +++ b/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/index.ts @@ -1,5 +1,4 @@ import { $TSAny, $TSContext, pathManager, stateManager } from '@aws-amplify/amplify-cli-core'; -import { CloudFormation } from 'aws-sdk'; import * as fs from 'fs-extra'; import { S3 } from '../aws-utils/aws-s3'; import { loadConfiguration } from '../configuration-manager'; @@ -14,6 +13,7 @@ import { localPrefix, } from './utils'; import { handleCommonSdkError } from '../handle-common-sdk-errors'; +import { CloudFormationClient } from '@aws-sdk/client-cloudformation'; let functionsDependentOnReplacedModelTables: string[] = []; @@ -41,7 +41,7 @@ export const prependDeploymentStepsToDisconnectFunctionsFromReplacedModelTables ); // generate deployment steps that will remove references to the replaced tables in the dependent functions const { deploymentSteps: disconnectFuncsSteps, lastMetaKey } = await generateIterativeFuncDeploymentSteps( - new CloudFormation(await loadConfiguration(context)), + new CloudFormationClient(await loadConfiguration(context)), rootStackId, functionsDependentOnReplacedModelTables, ); diff --git a/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/utils.ts b/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/utils.ts index 35b4e8bf095..f439abec6c8 100644 --- a/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/utils.ts +++ b/packages/amplify-provider-awscloudformation/src/disconnect-dependent-resources/utils.ts @@ -9,13 +9,13 @@ import { } from '@aws-amplify/amplify-cli-core'; import * as path from 'path'; import * as fs from 'fs-extra'; -import { CloudFormation } from 'aws-sdk'; import _ from 'lodash'; import { ensureEnvParamManager } from '@aws-amplify/amplify-environment-parameters'; import { S3 } from '../aws-utils/aws-s3'; import { fileLogger } from '../utils/aws-logger'; import { getPreviousDeploymentRecord } from '../utils/amplify-resource-state-utils'; import { DeploymentOp, DeploymentStep } from '../iterative-deployment'; +import { CloudFormationClient, DescribeStackResourcesCommand } from '@aws-sdk/client-cloudformation'; const logger = fileLogger('disconnect-dependent-resources'); @@ -81,7 +81,7 @@ export const uploadTempFuncDeploymentFiles = async (s3Client: S3, funcNames: str * Generates the iterative deployment steps necessary to remove then re-add function dependency on rebuilt table */ export const generateIterativeFuncDeploymentSteps = async ( - cfnClient: CloudFormation, + cfnClient: CloudFormationClient, rootStackId: string, functionNames: string[], ): Promise<{ deploymentSteps: DeploymentStep[]; lastMetaKey: string }> => { @@ -130,13 +130,13 @@ export const prependDeploymentSteps = ( * Also writes the deployment operation to the temp meta path */ const generateIterativeFuncDeploymentOp = async ( - cfnClient: CloudFormation, + cfnClient: CloudFormationClient, rootStackId: string, functionName: string, ): Promise => { - const funcStack = await cfnClient - .describeStackResources({ StackName: rootStackId, LogicalResourceId: `function${functionName}` }) - .promise(); + const funcStack = await cfnClient.send( + new DescribeStackResourcesCommand({ StackName: rootStackId, LogicalResourceId: `function${functionName}` }), + ); if (!funcStack.StackResources || funcStack.StackResources.length === 0) { throw new AmplifyFault('ResourceNotFoundFault', { diff --git a/packages/amplify-provider-awscloudformation/src/display-helpful-urls.ts b/packages/amplify-provider-awscloudformation/src/display-helpful-urls.ts index fd27422fd7f..a7b87f141b1 100644 --- a/packages/amplify-provider-awscloudformation/src/display-helpful-urls.ts +++ b/packages/amplify-provider-awscloudformation/src/display-helpful-urls.ts @@ -245,15 +245,15 @@ export const showSMSSandboxWarning = async (context): Promise => { printer.warn(productionModeInfo); } } catch (e) { - if (e.code === 'AuthorizationError') { + if (e.name === 'AuthorizationError') { if (smsSandBoxMissingPermissionWarning) { printer.warn(smsSandBoxMissingPermissionWarning); } } else if (e instanceof TypeError) { printer.warn(cliUpdateWarning); - } else if (e.code === 'ResourceNotFound') { + } else if (e.name === 'ResourceNotFound') { // API is not public yet. Ignore it for now. This error should not occur as `COGNITO_SMS_SANDBOX_UPDATE_WARNING` will not be set - } else if (e.code === 'UnknownEndpoint') { + } else if (e.name === 'UnknownEndpoint') { // Network error. Sandbox status is for informational purpose and should not stop deployment log(e); } else { @@ -261,7 +261,7 @@ export const showSMSSandboxWarning = async (context): Promise => { 'SnsSandboxModeCheckFault', { message: e.message, - code: e.code, + code: e.name, }, e, ); diff --git a/packages/amplify-provider-awscloudformation/src/graphql-resource-manager/amplify-graphql-resource-manager.ts b/packages/amplify-provider-awscloudformation/src/graphql-resource-manager/amplify-graphql-resource-manager.ts index 1e11b4be5f0..0ea8eaab6ca 100644 --- a/packages/amplify-provider-awscloudformation/src/graphql-resource-manager/amplify-graphql-resource-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/graphql-resource-manager/amplify-graphql-resource-manager.ts @@ -15,7 +15,7 @@ import { cantHaveMoreThan500ResourcesRule, sanityCheckDiffs, } from 'graphql-transformer-core'; -import { CloudFormation } from 'aws-sdk'; +import { CloudFormationClient, DescribeStackResourcesCommand } from '@aws-sdk/client-cloudformation'; import { Diff } from 'deep-diff'; import _ from 'lodash'; import fs from 'fs-extra'; @@ -40,7 +40,7 @@ const SEARCHABLE_STACK_NAME = 'SearchableStack'; * Type for GQLResourceManagerProps */ export type GQLResourceManagerProps = { - cfnClient: CloudFormation; + cfnClient: CloudFormationClient; resourceMeta?: ResourceMeta; backendDir: string; cloudBackendDir: string; @@ -73,7 +73,7 @@ export type ResourceMeta = { export class GraphQLResourceManager { static serviceName = 'AppSync'; static categoryName = 'api'; - private cfnClient: CloudFormation; + private cfnClient: CloudFormationClient; private resourceMeta: ResourceMeta; private cloudBackendApiProjectRoot: string; private backendApiProjectRoot: string; @@ -89,10 +89,12 @@ export class GraphQLResourceManager { rebuildAllTables = false, ): Promise => { const cred = await loadConfiguration(context); - const cfn = new CloudFormation(cred); - const apiStack = await cfn - .describeStackResources({ StackName: StackId, LogicalResourceId: gqlResource.providerMetadata.logicalId }) - .promise(); + const cfn = new CloudFormationClient(cred); + const describeStackResourcesCommand = new DescribeStackResourcesCommand({ + StackName: StackId, + LogicalResourceId: gqlResource.providerMetadata.logicalId, + }); + const apiStack = await cfn.send(describeStackResourcesCommand); return new GraphQLResourceManager({ cfnClient: cfn, diff --git a/packages/amplify-provider-awscloudformation/src/initialize-env.ts b/packages/amplify-provider-awscloudformation/src/initialize-env.ts index 538f16c4d5f..f06b55c8bae 100644 --- a/packages/amplify-provider-awscloudformation/src/initialize-env.ts +++ b/packages/amplify-provider-awscloudformation/src/initialize-env.ts @@ -28,7 +28,7 @@ export async function run(context: $TSContext, providerMetadata: $TSMeta) { try { currentCloudBackendZip = await downloadZip(s3, tempDir, S3BackendZipFileName, undefined); } catch (err) { - if (err?.code === 'NoSuchBucket') { + if (err?.name === 'NoSuchBucket') { throw new AmplifyError('EnvironmentNotInitializedError', { message: `Could not find a deployment bucket for the specified backend environment. This environment may have been deleted.`, resolution: 'Make sure the environment has been initialized with "amplify init" or "amplify env add".', diff --git a/packages/amplify-provider-awscloudformation/src/iterative-deployment/deployment-manager.ts b/packages/amplify-provider-awscloudformation/src/iterative-deployment/deployment-manager.ts index ad2ac4fdefa..106bb891ddb 100644 --- a/packages/amplify-provider-awscloudformation/src/iterative-deployment/deployment-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/iterative-deployment/deployment-manager.ts @@ -1,8 +1,15 @@ import { $TSContext, AmplifyError, AmplifyFault, IDeploymentStateManager } from '@aws-amplify/amplify-cli-core'; import { AmplifySpinner, printer as promptsPrinter } from '@aws-amplify/amplify-prompts'; import assert from 'assert'; -import * as aws from 'aws-sdk'; -import { ConfigurationOptions } from 'aws-sdk/lib/config-base'; +import { S3Client, HeadObjectCommand } from '@aws-sdk/client-s3'; +import { + CloudFormationClient, + DescribeStacksCommand, + UpdateStackCommand, + waitUntilStackUpdateComplete, +} from '@aws-sdk/client-cloudformation'; +import { DynamoDBClient, DescribeTableCommand } from '@aws-sdk/client-dynamodb'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import throttle from 'lodash.throttle'; import { interpret } from 'xstate'; import { getBucketKey, getHttpUrl } from './helpers'; @@ -90,7 +97,7 @@ export class DeploymentManager { try { const cred = await loadConfiguration(context); // this is the "general" config level case, aws sdk will resolve creds and region from env variables etc. - const region = cred?.region ?? new aws.S3().config.region; + const region = cred?.region ?? new S3Client().config.region.toString(); return new DeploymentManager(cred, region, deploymentBucket, eventMap, options); } catch (e) { throw new AmplifyError( @@ -105,16 +112,16 @@ export class DeploymentManager { private deployment: DeploymentMachineStep[] = []; private options: Required; - private cfnClient: aws.CloudFormation; - private s3Client: aws.S3; - private ddbClient: aws.DynamoDB; + private cfnClient: CloudFormationClient; + private s3Client: S3Client; + private ddbClient: DynamoDBClient; private deploymentStateManager?: IDeploymentStateManager; private logger: Logger; private printer: IStackProgressPrinter; private spinner: AmplifySpinner; private constructor( - creds: ConfigurationOptions, + creds: any, private region: string, private deploymentBucket: string, private eventMap: EventMap, @@ -127,14 +134,26 @@ export class DeploymentManager { ...options, }; this.eventMap = eventMap; - this.s3Client = new aws.S3(creds); - this.cfnClient = new aws.CloudFormation({ + this.s3Client = new S3Client({ ...creds, region }); + this.cfnClient = new CloudFormationClient({ ...creds, - maxRetries: 10, + region, + maxAttempts: 10, customUserAgent: this.options.userAgent, - httpOptions: { agent: proxyAgent() }, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), + }); + this.ddbClient = new DynamoDBClient({ + ...creds, + region, + maxAttempts: 10, + requestHandler: new NodeHttpHandler({ + httpAgent: proxyAgent(), + httpsAgent: proxyAgent(), + }), }); - this.ddbClient = new aws.DynamoDB({ ...creds, region, maxRetries: 10, httpOptions: { agent: proxyAgent() } }); this.logger = fileLogger('deployment-manager'); this.printer = new StackProgressPrinter(eventMap); this.spinner = new AmplifySpinner(); @@ -364,7 +383,7 @@ export class DeploymentManager { * @param stackName name of the stack */ private ensureStack = async (stackName: string): Promise => { - const result = await this.cfnClient.describeStacks({ StackName: stackName }).promise(); + const result = await this.cfnClient.send(new DescribeStacksCommand({ StackName: stackName })); return result.Stacks[0].StackStatus.endsWith('_COMPLETE'); }; @@ -375,14 +394,14 @@ export class DeploymentManager { private ensureTemplateExists = async (templatePath: string): Promise => { try { const bucketKey = getBucketKey(templatePath, this.deploymentBucket); - await this.s3Client.headObject({ Bucket: this.deploymentBucket, Key: bucketKey }).promise(); + await this.s3Client.send(new HeadObjectCommand({ Bucket: this.deploymentBucket, Key: bucketKey })); return true; } catch (e) { throw new AmplifyError( 'DeploymentError', { message: - e.code === 'NotFound' + e.name === 'NotFound' ? `The cloudformation template ${templatePath} was not found in deployment bucket ${this.deploymentBucket}` : e.message, details: e.message, @@ -396,14 +415,14 @@ export class DeploymentManager { assert(tableName, 'table name should be passed'); try { - const response = await this.ddbClient.describeTable({ TableName: tableName }).promise(); + const response = await this.ddbClient.send(new DescribeTableCommand({ TableName: tableName })); if (response.Table?.TableStatus === 'DELETING') { return false; } const globalSecondaryIndexes = response.Table?.GlobalSecondaryIndexes; return globalSecondaryIndexes ? globalSecondaryIndexes.every((idx) => idx.IndexStatus === 'ACTIVE') : true; } catch (err) { - if (err?.code === 'ResourceNotFoundException') { + if (err?.name === 'ResourceNotFoundException') { return true; // in the case of an iterative update that recreates a table, non-existence means the table has been fully removed } throw new AmplifyFault( @@ -481,26 +500,22 @@ export class DeploymentManager { ParameterValue: val.toString(), })); - await cfn - .updateStack({ + await cfn.send( + new UpdateStackCommand({ StackName: currentStack.stackName, Parameters: parameters, TemplateURL: currentStack.stackTemplateUrl, Capabilities: currentStack.capabilities, ClientRequestToken: currentStack.clientRequestToken, - }) - .promise(); + }), + ); }; private waitForDeployment = async (stackParams: DeploymentMachineOp): Promise => { const { cfnClient } = this; assert(stackParams.stackName, 'stackName should be passed to waitForDeployment'); - await cfnClient - .waitFor('stackUpdateComplete', { - StackName: stackParams.stackName, - }) - .promise(); + await waitUntilStackUpdateComplete({ client: cfnClient, maxWaitTime: 600 }, { StackName: stackParams.stackName }); }; private rollBackStack = async (currentStack: Readonly): Promise => { diff --git a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts index f0c4c13354e..b216b8b7738 100644 --- a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts +++ b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts @@ -1,7 +1,7 @@ import { StackEvent } from 'aws-sdk/clients/cloudformation'; -import * as aws from 'aws-sdk'; import { AmplifyFault } from '@aws-amplify/amplify-cli-core'; import { fileLogger, Logger } from '../utils/aws-logger'; +import { CloudFormationClient, DescribeStackEventsCommand } from '@aws-sdk/client-cloudformation'; export interface StackEventMonitorOptions { pollDelay: number; @@ -31,7 +31,7 @@ export class StackEventMonitor { private logger: Logger; constructor( - private cfn: aws.CloudFormation, + private cfn: CloudFormationClient, private stackName: string, private printerFn: () => void, private addEventActivity: (event) => void, @@ -104,12 +104,12 @@ export class StackEventMonitor { let nextToken: string | undefined; let finished = false; while (!finished) { - const response = await this.cfn - .describeStackEvents({ + const response = await this.cfn.send( + new DescribeStackEventsCommand({ StackName: stackName, NextToken: nextToken, - }) - .promise(); + }), + ); const eventPage = response?.StackEvents ?? []; for (const event of eventPage) { @@ -143,10 +143,10 @@ export class StackEventMonitor { } } catch (e) { this.logger('readNewEvents', [])(e); - if (e.code === 'ValidationError' && e.message === `Stack [${this.stackName}] does not exist`) { + if (e.name === 'ValidationError' && e.message === `Stack [${this.stackName}] does not exist`) { return; } - if (e.code !== 'Throttling') { + if (e.name !== 'Throttling') { throw new AmplifyFault( 'NotImplementedFault', { diff --git a/packages/amplify-provider-awscloudformation/src/iterative-deployment/state-machine.ts b/packages/amplify-provider-awscloudformation/src/iterative-deployment/state-machine.ts index b5622ffacf0..9d7835148e0 100644 --- a/packages/amplify-provider-awscloudformation/src/iterative-deployment/state-machine.ts +++ b/packages/amplify-provider-awscloudformation/src/iterative-deployment/state-machine.ts @@ -10,6 +10,7 @@ import { collectError, } from './helpers'; import { send } from 'xstate/lib/actions'; +import { Capability } from '@aws-sdk/client-cloudformation'; export type DeploymentMachineOp = { stackTemplatePath: string; @@ -17,7 +18,7 @@ export type DeploymentMachineOp = { parameters: Record; tableNames: string[]; stackName: string; - capabilities?: string[]; + capabilities?: Capability[]; stackTemplateUrl: string; region: string; clientRequestToken?: string; diff --git a/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts b/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts index 81654f88b18..aac7736eb90 100644 --- a/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts +++ b/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts @@ -8,6 +8,7 @@ import { } from '@aws-amplify/amplify-cli-core'; import { prompt } from 'inquirer'; import { IAMClient } from '../aws-utils/aws-iam'; +import { GetPolicyCommand } from '@aws-sdk/client-iam'; export const configurePermissionsBoundaryForExistingEnv = async (context: $TSContext) => { setPermissionsBoundaryArn(await permissionsBoundarySupplier(context)); @@ -136,7 +137,7 @@ const rolloverPermissionsBoundaryToNewEnvironment = async (context: $TSContext) const isPolicyAccessible = async (context: $TSContext, policyArn: string) => { const iamClient = await IAMClient.getInstance(context); try { - await iamClient.client.getPolicy({ PolicyArn: policyArn }).promise(); + await iamClient.client.send(new GetPolicyCommand({ PolicyArn: policyArn })); } catch (err) { // NoSuchEntity error if (err?.statusCode === 404) { diff --git a/packages/amplify-provider-awscloudformation/src/push-resources.ts b/packages/amplify-provider-awscloudformation/src/push-resources.ts index 1f312b9fb76..976a0a47e0d 100644 --- a/packages/amplify-provider-awscloudformation/src/push-resources.ts +++ b/packages/amplify-provider-awscloudformation/src/push-resources.ts @@ -505,7 +505,7 @@ export const run = async (context: $TSContext, resourceDefinition: $TSObject, re 'DeploymentFault', { message: error.message, - code: error.code, + code: error.name, details: error.details, }, error, diff --git a/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts b/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts index d5341f2d0e1..cc537139c02 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts @@ -1,5 +1,8 @@ import { stateManager, $TSContext, AmplifyError, AmplifyFault } from '@aws-amplify/amplify-cli-core'; -import aws from 'aws-sdk'; +import { STSClient, AssumeRoleCommand } from '@aws-sdk/client-sts'; +import { CognitoIdentityClient, GetCredentialsForIdentityCommand } from '@aws-sdk/client-cognito-identity'; +import { CognitoIdentityProviderClient, InitiateAuthCommand } from '@aws-sdk/client-cognito-identity-provider'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import _ from 'lodash'; import fetch from 'node-fetch'; import { ProxyAgent } from 'proxy-agent'; @@ -75,16 +78,16 @@ export async function getTempCredsWithAdminTokens(context: $TSContext, appId: st // need to use Cognito creds to get STS creds - otherwise // users will not be able to provision Cognito resources - const sts = new aws.STS({ + const sts = new STSClient({ ...awsConfigInfo, - stsRegionalEndpoints: 'regional', }); - const { Credentials } = await sts - .assumeRole({ + + const { Credentials } = await sts.send( + new AssumeRoleCommand({ RoleArn: idToken.payload['cognito:preferred_role'], RoleSessionName: 'amplifyadmin', - }) - .promise(); + }), + ); return { accessKeyId: Credentials.AccessKeyId, @@ -118,16 +121,19 @@ async function getAdminAppState(appId: string, region: string): Promise { - const cognitoIdentity = new aws.CognitoIdentity({ region }); + const cognitoIdentity = new CognitoIdentityClient({ + region, + }); + const login = idToken.payload.iss.replace('https://', ''); - const { Credentials } = await cognitoIdentity - .getCredentialsForIdentity({ + const { Credentials } = await cognitoIdentity.send( + new GetCredentialsForIdentityCommand({ IdentityId: identityId, Logins: { [login]: idToken.jwtToken, }, - }) - .promise(); + }), + ); return { accessKeyId: Credentials.AccessKeyId, @@ -143,9 +149,10 @@ async function getRefreshedTokens(context: $TSContext, appId: string) { const authConfig: AdminAuthConfig = stateManager.getAmplifyAdminConfigEntry(appId); if (isJwtExpired(authConfig.idToken)) { - let refreshedTokens: aws.CognitoIdentityServiceProvider.AuthenticationResultType; + let refreshedTokens; try { - refreshedTokens = (await refreshJWTs(authConfig)).AuthenticationResult; + const result = await refreshJWTs(authConfig); + refreshedTokens = result.AuthenticationResult; // Refresh stored tokens authConfig.accessToken.jwtToken = refreshedTokens.AccessToken; authConfig.idToken.jwtToken = refreshedTokens.IdToken; @@ -165,14 +172,18 @@ function isJwtExpired(token: CognitoAccessToken | CognitoIdToken) { } async function refreshJWTs(authConfig: AdminAuthConfig) { - const CognitoISP = new aws.CognitoIdentityServiceProvider({ region: authConfig.region }); - return await CognitoISP.initiateAuth({ - AuthFlow: 'REFRESH_TOKEN', - AuthParameters: { - REFRESH_TOKEN: authConfig.refreshToken.token, - }, - ClientId: authConfig.accessToken.payload.client_id, // App client id from identityPool - }).promise(); + const cognitoISP = new CognitoIdentityProviderClient({ + region: authConfig.region, + }); + return await cognitoISP.send( + new InitiateAuthCommand({ + AuthFlow: 'REFRESH_TOKEN', + AuthParameters: { + REFRESH_TOKEN: authConfig.refreshToken.token, + }, + ClientId: authConfig.accessToken.payload.client_id, // App client id from identityPool + }), + ); } export const adminBackendMap: { diff --git a/packages/amplify-provider-awscloudformation/src/utils/admin-login-server.ts b/packages/amplify-provider-awscloudformation/src/utils/admin-login-server.ts index 6eaf54a4630..82c427b1f9b 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/admin-login-server.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/admin-login-server.ts @@ -1,6 +1,5 @@ import { AmplifyError, stateManager } from '@aws-amplify/amplify-cli-core'; import * as assert from 'assert'; -import { CognitoIdentity } from 'aws-sdk'; import bodyParser from 'body-parser'; // eslint-disable-line import cors from 'cors'; import express from 'express'; // eslint-disable-line @@ -10,6 +9,7 @@ import _ from 'lodash'; import { Printer } from '@aws-amplify/amplify-prompts'; import { AdminAuthPayload, CognitoAccessToken, CognitoIdToken } from './auth-types'; +import { CognitoIdentityClient, GetIdCommand } from '@aws-sdk/client-cognito-identity'; /** * Admin login server class @@ -61,17 +61,17 @@ export class AdminLoginServer { private async getIdentityId(idToken: CognitoIdToken, IdentityPoolId: string, region: string): Promise { // eslint-disable-line - const cognitoIdentity = new CognitoIdentity({ region }); + const cognitoIdentity = new CognitoIdentityClient({ region }); const login = idToken.payload.iss.replace('https://', ''); const logins = { [login]: idToken.jwtToken, }; - const { IdentityId } = await cognitoIdentity - .getId({ + const { IdentityId } = await cognitoIdentity.send( + new GetIdCommand({ IdentityPoolId, Logins: logins, - }) - .promise(); + }), + ); if (!IdentityId) { throw new AmplifyError('AmplifyStudioLoginError', { message: 'IdentityId not defined. Amplify CLI was unable to retrieve credentials.', diff --git a/packages/amplify-provider-awscloudformation/src/utils/amplify-resource-state-utils.ts b/packages/amplify-provider-awscloudformation/src/utils/amplify-resource-state-utils.ts index 7c0de66a677..60a91372f99 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/amplify-resource-state-utils.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/amplify-resource-state-utils.ts @@ -1,7 +1,6 @@ import { Template } from 'cloudform-types'; import { GlobalSecondaryIndex, AttributeDefinition } from 'cloudform-types/types/dynamoDb/table'; -import { CloudFormation } from 'aws-sdk'; -import { Capabilities } from 'aws-sdk/clients/cloudformation'; +import { CloudFormationClient, DescribeStacksCommand, DescribeStackResourcesCommand, Capability } from '@aws-sdk/client-cloudformation'; import _ from 'lodash'; import { JSONUtilities } from '@aws-amplify/amplify-cli-core'; @@ -14,16 +13,15 @@ export interface GSIRecord { */ export interface DeploymentRecord { parameters?: Record; - capabilities?: Capabilities; + capabilities?: Capability[]; } -export const getPreviousDeploymentRecord = async (cfnClient: CloudFormation, stackId: string): Promise => { +export const getPreviousDeploymentRecord = async (cfnClient: CloudFormationClient, stackId: string): Promise => { const depRecord: DeploymentRecord = {}; - const apiStackInfo = await cfnClient - .describeStacks({ - StackName: stackId, - }) - .promise(); + const describeStacksCommand = new DescribeStacksCommand({ + StackName: stackId, + }); + const apiStackInfo = await cfnClient.send(describeStacksCommand); depRecord.parameters = apiStackInfo.Stacks[0].Parameters.reduce((acc, param) => { acc[param.ParameterKey] = param.ParameterValue; return acc; @@ -32,20 +30,18 @@ export const getPreviousDeploymentRecord = async (cfnClient: CloudFormation, sta return depRecord; }; -export const getTableNames = async (cfnClient: CloudFormation, tables: string[], StackId: string): Promise> => { +export const getTableNames = async (cfnClient: CloudFormationClient, tables: string[], StackId: string): Promise> => { const tableNameMap: Map = new Map(); - const apiResources = await cfnClient - .describeStackResources({ - StackName: StackId, - }) - .promise(); + const describeStackResourcesCommand = new DescribeStackResourcesCommand({ + StackName: StackId, + }); + const apiResources = await cfnClient.send(describeStackResourcesCommand); for (const resource of apiResources.StackResources) { if (tables.includes(resource.LogicalResourceId)) { - const tableStack = await cfnClient - .describeStacks({ - StackName: resource.PhysicalResourceId, - }) - .promise(); + const describeStacksCommand = new DescribeStacksCommand({ + StackName: resource.PhysicalResourceId, + }); + const tableStack = await cfnClient.send(describeStacksCommand); const tableName = tableStack.Stacks[0].Outputs.reduce((acc, out) => { if (out.OutputKey === `GetAtt${resource.LogicalResourceId}TableName`) { acc.push(out.OutputValue); diff --git a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/delete-ssm-parameters.ts b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/delete-ssm-parameters.ts index 5481adbbc23..f33bf957fd8 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/delete-ssm-parameters.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/delete-ssm-parameters.ts @@ -1,10 +1,10 @@ import { $TSContext, AmplifyFault, IAmplifyResource } from '@aws-amplify/amplify-cli-core'; import { printer } from '@aws-amplify/amplify-prompts'; -import type { SSM as SSMType } from 'aws-sdk'; import { SSM } from '../../aws-utils/aws-ssm'; import { resolveAppId } from '../resolve-appId'; import { executeSdkPromisesWithExponentialBackOff } from './exp-backoff-executor'; import { getSsmSdkParametersDeleteParameters, getSsmSdkParametersGetParametersByPath } from './get-ssm-sdk-parameters'; +import { DeleteParametersCommand, DeleteParametersResult, GetParametersByPathCommand, SSMClient } from '@aws-sdk/client-ssm'; /** * Delete all CloudFormation parameters from the service for a given environment @@ -55,7 +55,7 @@ export const deleteEnvironmentParametersForResources = async ( await deleteParametersFromParameterStore(client, removedParameterKeys); }; -const deleteParametersFromParameterStore = async (ssmClient: SSMType, parameterKeys: string[]): Promise => { +const deleteParametersFromParameterStore = async (ssmClient: SSMClient, parameterKeys: string[]): Promise => { if (parameterKeys.length === 0) { return; } @@ -63,10 +63,10 @@ const deleteParametersFromParameterStore = async (ssmClient: SSMType, parameterK const chunkedKeys = chunkForParameterStore(parameterKeys); const deleteKeysFromPSPromises = chunkedKeys.map((keys) => { const ssmArgument = getSsmSdkParametersDeleteParameters(keys); - return () => ssmClient.deleteParameters(ssmArgument).promise(); + return () => ssmClient.send(new DeleteParametersCommand(ssmArgument)); }); - await executeSdkPromisesWithExponentialBackOff(deleteKeysFromPSPromises); + await executeSdkPromisesWithExponentialBackOff(deleteKeysFromPSPromises); } catch (e) { throw new AmplifyFault( 'ParametersDeleteFault', @@ -85,12 +85,12 @@ function isAmplifyParameter(parameter: string) { return lastPartOfPath.startsWith(keyPrefix); } -const getAllEnvParametersFromParameterStore = async (appId: string, envName: string, ssmClient: SSMType): Promise> => { +const getAllEnvParametersFromParameterStore = async (appId: string, envName: string, ssmClient: SSMClient): Promise> => { const parametersUnderPath: Array = []; let receivedNextToken = ''; do { const ssmArgument = getSsmSdkParametersGetParametersByPath(appId, envName, receivedNextToken); - const [data] = await executeSdkPromisesWithExponentialBackOff([() => ssmClient.getParametersByPath(ssmArgument).promise()]); + const [data] = await executeSdkPromisesWithExponentialBackOff([() => ssmClient.send(new GetParametersByPathCommand(ssmArgument))]); parametersUnderPath.push( ...data.Parameters.map((returnedParameter) => returnedParameter.Name).filter((name) => isAmplifyParameter(name)), ); diff --git a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/env-parameter-ssm-helpers.ts b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/env-parameter-ssm-helpers.ts index 592c87e0b56..e951c37deb7 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/env-parameter-ssm-helpers.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/env-parameter-ssm-helpers.ts @@ -1,9 +1,16 @@ import { $TSContext, AmplifyFault, stateManager } from '@aws-amplify/amplify-cli-core'; import { printer } from '@aws-amplify/amplify-prompts'; -import type { SSM as SSMType } from 'aws-sdk'; import { SSM } from '../../aws-utils/aws-ssm'; import { resolveAppId } from '../resolve-appId'; import { executeSdkPromisesWithExponentialBackOff } from './exp-backoff-executor'; +import { + GetParametersByPathResult, + GetParametersCommand, + GetParametersResult, + PutParameterCommand, + PutParameterCommandInput, + SSMClient, +} from '@aws-sdk/client-ssm'; /** * Higher order function for uploading CloudFormation parameters to the service @@ -30,7 +37,7 @@ export const getEnvParametersUploadHandler = async ( const uploadParameterToParameterStore = ( appId: string, envName: string, - ssmClient: SSMType, + ssmClient: SSMClient, ): ((key: string, value: string | boolean | number) => Promise) => { return async (key: string, value: string | boolean | number): Promise => { try { @@ -41,8 +48,8 @@ const uploadParameterToParameterStore = ( Tier: 'Standard', Type: 'String', Value: stringValue, - }; - await executeSdkPromisesWithExponentialBackOff([() => ssmClient.putParameter(sdkParameters).promise()]); + } as PutParameterCommandInput; + await executeSdkPromisesWithExponentialBackOff([() => ssmClient.send(new PutParameterCommand(sdkParameters))]); } catch (e) { throw new AmplifyFault( 'ParameterUploadFault', @@ -80,7 +87,7 @@ export const getEnvParametersDownloadHandler = async (context: $TSContext): Prom return downloadParametersFromParameterStore(appId, envName, client); }; -const downloadParametersFromParameterStore = (appId: string, envName: string, ssmClient: SSMType): DownloadHandler => { +const downloadParametersFromParameterStore = (appId: string, envName: string, ssmClient: SSMClient): DownloadHandler => { return async (keys: string[]): Promise => { if (keys.length === 0) { return {}; @@ -88,7 +95,7 @@ const downloadParametersFromParameterStore = (appId: string, envName: string, ss const keyPaths = keys.map((key) => `/amplify/${appId}/${envName}/${key}`); try { const sdkPromises = convertKeyPathsToSdkPromises(ssmClient, keyPaths); - const results = await executeSdkPromisesWithExponentialBackOff(sdkPromises); + const results = await executeSdkPromisesWithExponentialBackOff(sdkPromises); return results.reduce((acc, { Parameters }) => { Parameters.forEach((param) => { const [, , , , /* leading slash */ /* amplify */ /* appId */ /* envName */ key] = param.Name.split('/'); @@ -108,7 +115,7 @@ const downloadParametersFromParameterStore = (appId: string, envName: string, ss }; }; -const convertKeyPathsToSdkPromises = (ssmClient: SSMType, keyPaths: string[]): (() => Promise)[] => { +const convertKeyPathsToSdkPromises = (ssmClient: SSMClient, keyPaths: string[]): (() => Promise)[] => { const sdkParameterChunks = []; for (let i = 0; i < keyPaths.length; i += 10) { sdkParameterChunks.push({ @@ -116,5 +123,5 @@ const convertKeyPathsToSdkPromises = (ssmClient: SSMType, keyPaths: string[]): ( WithDecryption: false, }); } - return sdkParameterChunks.map((sdkParameters) => () => ssmClient.getParameters(sdkParameters).promise()); + return sdkParameterChunks.map((sdkParameters) => () => ssmClient.send(new GetParametersCommand(sdkParameters))); }; diff --git a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/exp-backoff-executor.ts b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/exp-backoff-executor.ts index d62599c0c64..abf7b7e40f6 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/exp-backoff-executor.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/ssm-utils/exp-backoff-executor.ts @@ -15,7 +15,7 @@ export const executeSdkPromisesWithExponentialBackOff = async (sdkPromises: ( backOffSleepTimeInMs = 500; consecutiveRetries = 0; } catch (e) { - if (e?.code === 'ThrottlingException' || e?.code === 'Throttling') { + if (e?.name === 'ThrottlingException' || e?.name === 'Throttling') { if (consecutiveRetries < MAX_RETRIES) { ++consecutiveRetries; await new Promise((resolve) => setTimeout(resolve, backOffSleepTimeInMs)); diff --git a/yarn.lock b/yarn.lock index 435f6be8e22..e6248812969 100644 --- a/yarn.lock +++ b/yarn.lock @@ -812,7 +812,9 @@ __metadata: "@aws-amplify/cli-extensibility-helper": 3.0.39 "@aws-amplify/graphql-transformer-core": ^2.11.1 "@aws-amplify/graphql-transformer-interfaces": ^3.12.0 + "@aws-sdk/client-amplify": ^3.624.0 "@aws-sdk/client-api-gateway": ^3.624.0 + "@aws-sdk/client-appsync": ^3.624.0 "@aws-sdk/client-cloudformation": ^3.624.0 "@aws-sdk/client-cognito-identity": ^3.624.0 "@aws-sdk/client-cognito-identity-provider": ^3.624.0 @@ -821,12 +823,17 @@ __metadata: "@aws-sdk/client-iam": ^3.624.0 "@aws-sdk/client-lambda": ^3.624.0 "@aws-sdk/client-location": ^3.624.0 + "@aws-sdk/client-polly": ^3.624.0 + "@aws-sdk/client-route-53": ^3.624.0 "@aws-sdk/client-s3": ^3.624.0 + "@aws-sdk/client-secrets-manager": ^3.624.0 + "@aws-sdk/client-sns": ^3.624.0 "@aws-sdk/client-ssm": ^3.624.0 "@aws-sdk/client-sts": ^3.624.0 "@aws-sdk/credential-provider-node": ^3.624.0 "@aws-sdk/credential-providers": ^3.624.0 "@aws-sdk/lib-dynamodb": ^3.624.0 + "@aws-sdk/lib-storage": ^3.624.0 "@aws-sdk/s3-request-presigner": ^3.624.0 "@aws-sdk/types": ^3.624.0 "@smithy/node-http-handler": ^4.1.0 @@ -2097,6 +2104,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-amplify@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-amplify@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 959b08a3f44d4b29a5ace5ebceb5d0f552e9a8fdf873bc33ce0119aac7c8ba1117042074e2fee13aea3113dd98fa89e975aae139db5dd7d0ac72906929b9dc79 + languageName: node + linkType: hard + "@aws-sdk/client-api-gateway@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-api-gateway@npm:3.844.0" @@ -2196,6 +2250,54 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-appsync@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-appsync@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: c54d0ada20421dce025eead2d835a4a13c6c1849d72f12446d60f4783c037a56e99216044efa5658e5ade6a52e25e40ed0de3fe3d0cfd3acef18726e8eaecbab + languageName: node + linkType: hard + "@aws-sdk/client-cloudformation@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-cloudformation@npm:3.844.0" @@ -3313,6 +3415,54 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-polly@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-polly@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-stream": ^4.2.3 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 48c29bde5e7e1e090cf81ebee99e08493bd21a6d459c253a75c31e6266b01f6c8c55928fe61622d622767f8ac2c4fdc1e9a396b724bdf5b7a5e25808c12df3a5 + languageName: node + linkType: hard + "@aws-sdk/client-rds@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-rds@npm:3.624.0" @@ -3455,6 +3605,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-route-53@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-route-53@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-sdk-route53": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@aws-sdk/xml-builder": 3.821.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + tslib: ^2.6.2 + checksum: 834627c4e76d92309e8be354471aa34eaeecc89be0aca612f7b6ea57c38e7b4e308abeb4dd645e0eee24eeffcdec5efb45181c9f1925e33651f70579cb6cbede + languageName: node + linkType: hard + "@aws-sdk/client-s3@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-s3@npm:3.624.0" @@ -3587,6 +3787,102 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-secrets-manager@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-secrets-manager@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 4bac778a5efc9188793b291273551a43a5bef1bdf1e48990399d51c4101912892af4742193fc7b177503aecaac03b4034e54495d1843dd0cd6c908f9f337abbd + languageName: node + linkType: hard + +"@aws-sdk/client-sns@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/client-sns@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: aa2e4d5328ef46420ceaa653115112b30ea58f60d3de392a9bc3bd28725bc3f386585fb7233f3780a071e99e20b278286c1899177be5846e3ecc54f399946f71 + languageName: node + linkType: hard + "@aws-sdk/client-ssm@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-ssm@npm:3.624.0" @@ -3868,6 +4164,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/client-sso@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 31daac66ba5355a15aaf94b8938741b5db51aad04b7c70650d4822384368936c024331a806b66d9281424b90f1b170524e71ba89244418560e007edba81eca29 + languageName: node + linkType: hard + "@aws-sdk/client-sts@npm:3.186.3": version: 3.186.3 resolution: "@aws-sdk/client-sts@npm:3.186.3" @@ -4150,6 +4492,29 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/core@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/core@npm:3.846.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@aws-sdk/xml-builder": 3.821.0 + "@smithy/core": ^3.7.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/property-provider": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/signature-v4": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-utf8": ^4.0.0 + fast-xml-parser: 5.2.5 + tslib: ^2.6.2 + checksum: b23115868854939ec4d2eefcedd0fe6a2dbaa8bca83e4b757c21e5c8a153c99b61ea4b645e763257b2031717dfcc9c92264f83aa4f9d0071c806895eea6722fa + languageName: node + linkType: hard + "@aws-sdk/credential-provider-cognito-identity@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.624.0" @@ -4223,6 +4588,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-env@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 21640b6eec50de4fa3a7e2ac1c4505c0cf27f2f7540781d2892b2aa281f28d7c4214bd385e11cdbfd5e3309cd12219c05d26adf7cad4c881c995a20b8bc4dbcd + languageName: node + linkType: hard + "@aws-sdk/credential-provider-http@npm:3.622.0": version: 3.622.0 resolution: "@aws-sdk/credential-provider-http@npm:3.622.0" @@ -4258,6 +4636,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-http@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/util-stream": ^4.2.3 + tslib: ^2.6.2 + checksum: 5fbc05c5b0e622ce473dda41d5402982508e63496d36cb22ee6039caf563bb5d1c5633ced6901fe8c134090818400b865202c619288979132ba635f09aa98a97 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-imds@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-imds@npm:3.186.0" @@ -4352,6 +4748,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-ini@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-env": 3.846.0 + "@aws-sdk/credential-provider-http": 3.846.0 + "@aws-sdk/credential-provider-process": 3.846.0 + "@aws-sdk/credential-provider-sso": 3.846.0 + "@aws-sdk/credential-provider-web-identity": 3.846.0 + "@aws-sdk/nested-clients": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 9f72b187cd5a2c6911c37900c1e2b776b5136e751e8dd40743bbb4db087af7e7a1e5137faff18373ccefb181dc19948f573d6010836bd58f1bd09880b4715bea + languageName: node + linkType: hard + "@aws-sdk/credential-provider-node@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-node@npm:3.186.0" @@ -4406,7 +4823,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.844.0, @aws-sdk/credential-provider-node@npm:^3.624.0": +"@aws-sdk/credential-provider-node@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/credential-provider-node@npm:3.844.0" dependencies: @@ -4426,6 +4843,26 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.846.0, @aws-sdk/credential-provider-node@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.846.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.846.0 + "@aws-sdk/credential-provider-http": 3.846.0 + "@aws-sdk/credential-provider-ini": 3.846.0 + "@aws-sdk/credential-provider-process": 3.846.0 + "@aws-sdk/credential-provider-sso": 3.846.0 + "@aws-sdk/credential-provider-web-identity": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 104a2bbda5e8f4882d79e31cf30da60e659b735605cd65d7abc31f3c33745cb28a38256f87f67debc1e376053f3f8531c5c7cf716d6bc6b7afc8fb31816e6bfc + languageName: node + linkType: hard + "@aws-sdk/credential-provider-process@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-process@npm:3.186.0" @@ -4478,6 +4915,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-process@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 3be6d4547cabd1fa71aa0acacc64f7996f6154aff01e7e5aa6f1cece3d89399c4f500b74db8f0173cf0c9c89275d8803970cb815d45c769808d339bdfae186fe + languageName: node + linkType: hard + "@aws-sdk/credential-provider-sso@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-sso@npm:3.186.0" @@ -4522,6 +4973,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.846.0" + dependencies: + "@aws-sdk/client-sso": 3.846.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/token-providers": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 698cd111299937faae09e25d20bdc81be57ba704392c2401e25df18ba11c96edaceab144debd1c2ae1a62076e3416f9179dc296ed0f40ff7e8548b27c3364281 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-web-identity@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-web-identity@npm:3.186.0" @@ -4561,6 +5028,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-web-identity@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/nested-clients": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: e2f5682cae9ca9ba99d65acc62b548027d2e47f0a57aac0c6664b9375177e5cde83307b09fba08916f45f8711aee3059161135419aad277f87f44a3a9169a946 + languageName: node + linkType: hard + "@aws-sdk/credential-providers@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/credential-providers@npm:3.624.0" @@ -4878,18 +5359,20 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/lib-storage@npm:^3.25.0": - version: 3.44.0 - resolution: "@aws-sdk/lib-storage@npm:3.44.0" +"@aws-sdk/lib-storage@npm:^3.25.0, @aws-sdk/lib-storage@npm:^3.624.0": + version: 3.846.0 + resolution: "@aws-sdk/lib-storage@npm:3.846.0" dependencies: + "@smithy/abort-controller": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/smithy-client": ^4.4.7 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 - tslib: ^2.3.0 + tslib: ^2.6.2 peerDependencies: - "@aws-sdk/abort-controller": ^3.0.0 - "@aws-sdk/client-s3": ^3.0.0 - checksum: bb62cd63593f59317ce45c886cf14b23c496758694217ad6f200effdae5291554dc166ba9af175b07f1696c0fd8b7d7954c36e89d46e6122d37a5959997c116c + "@aws-sdk/client-s3": ^3.846.0 + checksum: 7cda821191fea1fbc18eb3a14f73c50e4d1b1b29c7b0cf86718c1a1d9328ed6759f84c111ecc8d6eef13762bcec09754cdd8c4592ed356e7ff1c5c469f6c4373 languageName: node linkType: hard @@ -5272,6 +5755,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-sdk-route53@npm:3.840.0": + version: 3.840.0 + resolution: "@aws-sdk/middleware-sdk-route53@npm:3.840.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 09be555153099f7bb68a7c4447d3592edce08d2b4fba0a48937f32b3c7ab298b7e2ed20357fd98acc1c9bf2e6497adf94eb02c3562fefcfa6de66ba2518037c5 + languageName: node + linkType: hard + "@aws-sdk/middleware-sdk-s3@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/middleware-sdk-s3@npm:3.624.0" @@ -5466,6 +5960,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@smithy/core": ^3.7.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 321c47e079879077335dcf82127e872681f295fd036024dad2a92c12642f60dd09e27ea0743a4235c074b3df8be19a5e29ce0c9db68fcd7505717849a927e7fb + languageName: node + linkType: hard + "@aws-sdk/nested-clients@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/nested-clients@npm:3.844.0" @@ -5512,6 +6021,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/nested-clients@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/nested-clients@npm:3.846.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.845.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.846.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 8303cc4c7ec723314a9cc8eb690559e13a88a4292ea9b6de5389e4c930f7e620b4612e335a8be799363cdd6005759a99afeac0d5af6e65868d556fd072e861b3 + languageName: node + linkType: hard + "@aws-sdk/node-config-provider@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/node-config-provider@npm:3.186.0" @@ -5828,6 +6383,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/token-providers@npm:3.846.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/nested-clients": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 9c75c7035f3b458b944b12ddfc204d063a8de8463510f1156db1878165b829c44f895879de65debee60fe4621327c4e061fd71c2a116dbfa3e24172ea5441ed4 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/types@npm:3.186.0" @@ -6098,6 +6668,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-endpoints@npm:3.845.0": + version: 3.845.0 + resolution: "@aws-sdk/util-endpoints@npm:3.845.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-endpoints": ^3.0.6 + tslib: ^2.6.2 + checksum: ad08353ec6b5667b3f026ca49ceded7c8119fc40db9050aa645ddbf45c6d5e44037a9a2a7a76667afb863ffa3d55c514712e578c972841ac3a5249b8db45b084 + languageName: node + linkType: hard + "@aws-sdk/util-format-url@npm:3.609.0": version: 3.609.0 resolution: "@aws-sdk/util-format-url@npm:3.609.0" @@ -6293,6 +6876,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.846.0": + version: 3.846.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.846.0" + dependencies: + "@aws-sdk/middleware-user-agent": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: ee205a6bc978152f33da8a8e373ea16078e96b54403ed3c689f5cb87bfc207abbab6e1e61c52fea52b6f717f79836be61064eeebb4f510a2b4dd02013f03bcad + languageName: node + linkType: hard + "@aws-sdk/util-utf8-browser@npm:3.186.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": version: 3.186.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.186.0" @@ -10837,9 +11438,9 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.14": - version: 4.1.14 - resolution: "@smithy/middleware-endpoint@npm:4.1.14" +"@smithy/middleware-endpoint@npm:^4.1.14, @smithy/middleware-endpoint@npm:^4.1.15": + version: 4.1.15 + resolution: "@smithy/middleware-endpoint@npm:4.1.15" dependencies: "@smithy/core": ^3.7.0 "@smithy/middleware-serde": ^4.0.8 @@ -10849,7 +11450,7 @@ __metadata: "@smithy/url-parser": ^4.0.4 "@smithy/util-middleware": ^4.0.4 tslib: ^2.6.2 - checksum: 83d86051d30e402bdb98f62df637d76b2e9c31409cbe30ad39d8a56eb052eaa25c82118ce77d5e1055796a9f4b34eeb65bf51f6d85c68959bbfdb1632a7d0424 + checksum: 13078862d3355c2bc8db89d822194d4fdd41c19208f8ffc866c1926d2a5fc72aa91acff9d391034cb0d92b8d0e43f3b13cc0752d89d0a175031c603036c0fb83 languageName: node linkType: hard @@ -10870,20 +11471,20 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-retry@npm:^4.1.15": - version: 4.1.15 - resolution: "@smithy/middleware-retry@npm:4.1.15" +"@smithy/middleware-retry@npm:^4.1.15, @smithy/middleware-retry@npm:^4.1.16": + version: 4.1.16 + resolution: "@smithy/middleware-retry@npm:4.1.16" dependencies: "@smithy/node-config-provider": ^4.1.3 "@smithy/protocol-http": ^5.1.2 "@smithy/service-error-classification": ^4.0.6 - "@smithy/smithy-client": ^4.4.6 + "@smithy/smithy-client": ^4.4.7 "@smithy/types": ^4.3.1 "@smithy/util-middleware": ^4.0.4 "@smithy/util-retry": ^4.0.6 tslib: ^2.6.2 uuid: ^9.0.1 - checksum: 738fc245faac0b2302bc0db803abcc30456471289e87e7e543d2c567a098ed9440823897f13acbd43b81792dc55724c36e742a6375f3666fbcde7efe6a832d03 + checksum: d5a6def8456d7b01b51436702c1b3434c5d88bbd8c3a175b1865205178050f3fa14842e5b40119cba33a9057d0992a0670f9c906c827f573af75bf0009af95c2 languageName: node linkType: hard @@ -11145,18 +11746,18 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.6": - version: 4.4.6 - resolution: "@smithy/smithy-client@npm:4.4.6" +"@smithy/smithy-client@npm:^4.4.6, @smithy/smithy-client@npm:^4.4.7": + version: 4.4.7 + resolution: "@smithy/smithy-client@npm:4.4.7" dependencies: "@smithy/core": ^3.7.0 - "@smithy/middleware-endpoint": ^4.1.14 + "@smithy/middleware-endpoint": ^4.1.15 "@smithy/middleware-stack": ^4.0.4 "@smithy/protocol-http": ^5.1.2 "@smithy/types": ^4.3.1 "@smithy/util-stream": ^4.2.3 tslib: ^2.6.2 - checksum: fc241798d60e0cdc2502f0e9ce5dd275a780a566fe686b1130c83eac2ce773edc6b5bc3409f2fa7dc6551b6a9836dca0499ae7b8dd048853e1bddc35489f4335 + checksum: 36940434596ef8beae97343d075f67b954439a254fa3bea4dc6dd1206cfa35be3aa81daedb88605040905136e091198a64de79eb225e13b8d8de226a74e00d1f languageName: node linkType: hard @@ -11319,16 +11920,16 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^4.0.22": - version: 4.0.22 - resolution: "@smithy/util-defaults-mode-browser@npm:4.0.22" +"@smithy/util-defaults-mode-browser@npm:^4.0.22, @smithy/util-defaults-mode-browser@npm:^4.0.23": + version: 4.0.23 + resolution: "@smithy/util-defaults-mode-browser@npm:4.0.23" dependencies: "@smithy/property-provider": ^4.0.4 - "@smithy/smithy-client": ^4.4.6 + "@smithy/smithy-client": ^4.4.7 "@smithy/types": ^4.3.1 bowser: ^2.11.0 tslib: ^2.6.2 - checksum: 7c83c1c8e25fb00e43af187c4787b92c9748786fb978e51196fe061a8d45b84b2e5e2c860322289799fa57b972c20071f74c8c2c3a8a85ac5f2dc36b02279463 + checksum: 97ee414cae037ad47a78022435890a281fd4fbfeb68af85c53790db0a703c252b1b42856b8afe4e88c407c3b1d5390108548e6aa7807d6b5130bf5f60f916323 languageName: node linkType: hard @@ -11347,18 +11948,18 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^4.0.22": - version: 4.0.22 - resolution: "@smithy/util-defaults-mode-node@npm:4.0.22" +"@smithy/util-defaults-mode-node@npm:^4.0.22, @smithy/util-defaults-mode-node@npm:^4.0.23": + version: 4.0.23 + resolution: "@smithy/util-defaults-mode-node@npm:4.0.23" dependencies: "@smithy/config-resolver": ^4.1.4 "@smithy/credential-provider-imds": ^4.0.6 "@smithy/node-config-provider": ^4.1.3 "@smithy/property-provider": ^4.0.4 - "@smithy/smithy-client": ^4.4.6 + "@smithy/smithy-client": ^4.4.7 "@smithy/types": ^4.3.1 tslib: ^2.6.2 - checksum: 1a2894078397be4786c2501e20167d2f3a86bf77d4f270be862053ec4aeca5fe43850c2fc117df29854c7e60a4b8f3640fe81007e518283e98bfc429d8d771c9 + checksum: 2b2a77a59f871bc2f1732dcccc1bb648b23e2559e362d12c6efa82dad6d50436c8ba3acfeb72cb1fcb460c277bdf0ec0724687a3433bf6e298b460e11b16c4f2 languageName: node linkType: hard From d2a8a87f0d3d92f30793c113d8d0798e3d86e1e7 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 17 Jul 2025 13:56:49 -0700 Subject: [PATCH 08/13] fix: import lex --- .../package.json | 1 + .../src/aws-utils/aws-cfn.js | 3 +- .../src/utils/admin-helpers.ts | 1 - yarn.lock | 272 ++++++++++++++++++ 4 files changed, 274 insertions(+), 3 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 2e3276780c5..ff35288823f 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -47,6 +47,7 @@ "@aws-sdk/client-ecr": "^3.624.0", "@aws-sdk/client-iam": "^3.624.0", "@aws-sdk/client-lambda": "^3.624.0", + "@aws-sdk/client-lex-model-building-service": "^3.624.0", "@aws-sdk/client-location": "^3.624.0", "@aws-sdk/client-polly": "^3.624.0", "@aws-sdk/client-route-53": "^3.624.0", diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js index 5a485151d4b..c7d2bcc3a27 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js @@ -7,7 +7,6 @@ const BottleNeck = require('bottleneck'); const chalk = require('chalk'); const columnify = require('columnify'); -// AWS SDK v3 imports const { CloudFormationClient, CreateStackCommand, @@ -434,7 +433,7 @@ class CloudFormation { } this.progressBar?.stop(); - self.context.usageData.calculatePushNormalizationFactor(this.stackEvents, stackId); + context.usageData.calculatePushNormalizationFactor(this.stackEvents, stackId); await self.updateamplifyMetaFileWithStackOutputs(stackName); } catch (updateErr) { if (self.pollForEvents) { diff --git a/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts b/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts index cc537139c02..c983373b4bf 100644 --- a/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts +++ b/packages/amplify-provider-awscloudformation/src/utils/admin-helpers.ts @@ -2,7 +2,6 @@ import { stateManager, $TSContext, AmplifyError, AmplifyFault } from '@aws-ampli import { STSClient, AssumeRoleCommand } from '@aws-sdk/client-sts'; import { CognitoIdentityClient, GetCredentialsForIdentityCommand } from '@aws-sdk/client-cognito-identity'; import { CognitoIdentityProviderClient, InitiateAuthCommand } from '@aws-sdk/client-cognito-identity-provider'; -import { NodeHttpHandler } from '@smithy/node-http-handler'; import _ from 'lodash'; import fetch from 'node-fetch'; import { ProxyAgent } from 'proxy-agent'; diff --git a/yarn.lock b/yarn.lock index e6248812969..95b04a1b0d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -822,6 +822,7 @@ __metadata: "@aws-sdk/client-ecr": ^3.624.0 "@aws-sdk/client-iam": ^3.624.0 "@aws-sdk/client-lambda": ^3.624.0 + "@aws-sdk/client-lex-model-building-service": ^3.624.0 "@aws-sdk/client-location": ^3.624.0 "@aws-sdk/client-polly": ^3.624.0 "@aws-sdk/client-route-53": ^3.624.0 @@ -3108,6 +3109,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-lex-model-building-service@npm:^3.624.0": + version: 3.848.0 + resolution: "@aws-sdk/client-lex-model-building-service@npm:3.848.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.848.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.848.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 4132ca7ca1ab747f29996a826009ecea133e5211609ec00a85cf72d16caabde501b20132178bbcd6de40cabcfcc16c224ae8fa3f449b00ec36e7ddd4f994054e + languageName: node + linkType: hard + "@aws-sdk/client-lex-runtime-service@npm:3.186.3": version: 3.186.3 resolution: "@aws-sdk/client-lex-runtime-service@npm:3.186.3" @@ -4210,6 +4258,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/client-sso@npm:3.848.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.848.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 758d98cec61ee94f90e476584955409800368346ce9cafaad9d2012579655ddd7500ec31e6e4f409d4d14365ed44379b248a47b2d5a7c4dfde6658d17efea25a + languageName: node + linkType: hard + "@aws-sdk/client-sts@npm:3.186.3": version: 3.186.3 resolution: "@aws-sdk/client-sts@npm:3.186.3" @@ -4769,6 +4863,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-ini@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.848.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-env": 3.846.0 + "@aws-sdk/credential-provider-http": 3.846.0 + "@aws-sdk/credential-provider-process": 3.846.0 + "@aws-sdk/credential-provider-sso": 3.848.0 + "@aws-sdk/credential-provider-web-identity": 3.848.0 + "@aws-sdk/nested-clients": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: af3f7aa9816618a4be600f4feeeb737cf5bd11db4f3f7e96cc30e45e93386a2e3ab4a2f9c40b2eb738b4d4e66dbe0db5086062846a8a75dfa2fd42acfb349b33 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-node@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-node@npm:3.186.0" @@ -4863,6 +4978,26 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.848.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.846.0 + "@aws-sdk/credential-provider-http": 3.846.0 + "@aws-sdk/credential-provider-ini": 3.848.0 + "@aws-sdk/credential-provider-process": 3.846.0 + "@aws-sdk/credential-provider-sso": 3.848.0 + "@aws-sdk/credential-provider-web-identity": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/credential-provider-imds": ^4.0.6 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 9887a7a32dfc687c4cfb9aacf9fbc9468916dc6022802a1ddfccc6d948202e6cf6f2d15c3e526806714edd365490a828c18ec67de977a66d83b37ab75d170d56 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-process@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-process@npm:3.186.0" @@ -4989,6 +5124,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.848.0" + dependencies: + "@aws-sdk/client-sso": 3.848.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/token-providers": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 3ac50af20ff6646388175581cafab03b590eb5fccd1743ef45eeab3b3bb843a681e6c9e88d06c031a2886f77f649ab1a5df18cf7fb088dc8b34a7b225614ebaf + languageName: node + linkType: hard + "@aws-sdk/credential-provider-web-identity@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/credential-provider-web-identity@npm:3.186.0" @@ -5042,6 +5193,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-web-identity@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.848.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/nested-clients": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: bd1729dc05426d86c4feb4093b6c57eb2f11a8c10d6bd9a9b81d795bd4de1fa03f9c92c85ca35e6121c4814ba6a3416fa6bb7b3bf8171735de28999a1a239aa6 + languageName: node + linkType: hard + "@aws-sdk/credential-providers@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/credential-providers@npm:3.624.0" @@ -5975,6 +6140,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.848.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@smithy/core": ^3.7.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 2ec977bd69711022a162e287584c04c66a6481ecc331ed8fe13b6fd334a9d2c3ebe13709933dd5b224915cf7fa6e196870077e428c853b772a4b841162e71752 + languageName: node + linkType: hard + "@aws-sdk/nested-clients@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/nested-clients@npm:3.844.0" @@ -6067,6 +6247,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/nested-clients@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/nested-clients@npm:3.848.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.848.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + tslib: ^2.6.2 + checksum: 77057a60ce0f86bee16e1daa5214385720aa433f1ff097350b41a85dab2da2ac0a6f196f17b94d51631448adeed9dabfd8b984976771d9cfd4bb27a449f26bc6 + languageName: node + linkType: hard + "@aws-sdk/node-config-provider@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/node-config-provider@npm:3.186.0" @@ -6398,6 +6624,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/token-providers@npm:3.848.0" + dependencies: + "@aws-sdk/core": 3.846.0 + "@aws-sdk/nested-clients": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/property-provider": ^4.0.4 + "@smithy/shared-ini-file-loader": ^4.0.4 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: c37329f6f3f41c32464d4ca512baa0aa1cd8694964af4391eebb14e7a4980316041579745bc35930caf973aa5595326da95f652b26ebb8f167cea078fb893d10 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/types@npm:3.186.0" @@ -6681,6 +6922,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-endpoints@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/util-endpoints@npm:3.848.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-endpoints": ^3.0.6 + tslib: ^2.6.2 + checksum: 84567b4152ea823274855cdab4acdde1ca60b4ba0be265408da13ad59b9f5ec2f16578402ca0430748b57b57f3a457466517bf434d0e9cec79abf855a0468b49 + languageName: node + linkType: hard + "@aws-sdk/util-format-url@npm:3.609.0": version: 3.609.0 resolution: "@aws-sdk/util-format-url@npm:3.609.0" @@ -6894,6 +7148,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.848.0": + version: 3.848.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.848.0" + dependencies: + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/types": 3.840.0 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: 165308d1323ed0f56f4366e235674a73606c9d32a47c1572541c4befc6ce5ecca2d2334981f0d77791def22dad0a722773b1540f60f2d329710f2ade361801a6 + languageName: node + linkType: hard + "@aws-sdk/util-utf8-browser@npm:3.186.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": version: 3.186.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.186.0" From ef3fe968d8c80a7e5e0ea2cb1e115300229a4660 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 17 Jul 2025 14:26:04 -0700 Subject: [PATCH 09/13] refactor: last set of non-test files --- .../package.json | 2 + .../cloudformation-error-serializer.ts | 2 +- .../stack-event-monitor.ts | 2 +- .../stack-progress-printer.ts | 4 +- .../src/network/environment-info.ts | 30 +++-- yarn.lock | 123 +++++++++++++++++- 6 files changed, 145 insertions(+), 18 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index ff35288823f..cf0f9bad0ba 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -44,6 +44,7 @@ "@aws-sdk/client-cognito-identity": "^3.624.0", "@aws-sdk/client-cognito-identity-provider": "^3.624.0", "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/client-ec2": "^3.624.0", "@aws-sdk/client-ecr": "^3.624.0", "@aws-sdk/client-iam": "^3.624.0", "@aws-sdk/client-lambda": "^3.624.0", @@ -52,6 +53,7 @@ "@aws-sdk/client-polly": "^3.624.0", "@aws-sdk/client-route-53": "^3.624.0", "@aws-sdk/client-s3": "^3.624.0", + "@aws-sdk/client-sagemaker": "^3.624.0", "@aws-sdk/client-secrets-manager": "^3.624.0", "@aws-sdk/client-sns": "^3.624.0", "@aws-sdk/client-ssm": "^3.624.0", diff --git a/packages/amplify-provider-awscloudformation/src/aws-utils/cloudformation-error-serializer.ts b/packages/amplify-provider-awscloudformation/src/aws-utils/cloudformation-error-serializer.ts index 04ca0e3371f..a67ed3552a4 100644 --- a/packages/amplify-provider-awscloudformation/src/aws-utils/cloudformation-error-serializer.ts +++ b/packages/amplify-provider-awscloudformation/src/aws-utils/cloudformation-error-serializer.ts @@ -1,4 +1,4 @@ -import { StackEvent } from 'aws-sdk/clients/cloudformation'; +import { StackEvent } from '@aws-sdk/client-cloudformation'; export const getStatusToErrorMsg = (status) => { const MAP = { CREATE_FAILED: 'create', diff --git a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts index b216b8b7738..5db1a317585 100644 --- a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts +++ b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-event-monitor.ts @@ -1,4 +1,4 @@ -import { StackEvent } from 'aws-sdk/clients/cloudformation'; +import { StackEvent } from '@aws-sdk/client-cloudformation'; import { AmplifyFault } from '@aws-amplify/amplify-cli-core'; import { fileLogger, Logger } from '../utils/aws-logger'; import { CloudFormationClient, DescribeStackEventsCommand } from '@aws-sdk/client-cloudformation'; diff --git a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-progress-printer.ts b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-progress-printer.ts index 8995e744a49..2d8f8a48dc3 100644 --- a/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-progress-printer.ts +++ b/packages/amplify-provider-awscloudformation/src/iterative-deployment/stack-progress-printer.ts @@ -1,5 +1,5 @@ import { MultiProgressBar } from '@aws-amplify/amplify-prompts'; -import type { StackEvent, StackEvents } from 'aws-sdk/clients/cloudformation'; +import type { StackEvent } from '@aws-sdk/client-cloudformation'; import chalk from 'chalk'; import columnify from 'columnify'; import { @@ -15,7 +15,7 @@ import { IStackProgressPrinter } from './stack-event-monitor'; * Iterative deployment stack printer. */ export class StackProgressPrinter implements IStackProgressPrinter { - private events: StackEvents = []; + private events: StackEvent[] = []; private progressBars: MultiProgressBar; private eventMap: EventMap; private categoriesPrinted: string[] = []; diff --git a/packages/amplify-provider-awscloudformation/src/network/environment-info.ts b/packages/amplify-provider-awscloudformation/src/network/environment-info.ts index 7396dc4582c..87068dcdd7c 100644 --- a/packages/amplify-provider-awscloudformation/src/network/environment-info.ts +++ b/packages/amplify-provider-awscloudformation/src/network/environment-info.ts @@ -1,5 +1,11 @@ import { AmplifyError, JSONUtilities } from '@aws-amplify/amplify-cli-core'; -import { EC2 } from 'aws-sdk'; +import { + EC2Client, + DescribeAvailabilityZonesCommand, + DescribeVpcsCommand, + DescribeInternetGatewaysCommand, + DescribeSubnetsCommand, +} from '@aws-sdk/client-ec2'; import { Netmask } from 'netmask'; import { loadConfiguration } from '../configuration-manager'; import { RESOURCE_TAG } from './stack'; @@ -28,9 +34,9 @@ export async function getEnvironmentNetworkInfo(context, params: GetEnvironmentN // ignore missing config } - const ec2 = new EC2({ ...cred }); + const ec2Client = new EC2Client(cred); - const { AvailabilityZones } = await ec2.describeAvailabilityZones().promise(); + const { AvailabilityZones } = await ec2Client.send(new DescribeAvailabilityZonesCommand({})); if (subnetsCount > AvailabilityZones.length) { const subnets = subnetsCount; @@ -44,11 +50,11 @@ export async function getEnvironmentNetworkInfo(context, params: GetEnvironmentN }); } - const { Vpcs } = await ec2 - .describeVpcs({ + const { Vpcs } = await ec2Client.send( + new DescribeVpcsCommand({ Filters: [{ Name: 'tag:Name', Values: [vpcName] }], - }) - .promise(); + }), + ); if (Vpcs.length === 0) { // we need a new one @@ -69,8 +75,8 @@ export async function getEnvironmentNetworkInfo(context, params: GetEnvironmentN }); } - const { InternetGateways } = await ec2 - .describeInternetGateways({ + const { InternetGateways } = await ec2Client.send( + new DescribeInternetGatewaysCommand({ Filters: [ { Name: 'attachment.vpc-id', @@ -81,8 +87,8 @@ export async function getEnvironmentNetworkInfo(context, params: GetEnvironmentN Values: ['available'], }, ], - }) - .promise(); + }), + ); if (vpcId && InternetGateways.length === 0) { throw new AmplifyError('ConfigurationError', { @@ -92,7 +98,7 @@ export async function getEnvironmentNetworkInfo(context, params: GetEnvironmentN const [{ InternetGatewayId: internetGatewayId = undefined } = {}] = InternetGateways; - const { Subnets } = await ec2.describeSubnets({ Filters: [{ Name: 'vpc-id', Values: [vpcId] }] }).promise(); + const { Subnets } = await ec2Client.send(new DescribeSubnetsCommand({ Filters: [{ Name: 'vpc-id', Values: [vpcId] }] })); const availabilityZonesIterator = new (class implements IterableIterator { private counter = 0; diff --git a/yarn.lock b/yarn.lock index 95b04a1b0d2..fe0b5fbb669 100644 --- a/yarn.lock +++ b/yarn.lock @@ -819,6 +819,7 @@ __metadata: "@aws-sdk/client-cognito-identity": ^3.624.0 "@aws-sdk/client-cognito-identity-provider": ^3.624.0 "@aws-sdk/client-dynamodb": ^3.624.0 + "@aws-sdk/client-ec2": ^3.624.0 "@aws-sdk/client-ecr": ^3.624.0 "@aws-sdk/client-iam": ^3.624.0 "@aws-sdk/client-lambda": ^3.624.0 @@ -827,6 +828,7 @@ __metadata: "@aws-sdk/client-polly": ^3.624.0 "@aws-sdk/client-route-53": ^3.624.0 "@aws-sdk/client-s3": ^3.624.0 + "@aws-sdk/client-sagemaker": ^3.624.0 "@aws-sdk/client-secrets-manager": ^3.624.0 "@aws-sdk/client-sns": ^3.624.0 "@aws-sdk/client-ssm": ^3.624.0 @@ -2775,6 +2777,57 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-ec2@npm:^3.624.0": + version: 3.848.0 + resolution: "@aws-sdk/client-ec2@npm:3.848.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.848.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-sdk-ec2": 3.845.0 + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.848.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 9b014aead1e69457d5441a9d2bef559f8d81394e9c1c8d58f41d31317784082b803898d9dc3b6127e0e297e7d22ca208a5f9cef65d9e8f83d93d3b1f695115be + languageName: node + linkType: hard + "@aws-sdk/client-ecr@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-ecr@npm:3.844.0" @@ -3835,6 +3888,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sagemaker@npm:^3.624.0": + version: 3.848.0 + resolution: "@aws-sdk/client-sagemaker@npm:3.848.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.846.0 + "@aws-sdk/credential-provider-node": 3.848.0 + "@aws-sdk/middleware-host-header": 3.840.0 + "@aws-sdk/middleware-logger": 3.840.0 + "@aws-sdk/middleware-recursion-detection": 3.840.0 + "@aws-sdk/middleware-user-agent": 3.848.0 + "@aws-sdk/region-config-resolver": 3.840.0 + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-endpoints": 3.848.0 + "@aws-sdk/util-user-agent-browser": 3.840.0 + "@aws-sdk/util-user-agent-node": 3.848.0 + "@smithy/config-resolver": ^4.1.4 + "@smithy/core": ^3.7.0 + "@smithy/fetch-http-handler": ^5.1.0 + "@smithy/hash-node": ^4.0.4 + "@smithy/invalid-dependency": ^4.0.4 + "@smithy/middleware-content-length": ^4.0.4 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/middleware-retry": ^4.1.16 + "@smithy/middleware-serde": ^4.0.8 + "@smithy/middleware-stack": ^4.0.4 + "@smithy/node-config-provider": ^4.1.3 + "@smithy/node-http-handler": ^4.1.0 + "@smithy/protocol-http": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + "@smithy/url-parser": ^4.0.4 + "@smithy/util-base64": ^4.0.0 + "@smithy/util-body-length-browser": ^4.0.0 + "@smithy/util-body-length-node": ^4.0.0 + "@smithy/util-defaults-mode-browser": ^4.0.23 + "@smithy/util-defaults-mode-node": ^4.0.23 + "@smithy/util-endpoints": ^3.0.6 + "@smithy/util-middleware": ^4.0.4 + "@smithy/util-retry": ^4.0.6 + "@smithy/util-utf8": ^4.0.0 + "@smithy/util-waiter": ^4.0.6 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: d8d14cbcf72d60ca8db1162b7b6c4e45fd0459f9b251920d5c9b1ea59910d70ff070e4753d8e2b073cdec95ff92a95c4f9c6f096f92a1a39bd8eb26cf6ef512b + languageName: node + linkType: hard + "@aws-sdk/client-secrets-manager@npm:^3.624.0": version: 3.846.0 resolution: "@aws-sdk/client-secrets-manager@npm:3.846.0" @@ -4958,7 +5061,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.846.0, @aws-sdk/credential-provider-node@npm:^3.624.0": +"@aws-sdk/credential-provider-node@npm:3.846.0": version: 3.846.0 resolution: "@aws-sdk/credential-provider-node@npm:3.846.0" dependencies: @@ -4978,7 +5081,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.848.0": +"@aws-sdk/credential-provider-node@npm:3.848.0, @aws-sdk/credential-provider-node@npm:^3.624.0": version: 3.848.0 resolution: "@aws-sdk/credential-provider-node@npm:3.848.0" dependencies: @@ -5905,6 +6008,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-sdk-ec2@npm:3.845.0": + version: 3.845.0 + resolution: "@aws-sdk/middleware-sdk-ec2@npm:3.845.0" + dependencies: + "@aws-sdk/types": 3.840.0 + "@aws-sdk/util-format-url": 3.840.0 + "@smithy/middleware-endpoint": ^4.1.15 + "@smithy/protocol-http": ^5.1.2 + "@smithy/signature-v4": ^5.1.2 + "@smithy/smithy-client": ^4.4.7 + "@smithy/types": ^4.3.1 + tslib: ^2.6.2 + checksum: 7690f2ae4a9d84752eb8d666ad73a525ceb3870f2734a8388f0362b09bb7275b04c5223a350a26e94ed35aa01d48b8da1959676bbcd3a87f6b111c3ae38e0885 + languageName: node + linkType: hard + "@aws-sdk/middleware-sdk-rds@npm:3.620.0": version: 3.620.0 resolution: "@aws-sdk/middleware-sdk-rds@npm:3.620.0" From ccb58956f5516b4a02a716b1d44e426798f29fe4 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 18 Jul 2025 10:11:05 -0700 Subject: [PATCH 10/13] refactor: updated some unit tests --- .../package.json | 2 + .../utils.test.ts | 18 +- .../env-parameter-ssm-helpers.test.ts | 79 ++-- yarn.lock | 405 +++++++++++++++++- 4 files changed, 464 insertions(+), 40 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index cf0f9bad0ba..609660e1dcb 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -104,6 +104,8 @@ "@types/lodash.throttle": "^4.1.6", "@types/node": "^18.16.0", "@types/uuid": "^8.0.0", + "aws-sdk-client-mock": "^4.1.0", + "aws-sdk-client-mock-jest": "^4.1.0", "jest": "^29.7.0", "typescript": "^4.9.5" }, diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/disconnect-dependent-resources/utils.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/disconnect-dependent-resources/utils.test.ts index 1c6afd4e466..e3f20008e59 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/disconnect-dependent-resources/utils.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/disconnect-dependent-resources/utils.test.ts @@ -8,10 +8,10 @@ import { import { pathManager, stateManager, readCFNTemplate, writeCFNTemplate, CFNTemplateFormat } from '@aws-amplify/amplify-cli-core'; import * as fs from 'fs-extra'; import { S3 } from '../../aws-utils/aws-s3'; -import { CloudFormation } from 'aws-sdk'; import { getPreviousDeploymentRecord } from '../../utils/amplify-resource-state-utils'; import Template from 'cloudform-types/types/template'; import { DeploymentOp, DeploymentStep } from '../../iterative-deployment'; +import { CloudFormationClient } from '@aws-sdk/client-cloudformation'; jest.mock('fs-extra'); jest.mock('@aws-amplify/amplify-cli-core'); @@ -147,14 +147,12 @@ describe('uploadTempFuncDeploymentFiles', () => { describe('generateIterativeFuncDeploymentSteps', () => { it('generates steps with correct pointers', async () => { const cfnClient_stub = { - describeStackResources: () => ({ - promise: async () => ({ - StackResources: [ - { - PhysicalResourceId: 'testStackId', - }, - ], - }), + send: () => ({ + StackResources: [ + { + PhysicalResourceId: 'testStackId', + }, + ], }), }; getPreviousDeploymentRecord_mock @@ -173,7 +171,7 @@ describe('generateIterativeFuncDeploymentSteps', () => { stateManager_mock.getResourceParametersJson.mockReturnValue({}); stateManager_mock.getTeamProviderInfo.mockReturnValue({}); stateManager_mock.getLocalEnvInfo.mockReturnValue({ envName: 'testenv' }); - const result = await generateIterativeFuncDeploymentSteps(cfnClient_stub as unknown as CloudFormation, 'testRootStackId', [ + const result = await generateIterativeFuncDeploymentSteps(cfnClient_stub as unknown as CloudFormationClient, 'testRootStackId', [ 'func1', 'func2', ]); diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/env-parameter-ssm-helpers.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/env-parameter-ssm-helpers.test.ts index 0d8776bd051..74e4d5cd15e 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/env-parameter-ssm-helpers.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/env-parameter-ssm-helpers.test.ts @@ -1,7 +1,9 @@ import { $TSContext, stateManager } from '@aws-amplify/amplify-cli-core'; import { SSM } from '../../../aws-utils/aws-ssm'; -import type { SSM as SSMType } from 'aws-sdk'; +import { GetParametersCommand, GetParametersCommandOutput, PutParameterCommand, SSMClient } from '@aws-sdk/client-ssm'; import { getEnvParametersDownloadHandler, getEnvParametersUploadHandler } from '../../../utils/ssm-utils/env-parameter-ssm-helpers'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; jest.mock('@aws-amplify/amplify-cli-core'); jest.mock('../../../aws-utils/aws-ssm'); @@ -13,20 +15,10 @@ stateManagerMock.metaFileExists = jest.fn().mockReturnValue(true); stateManagerMock.getMeta = jest.fn(); stateManagerMock.getCurrentEnvName = jest.fn().mockReturnValue('mockEnv'); -const putParameterPromiseMock = jest.fn().mockImplementation(() => Promise.resolve()); -const getParametersPromiseMock = jest.fn().mockImplementation(() => Promise.resolve()); - -const getParametersMock = jest.fn().mockImplementation(() => ({ - promise: getParametersPromiseMock, -})); +const mockSsmClient = mockClient(SSMClient); mockSSM.getInstance = jest.fn().mockResolvedValue({ - client: { - putParameter: jest.fn().mockImplementation(() => ({ - promise: putParameterPromiseMock, - })), - getParameters: getParametersMock, - }, + client: mockSsmClient as unknown as SSMClient, }); const contextMock = {} as unknown as $TSContext; @@ -34,12 +26,20 @@ const contextMock = {} as unknown as $TSContext; jest.useFakeTimers(); describe('uploading environment parameters', () => { + beforeEach(() => { + mockSsmClient.reset(); + }); + it('returns an async function which can invoke the SSM client', async () => { stateManagerMock.getMeta.mockReturnValueOnce({ providers: { awscloudformation: { AmplifyAppId: 'mockedAppId' } } }); + mockSsmClient.on(PutParameterCommand).resolves({}); + const returnedFn = await getEnvParametersUploadHandler(contextMock); expect(returnedFn).toBeDefined(); await returnedFn('key', 'value'); - expect(putParameterPromiseMock).toBeCalledTimes(1); + + expect(mockSsmClient.calls().length).toBe(1); + expect(mockSsmClient).toHaveReceivedCommandTimes(PutParameterCommand, 1); }); it('returns no-op when AmplifyAppId is undefined', async () => { @@ -48,12 +48,14 @@ describe('uploading environment parameters', () => { expect(returnedFn).toBeDefined(); await returnedFn('key1', 'value'); await returnedFn('key2', 'value'); - expect(getParametersPromiseMock).not.toBeCalled(); + expect(mockSsmClient.calls().length).toBe(0); + expect(mockSsmClient).toHaveReceivedCommandTimes(PutParameterCommand, 0); }); }); describe('downloading environment parameters', () => { - afterEach(() => { + beforeEach(() => { + mockSsmClient.reset(); jest.clearAllMocks(); jest.clearAllTimers(); }); @@ -64,7 +66,8 @@ describe('downloading environment parameters', () => { expect(returnedFn).toBeDefined(); const mockParams = await returnedFn(['mockMissingParam']); expect(mockParams).toStrictEqual({}); - expect(getParametersMock).not.toBeCalled(); + expect(mockSsmClient.calls().length).toBe(0); + expect(mockSsmClient).toHaveReceivedCommandTimes(GetParametersCommand, 0); }); it('returns {} when no keys are supplied', async () => { @@ -73,20 +76,25 @@ describe('downloading environment parameters', () => { expect(returnedFn).toBeDefined(); const mockParams = await returnedFn([]); expect(mockParams).toStrictEqual({}); - expect(getParametersMock).not.toBeCalled(); + expect(mockSsmClient.calls().length).toBe(0); + expect(mockSsmClient).toHaveReceivedCommandTimes(GetParametersCommand, 0); }); it('returns an async function which can invoke the SSM client', async () => { stateManagerMock.getMeta.mockReturnValueOnce({ providers: { awscloudformation: { AmplifyAppId: 'mockedAppId' } } }); - const singleResultMock: SSMType.GetParametersResult = { Parameters: [{ Name: '/amplify/mockAppId/mockEnv/key', Value: '"value"' }] }; - getParametersPromiseMock.mockResolvedValueOnce(singleResultMock); + + const singleResultMock: GetParametersCommandOutput = { + Parameters: [{ Name: '/amplify/mockAppId/mockEnv/key', Value: '"value"' }], + $metadata: {}, + }; + mockSsmClient.on(GetParametersCommand).resolves(singleResultMock); const returnedFn = await getEnvParametersDownloadHandler(contextMock); expect(returnedFn).toBeDefined(); const mockParams = await returnedFn(['key']); expect(mockParams).toStrictEqual({ key: 'value' }); - expect(getParametersMock).toBeCalledTimes(1); - expect(getParametersPromiseMock).toBeCalledTimes(1); + expect(mockSsmClient.calls().length).toBe(1); + expect(mockSsmClient).toHaveReceivedCommandTimes(GetParametersCommand, 1); }); it('returns function which can handle many parameters in a single request', async () => { @@ -101,22 +109,37 @@ describe('downloading environment parameters', () => { mockCloudParams.push({ Name: `/amplify/mockedAppId/mockEnv/${key}`, Value: '"value"' }); } const expectedKeyPaths = keys.map((key) => `/amplify/mockedAppId/mockEnv/${key}`); - getParametersPromiseMock.mockResolvedValueOnce({ Parameters: mockCloudParams.slice(0, 10) }); - getParametersPromiseMock.mockResolvedValueOnce({ Parameters: mockCloudParams.slice(10) }); + + mockSsmClient + .on(GetParametersCommand) + .resolvesOnce({ + Parameters: mockCloudParams.slice(0, 10), + $metadata: {}, + }) + .resolvesOnce({ + Parameters: mockCloudParams.slice(10), + $metadata: {}, + }); const returnedFn = await getEnvParametersDownloadHandler(contextMock); expect(returnedFn).toBeDefined(); const mockParams = await returnedFn(keys); - expect(getParametersMock).toBeCalledTimes(2); - expect(getParametersMock).toBeCalledWith({ + + expect(mockSsmClient.calls().length).toBe(2); + expect(mockSsmClient).toHaveReceivedCommandTimes(GetParametersCommand, 2); + + // Check first call + expect(mockSsmClient.call(0).args[0].input).toEqual({ Names: expectedKeyPaths.slice(0, 10), WithDecryption: false, }); - expect(getParametersMock).toBeCalledWith({ + + // Check second call + expect(mockSsmClient.call(1).args[0].input).toEqual({ Names: expectedKeyPaths.slice(10), WithDecryption: false, }); + expect(mockParams).toStrictEqual(expectedParams); - expect(getParametersPromiseMock).toBeCalledTimes(2); }); }); diff --git a/yarn.lock b/yarn.lock index fe0b5fbb669..505e7e88390 100644 --- a/yarn.lock +++ b/yarn.lock @@ -850,6 +850,8 @@ __metadata: archiver: ^7.0.1 aws-cdk-lib: ~2.189.1 aws-sdk: ^2.1464.0 + aws-sdk-client-mock: ^4.1.0 + aws-sdk-client-mock-jest: ^4.1.0 bottleneck: 2.19.5 chalk: ^4.1.1 cloudform-types: ^4.2.0 @@ -7402,6 +7404,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": ^7.27.1 + js-tokens: ^4.0.0 + picocolors: ^1.1.1 + checksum: 5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.16.8, @babel/compat-data@npm:^7.17.0, @babel/compat-data@npm:^7.26.5": version: 7.26.8 resolution: "@babel/compat-data@npm:7.26.8" @@ -7702,6 +7715,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.14.5, @babel/helper-validator-option@npm:^7.16.7, @babel/helper-validator-option@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-option@npm:7.25.9" @@ -9853,6 +9873,13 @@ __metadata: languageName: node linkType: hard +"@jest/diff-sequences@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/diff-sequences@npm:30.0.1" + checksum: 3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 + languageName: node + linkType: hard + "@jest/environment@npm:^26.6.2": version: 26.6.2 resolution: "@jest/environment@npm:26.6.2" @@ -9889,6 +9916,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:30.0.4": + version: 30.0.4 + resolution: "@jest/expect-utils@npm:30.0.4" + dependencies: + "@jest/get-type": 30.0.1 + checksum: eda2d34b883e72b4ccccac04082701d37d35cc924bba8bbf044578f34257885b04c343fbfa2949831ee75429f665f3b157066025b1e587737b946a64aa75e973 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -9950,6 +9986,13 @@ __metadata: languageName: node linkType: hard +"@jest/get-type@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/get-type@npm:30.0.1" + checksum: 92437ae42d0df57e8acc2d067288151439db4752cde4f5e680c73c8a6e34568bbd8c1c81a2f2f9a637a619c2aac8bc87553fb80e31475b59e2ed789a71e5e540 + languageName: node + linkType: hard + "@jest/globals@npm:^27.5.1": version: 27.5.1 resolution: "@jest/globals@npm:27.5.1" @@ -9973,6 +10016,16 @@ __metadata: languageName: node linkType: hard +"@jest/pattern@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/pattern@npm:30.0.1" + dependencies: + "@types/node": "*" + jest-regex-util: 30.0.1 + checksum: 32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc + languageName: node + linkType: hard + "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -10010,6 +10063,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/schemas@npm:30.0.1" + dependencies: + "@sinclair/typebox": ^0.34.0 + checksum: 27977359edc4b33293af7c85c53de5014a87c29b9ab98b0a827fedfc6635abdb522aad8c3ff276080080911f519699b094bd6f4e151b43f0cc5856ccc83c04a7 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -10123,6 +10185,21 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/types@npm:30.0.1" + dependencies: + "@jest/pattern": 30.0.1 + "@jest/schemas": 30.0.1 + "@types/istanbul-lib-coverage": ^2.0.6 + "@types/istanbul-reports": ^3.0.4 + "@types/node": "*" + "@types/yargs": ^17.0.33 + chalk: ^4.1.2 + checksum: 407469331e74f9bb1ffd40202c3a8cece2fd07ba535adeb60557bdcee13713cf2f14cf78869ba7ef50a7e6fe0ed7cc97ec775056dd640fc0a332e8fbfaec1ee8 + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -11263,6 +11340,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.38 + resolution: "@sinclair/typebox@npm:0.34.38" + checksum: c1b9a1547c64de01ff5c89351baf289d2d5f19cfef3ae30fe4748a103eb58d0842618318543cd3de964cb0370d5a859e24aba231ade9b43ee2ef4d0bb4db7084 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -12966,6 +13050,15 @@ __metadata: languageName: node linkType: hard +"@types/chai@npm:^5.2.2": + version: 5.2.2 + resolution: "@types/chai@npm:5.2.2" + dependencies: + "@types/deep-eql": "*" + checksum: 49282bf0e8246800ebb36f17256f97bd3a8c4fb31f92ad3c0eaa7623518d7e87f1eaad4ad206960fcaf7175854bdff4cb167e4fe96811e0081b4ada83dd533ec + languageName: node + linkType: hard + "@types/columnify@npm:^1.5.0, @types/columnify@npm:^1.5.1": version: 1.5.1 resolution: "@types/columnify@npm:1.5.1" @@ -13029,6 +13122,13 @@ __metadata: languageName: node linkType: hard +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 + languageName: node + linkType: hard + "@types/detect-port@npm:^1.3.0": version: 1.3.1 resolution: "@types/detect-port@npm:1.3.1" @@ -13214,6 +13314,13 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + "@types/istanbul-lib-report@npm:*": version: 3.0.0 resolution: "@types/istanbul-lib-report@npm:3.0.0" @@ -13232,6 +13339,15 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: 1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + "@types/jest@npm:*, @types/jest@npm:^29.0.0, @types/jest@npm:^29.5.1": version: 29.5.1 resolution: "@types/jest@npm:29.5.1" @@ -13545,6 +13661,22 @@ __metadata: languageName: node linkType: hard +"@types/sinon@npm:^17.0.3": + version: 17.0.4 + resolution: "@types/sinon@npm:17.0.4" + dependencies: + "@types/sinonjs__fake-timers": "*" + checksum: 7c67ae1050d98a86d8dd771f0a764e97adb9d54812bf3b001195f8cfaa1e2bdfc725d5b970b91e7b0bb6b7c1ca209f47993f2c6f84f1f868313c37441313ca5b + languageName: node + linkType: hard + +"@types/sinonjs__fake-timers@npm:*": + version: 8.1.5 + resolution: "@types/sinonjs__fake-timers@npm:8.1.5" + checksum: 2b8bdc246365518fc1b08f5720445093cce586183acca19a560be6ef81f824bd9a96c090e462f622af4d206406dadf2033c5daf99a51c1096da6494e5c8dc32e + languageName: node + linkType: hard + "@types/sockjs@npm:^0.3.36": version: 0.3.36 resolution: "@types/sockjs@npm:0.3.36" @@ -13561,6 +13693,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + "@types/tar-fs@npm:^2.0.0": version: 2.0.1 resolution: "@types/tar-fs@npm:2.0.1" @@ -13721,6 +13860,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.33": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "*" + checksum: d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + "@types/yarnpkg__lockfile@npm:^1.1.5": version: 1.1.5 resolution: "@types/yarnpkg__lockfile@npm:1.1.5" @@ -13947,6 +14095,48 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:>1.6.0": + version: 3.2.4 + resolution: "@vitest/expect@npm:3.2.4" + dependencies: + "@types/chai": ^5.2.2 + "@vitest/spy": 3.2.4 + "@vitest/utils": 3.2.4 + chai: ^5.2.0 + tinyrainbow: ^2.0.0 + checksum: 7586104e3fd31dbe1e6ecaafb9a70131e4197dce2940f727b6a84131eee3decac7b10f9c7c72fa5edbdb68b6f854353bd4c0fa84779e274207fb7379563b10db + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/pretty-format@npm:3.2.4" + dependencies: + tinyrainbow: ^2.0.0 + checksum: 5ad7d4278e067390d7d633e307fee8103958806a419ca380aec0e33fae71b44a64415f7a9b4bc11635d3c13d4a9186111c581d3cef9c65cc317e68f077456887 + languageName: node + linkType: hard + +"@vitest/spy@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/spy@npm:3.2.4" + dependencies: + tinyspy: ^4.0.3 + checksum: 6ebf0b4697dc238476d6b6a60c76ba9eb1dd8167a307e30f08f64149612fd50227682b876420e4c2e09a76334e73f72e3ebf0e350714dc22474258292e202024 + languageName: node + linkType: hard + +"@vitest/utils@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/utils@npm:3.2.4" + dependencies: + "@vitest/pretty-format": 3.2.4 + loupe: ^3.1.4 + tinyrainbow: ^2.0.0 + checksum: 024a9b8c8bcc12cf40183c246c244b52ecff861c6deb3477cbf487ac8781ad44c68a9c5fd69f8c1361878e55b97c10d99d511f2597f1f7244b5e5101d028ba64 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -14914,7 +15104,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df @@ -15343,6 +15533,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.7": version: 0.0.7 resolution: "ast-types-flow@npm:0.0.7" @@ -15543,6 +15740,34 @@ __metadata: languageName: node linkType: hard +"aws-sdk-client-mock-jest@npm:^4.1.0": + version: 4.1.0 + resolution: "aws-sdk-client-mock-jest@npm:4.1.0" + dependencies: + "@vitest/expect": ">1.6.0" + expect: ">28.1.3" + tslib: ^2.1.0 + peerDependencies: + aws-sdk-client-mock: 4.1.0 + vitest: ">1.6.0" + peerDependenciesMeta: + vitest: + optional: true + checksum: bf68498476328b483e2847eb4a0ff65b4d6bf5850ed650d0c5e433373337b9fa3bdd0a64d63f3ff389747b150b1706a150b28e39bb6b5a7c490e9df49a0e62e1 + languageName: node + linkType: hard + +"aws-sdk-client-mock@npm:^4.1.0": + version: 4.1.0 + resolution: "aws-sdk-client-mock@npm:4.1.0" + dependencies: + "@types/sinon": ^17.0.3 + sinon: ^18.0.1 + tslib: ^2.1.0 + checksum: 045caad0cff0ffeb08e69849dcae51aac8999163c58d71220bf47a82c237aabab2abf92bf6bf3bd7666e6e8984513c628e01a89eafa46fb230201d6587bc01e9 + languageName: node + linkType: hard + "aws-sdk-mock@npm:^6.2.0": version: 6.2.0 resolution: "aws-sdk-mock@npm:6.2.0" @@ -16659,6 +16884,19 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.2.0": + version: 5.2.1 + resolution: "chai@npm:5.2.1" + dependencies: + assertion-error: ^2.0.1 + check-error: ^2.1.1 + deep-eql: ^5.0.1 + loupe: ^3.1.0 + pathval: ^2.0.0 + checksum: 58209c03ae9b2fd97cfa1cb0fbe372b1906e6091311b9ba1b0468cc4923b0766a50a1050a164df3ccefb9464944c9216b632f1477c9e429068013bdbb57220f6 + languageName: node + linkType: hard + "chalk@npm:4.1.0": version: 4.1.0 resolution: "chalk@npm:4.1.0" @@ -16791,6 +17029,13 @@ __metadata: languageName: node linkType: hard +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: 979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e + languageName: node + linkType: hard + "check-types@npm:^11.1.1": version: 11.1.2 resolution: "check-types@npm:11.1.2" @@ -16859,6 +17104,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^4.2.0": + version: 4.3.0 + resolution: "ci-info@npm:4.3.0" + checksum: 60d3dfe95d75c01454ec1cfd5108617dd598a28a2a3e148bd7e1523c1c208b5f5a3007cafcbe293e6fd0a5a310cc32217c5dc54743eeabc0a2bec80072fc055c + languageName: node + linkType: hard + "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" @@ -18480,6 +18732,13 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: 7102cf3b7bb719c6b9c0db2e19bf0aa9318d141581befe8c7ce8ccd39af9eaa4346e5e05adef7f9bd7015da0f13a3a25dcfe306ef79dc8668aedbecb658dd247 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -20067,6 +20326,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:>28.1.3": + version: 30.0.4 + resolution: "expect@npm:30.0.4" + dependencies: + "@jest/expect-utils": 30.0.4 + "@jest/get-type": 30.0.1 + jest-matcher-utils: 30.0.4 + jest-message-util: 30.0.2 + jest-mock: 30.0.2 + jest-util: 30.0.2 + checksum: de0c7cf4068591feda6b4b1dfcb5711f085266bfa720a8498ac8c0d03fbfa84881f54b67f25c79bee4bf0f6040ee12ed004b209de7d0cff82fd06d7b42baabc2 + languageName: node + linkType: hard + "expect@npm:^27.5.1": version: 27.5.1 resolution: "expect@npm:27.5.1" @@ -23541,6 +23814,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:30.0.4": + version: 30.0.4 + resolution: "jest-diff@npm:30.0.4" + dependencies: + "@jest/diff-sequences": 30.0.1 + "@jest/get-type": 30.0.1 + chalk: ^4.1.2 + pretty-format: 30.0.2 + checksum: aceae3a2e90ec232305ba43082e34ec5d24867459a6f52169e47edfd5f55457788ad534ff781d12e6606a70bc7ddc5090e45748732772679065dfd56f46f8ab1 + languageName: node + linkType: hard + "jest-diff@npm:>=29.4.3 < 30, jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -23711,6 +23996,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:30.0.4": + version: 30.0.4 + resolution: "jest-matcher-utils@npm:30.0.4" + dependencies: + "@jest/get-type": 30.0.1 + chalk: ^4.1.2 + jest-diff: 30.0.4 + pretty-format: 30.0.2 + checksum: 18f9f808e1de56a466d3a858acd5d253ea13e386619de05fe21b37316305b15feb078f12beae9228c878fc6b60b9bbbd1a6240f1878f80a222d241b38e54b53f + languageName: node + linkType: hard + "jest-matcher-utils@npm:^27.5.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -23735,6 +24032,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:30.0.2": + version: 30.0.2 + resolution: "jest-message-util@npm:30.0.2" + dependencies: + "@babel/code-frame": ^7.27.1 + "@jest/types": 30.0.1 + "@types/stack-utils": ^2.0.3 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + micromatch: ^4.0.8 + pretty-format: 30.0.2 + slash: ^3.0.0 + stack-utils: ^2.0.6 + checksum: c010d5b7d86e735e2fb4c4a220f57004349f488f5d4663240a7e9f2694d01b5228136540d55036777fde4227b5e0b56f08885b7f69395b295cab878357b1aeb1 + languageName: node + linkType: hard + "jest-message-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-message-util@npm:26.6.2" @@ -23786,6 +24100,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:30.0.2": + version: 30.0.2 + resolution: "jest-mock@npm:30.0.2" + dependencies: + "@jest/types": 30.0.1 + "@types/node": "*" + jest-util: 30.0.2 + checksum: 7728997c1d654475b88e18b7ba33a2a1b9f89ce33a9082bf2d14dcc3e831f372f80c762e481777886a3a04b4489ea5390ecdeb21c4def57fba5b2c77086a3959 + languageName: node + linkType: hard + "jest-mock@npm:^26.6.2": version: 26.6.2 resolution: "jest-mock@npm:26.6.2" @@ -23829,6 +24154,13 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:30.0.1": + version: 30.0.1 + resolution: "jest-regex-util@npm:30.0.1" + checksum: f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 + languageName: node + linkType: hard + "jest-regex-util@npm:^27.0.0, jest-regex-util@npm:^27.5.1": version: 27.5.1 resolution: "jest-regex-util@npm:27.5.1" @@ -24061,6 +24393,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:30.0.2": + version: 30.0.2 + resolution: "jest-util@npm:30.0.2" + dependencies: + "@jest/types": 30.0.1 + "@types/node": "*" + chalk: ^4.1.2 + ci-info: ^4.2.0 + graceful-fs: ^4.2.11 + picomatch: ^4.0.2 + checksum: 07de384790b8e5a5925fba5448fa1475790a5b52271fbf99958c18e468da1af940f8b45e330d87766576cf6c5d1f4f41ce51c976483a5079653d9fcdba8aac8e + languageName: node + linkType: hard + "jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" @@ -25185,6 +25531,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.0, loupe@npm:^3.1.4": + version: 3.1.4 + resolution: "loupe@npm:3.1.4" + checksum: 5c2e6aefaad25f812d361c750b8cf4ff91d68de289f141d7c85c2ce9bb79eeefa06a93c85f7b87cba940531ed8f15e492f32681d47eed23842ad1963eb3a154d + languageName: node + linkType: hard + "lower-case-first@npm:^2.0.1, lower-case-first@npm:^2.0.2": version: 2.0.2 resolution: "lower-case-first@npm:2.0.2" @@ -25575,7 +25928,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:~4.0.0": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8, micromatch@npm:~4.0.0": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -27518,6 +27871,13 @@ __metadata: languageName: node linkType: hard +"pathval@npm:^2.0.0": + version: 2.0.1 + resolution: "pathval@npm:2.0.1" + checksum: 460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581 + languageName: node + linkType: hard + "pbkdf2@npm:^3.0.3": version: 3.1.3 resolution: "pbkdf2@npm:3.1.3" @@ -28672,6 +29032,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:30.0.2": + version: 30.0.2 + resolution: "pretty-format@npm:30.0.2" + dependencies: + "@jest/schemas": 30.0.1 + ansi-styles: ^5.2.0 + react-is: ^18.3.1 + checksum: cf542dc2d0be95e2b1c6e3a397a4fc13fce1c9f8feed6b56165c0d23c7a83423abb6b032ed8e3e1b7c1c0709f9b117dd30b5185f107e58f8766616be6de84850 + languageName: node + linkType: hard + "pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" @@ -29208,6 +29579,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + "react-native-get-random-values@npm:^1.4.0": version: 1.7.1 resolution: "react-native-get-random-values@npm:1.7.1" @@ -30996,6 +31374,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + "stackframe@npm:^1.3.4": version: 1.3.4 resolution: "stackframe@npm:1.3.4" @@ -31819,6 +32206,20 @@ __metadata: languageName: node linkType: hard +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: c83c52bef4e0ae7fb8ec6a722f70b5b6fa8d8be1c85792e829f56c0e1be94ab70b293c032dc5048d4d37cfe678f1f5babb04bdc65fd123098800148ca989184f + languageName: node + linkType: hard + +"tinyspy@npm:^4.0.3": + version: 4.0.3 + resolution: "tinyspy@npm:4.0.3" + checksum: 0a92a18b5350945cc8a1da3a22c9ad9f4e2945df80aaa0c43e1b3a3cfb64d8501e607ebf0305e048e3c3d3e0e7f8eb10cea27dc17c21effb73e66c4a3be36373 + languageName: node + linkType: hard + "title-case@npm:^3.0.3": version: 3.0.3 resolution: "title-case@npm:3.0.3" From b4cc4487e7efbf2666d919a64416ffb6f8f5bb38 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 18 Jul 2025 10:39:33 -0700 Subject: [PATCH 11/13] chore: post merge removals --- packages/amplify-provider-awscloudformation/package.json | 1 - packages/amplify-util-import/package.json | 3 +-- yarn.lock | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index 609660e1dcb..c824226774b 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -68,7 +68,6 @@ "amplify-codegen": "^4.10.3", "archiver": "^7.0.1", "aws-cdk-lib": "~2.189.1", - "aws-sdk": "^2.1464.0", "bottleneck": "2.19.5", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", diff --git a/packages/amplify-util-import/package.json b/packages/amplify-util-import/package.json index 8d0b15aa590..7f6eab4bf15 100644 --- a/packages/amplify-util-import/package.json +++ b/packages/amplify-util-import/package.json @@ -23,8 +23,7 @@ "@aws-sdk/client-cognito-identity": "^3.624.0", "@aws-sdk/client-cognito-identity-provider": "^3.624.0", "@aws-sdk/client-dynamodb": "^3.515.0", - "@aws-sdk/client-s3": "^3.515.0", - "aws-sdk": "^2.1464.0" + "@aws-sdk/client-s3": "^3.515.0" }, "devDependencies": { "@types/node": "^12.12.6" diff --git a/yarn.lock b/yarn.lock index 38bf8e6a745..a4a59a219d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -848,7 +848,6 @@ __metadata: amplify-codegen: ^4.10.3 archiver: ^7.0.1 aws-cdk-lib: ~2.189.1 - aws-sdk: ^2.1464.0 aws-sdk-client-mock: ^4.1.0 aws-sdk-client-mock-jest: ^4.1.0 bottleneck: 2.19.5 @@ -901,7 +900,6 @@ __metadata: "@aws-sdk/client-dynamodb": ^3.515.0 "@aws-sdk/client-s3": ^3.515.0 "@types/node": ^12.12.6 - aws-sdk: ^2.1464.0 languageName: unknown linkType: soft From c780d676563f8811932bfe020e956e1661b1a356 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 18 Jul 2025 12:43:35 -0700 Subject: [PATCH 12/13] refactor: unit tests --- .../__tests__/amplify-service-manager.test.ts | 37 +++++---- .../cloudformation-error-serializer.test.ts | 5 +- .../__tests__/display-helpful-urls.test.ts | 14 ++-- .../src/__tests__/initialize-env.test.ts | 2 +- .../stack-event-monitor.test.ts | 19 +++-- .../permissions-boundary.test.ts | 27 +++---- .../amplify-resource-state-utils.test.ts | 76 ++++++++++--------- .../ssm-utils/delete-ssm-parameters.test.ts | 33 ++++---- .../permissions-boundary.ts | 2 +- 9 files changed, 106 insertions(+), 109 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts index 9921a8053ae..d8c14199d37 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts @@ -1,21 +1,16 @@ -import { Amplify } from 'aws-sdk'; import { stateManager } from '@aws-amplify/amplify-cli-core'; import { getConfiguredAmplifyClient } from '../aws-utils/aws-amplify'; import { checkAmplifyServiceIAMPermission } from '../amplify-service-permission-check'; import { init } from '../amplify-service-manager'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; +import { AmplifyClient, CreateAppCommand } from '@aws-sdk/client-amplify'; jest.mock('../aws-utils/aws-amplify'); jest.mock('../amplify-service-permission-check'); -const amplifyClientStub = { - createApp: jest.fn().mockReturnValue({ - promise: jest.fn().mockRejectedValue({ - code: 'LimitExceededException', - }), - }), -} as unknown as Amplify; +const mockAmplifyClient = mockClient(AmplifyClient); const getConfiguredAmplifyClientMock = getConfiguredAmplifyClient as jest.MockedFunction; -getConfiguredAmplifyClientMock.mockResolvedValue(amplifyClientStub); const checkAmplifyServiceIAMPermissionMock = checkAmplifyServiceIAMPermission as jest.MockedFunction< typeof checkAmplifyServiceIAMPermission @@ -25,7 +20,16 @@ checkAmplifyServiceIAMPermissionMock.mockResolvedValue(true); jest.spyOn(stateManager, 'teamProviderInfoExists').mockReturnValue(false); describe('init', () => { + beforeEach(() => { + getConfiguredAmplifyClientMock.mockClear(); + mockAmplifyClient.reset(); + }); it('throws ProjectInitError if Amplify app limit has been reached', async () => { + mockAmplifyClient.on(CreateAppCommand).rejectsOnce({ + name: 'LimitExceededException', + }); + getConfiguredAmplifyClientMock.mockResolvedValue(mockAmplifyClient as unknown as AmplifyClient); + const amplifyServiceParamsStub = { context: {}, awsConfigInfo: {}, @@ -39,16 +43,11 @@ describe('init', () => { }); it('throws Configutation error if config level is general and soorcing wrong credentials', async () => { - const amplifyClientGeneralConfigStub = { - createApp: jest.fn().mockReturnValue({ - promise: jest.fn().mockRejectedValue({ - code: 'ConfigError', - message: 'Missing Region in Config', - }), - }), - } as unknown as Amplify; - getConfiguredAmplifyClientMock.mockClear(); - getConfiguredAmplifyClientMock.mockResolvedValue(amplifyClientGeneralConfigStub); + mockAmplifyClient.on(CreateAppCommand).rejectsOnce({ + name: 'ConfigError', + message: 'Missing Region in Config', + }); + getConfiguredAmplifyClientMock.mockResolvedValue(mockAmplifyClient as unknown as AmplifyClient); const amplifyServiceParamsStub = { context: { diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/cloudformation-error-serializer.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/cloudformation-error-serializer.test.ts index 05767ce621e..91680e14d42 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/cloudformation-error-serializer.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/aws-utils/cloudformation-error-serializer.test.ts @@ -1,3 +1,4 @@ +import { ResourceStatus } from '@aws-sdk/client-cloudformation'; import { deserializeErrorMessages, CFNErrorMessages, @@ -11,7 +12,7 @@ const eventsWithFailure = [ PhysicalResourceId: 'testStackId1', LogicalResourceId: 'testLogicalResourceId1', ResourceType: 'AWS::IAM::Role', - ResourceStatus: 'CREATE_FAILED', + ResourceStatus: ResourceStatus.CREATE_FAILED, ResourceStatusReason: 'Some valid reason 1', // below properties are useless since we don't use them in the code StackId: 'testStackId1', @@ -23,7 +24,7 @@ const eventsWithFailure = [ PhysicalResourceId: 'testStackId2', LogicalResourceId: 'testLogicalResourceId2', ResourceType: 'AWS::CloudFormation::Stack', - ResourceStatus: 'UPDATE_FAILED', + ResourceStatus: ResourceStatus.UPDATE_FAILED, ResourceStatusReason: 'Some valid reason 2', // below properties are useless since we don't use them in the code StackId: 'testStackId2', diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/display-helpful-urls.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/display-helpful-urls.test.ts index 92805736d2a..3ebf3e36c74 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/display-helpful-urls.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/display-helpful-urls.test.ts @@ -1,8 +1,8 @@ import { ApiCategoryFacade, BannerMessage, stateManager } from '@aws-amplify/amplify-cli-core'; -import { AWSError } from 'aws-sdk'; import { printer } from '@aws-amplify/amplify-prompts'; import { SNS } from '../aws-utils/aws-sns'; import { showGraphQLTransformerVersion, showSMSSandboxWarning } from '../display-helpful-urls'; +import { AwsError } from 'aws-sdk-client-mock'; jest.mock('../aws-utils/aws-sns'); jest.mock('@aws-amplify/amplify-cli-core'); @@ -77,8 +77,8 @@ describe('showSMSSandBoxWarning', () => { describe('when IAM user is missing sandbox permission', () => { beforeEach(() => { - const authError = new Error() as AWSError; - authError.code = 'AuthorizationError'; + const authError = new Error() as AwsError; + authError.name = 'AuthorizationError'; mockedSNSClientInstance.isInSandboxMode.mockRejectedValue(authError); }); it('should not show any warning if there is no message associated', async () => { @@ -110,8 +110,8 @@ describe('showSMSSandBoxWarning', () => { describe('it should not show any warning message when the SNS API is not deployed', () => { beforeEach(() => { - const resourceNotFoundError = new Error() as AWSError; - resourceNotFoundError.code = 'ResourceNotFound'; + const resourceNotFoundError = new Error() as AwsError; + resourceNotFoundError.name = 'ResourceNotFound'; mockedSNSClientInstance.isInSandboxMode.mockRejectedValue(resourceNotFoundError); }); it('should not print error', async () => { @@ -127,8 +127,8 @@ describe('showSMSSandBoxWarning', () => { describe('it should not show any warning message when there is a network error', () => { beforeEach(() => { - const networkError = new Error() as AWSError; - networkError.code = 'UnknownEndpoint'; + const networkError = new Error() as AwsError; + networkError.name = 'UnknownEndpoint'; mockedSNSClientInstance.isInSandboxMode.mockRejectedValue(networkError); }); diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/initialize-env.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/initialize-env.test.ts index ca58f46ac0b..3282d8cea64 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/initialize-env.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/initialize-env.test.ts @@ -18,7 +18,7 @@ describe('initialize environment', () => { }, } as unknown as $TSContext; it('throws AmplifyError if the deployment bucket does not exist', async () => { - downloadZipMock.mockRejectedValueOnce({ code: 'NoSuchBucket' }); + downloadZipMock.mockRejectedValueOnce({ name: 'NoSuchBucket' }); const actual = await expect(run(contextStub, {})).rejects; await actual.toBeInstanceOf(AmplifyException); await actual.toMatchInlineSnapshot( diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/iterative-deployment/stack-event-monitor.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/iterative-deployment/stack-event-monitor.test.ts index 3e6917d9cfe..5d8d9cbce63 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/iterative-deployment/stack-event-monitor.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/iterative-deployment/stack-event-monitor.test.ts @@ -1,27 +1,26 @@ -import type { CloudFormation } from 'aws-sdk'; import { StackEventMonitor } from '../../iterative-deployment/stack-event-monitor'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; +import { CloudFormationClient, DescribeStackEventsCommand } from '@aws-sdk/client-cloudformation'; const stackProgressPrinterStub = { printerFn: jest.fn(), addEventActivity: jest.fn(), }; -const cfn = { - describeStackEvents: () => ({ - promise: () => - Promise.resolve({ - NextToken: undefined, - }), - }), -} as unknown as CloudFormation; +const mockCfnClient = mockClient(CloudFormationClient); jest.useFakeTimers(); jest.spyOn(global, 'setTimeout'); jest.spyOn(global, 'clearTimeout'); describe('StackEventMonitor', () => { + mockCfnClient.on(DescribeStackEventsCommand).resolves({ + NextToken: undefined, + }); + const monitor = new StackEventMonitor( - cfn, + mockCfnClient as unknown as CloudFormationClient, 'testStackName', stackProgressPrinterStub.printerFn, stackProgressPrinterStub.addEventActivity, diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/permission-boundary/permissions-boundary.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/permission-boundary/permissions-boundary.test.ts index abfd084cccc..4099a07638d 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/permission-boundary/permissions-boundary.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/permission-boundary/permissions-boundary.test.ts @@ -1,8 +1,10 @@ import { $TSContext, setPermissionsBoundaryArn, getPermissionsBoundaryArn, stateManager } from '@aws-amplify/amplify-cli-core'; import { prompt } from 'inquirer'; -import { IAM } from 'aws-sdk'; +import { GetPolicyCommand, IAMClient as IAM } from '@aws-sdk/client-iam'; import { configurePermissionsBoundaryForInit } from '../../permissions-boundary/permissions-boundary'; import { IAMClient } from '../../aws-utils/aws-iam'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; const permissionsBoundaryArn = 'arn:aws:iam::123456789012:policy/some-policy-name'; const argName = 'permissions-boundary'; @@ -25,6 +27,7 @@ const getPermissionsBoundaryArn_mock = getPermissionsBoundaryArn as jest.MockedF const prompt_mock = prompt as jest.MockedFunction; const IAMClient_mock = IAMClient as jest.Mocked; const stateManager_mock = stateManager as jest.Mocked; +const mockIAMClient = mockClient(IAM); stateManager_mock.getLocalEnvInfo.mockReturnValue({ envName: 'testenv' }); @@ -53,6 +56,7 @@ describe('configure permissions boundary on init', () => { }, } as unknown as $TSContext; jest.clearAllMocks(); + mockIAMClient.reset(); }); it('applies policy specifed in cmd arg when present', async () => { context_stub.input.options[argName] = permissionsBoundaryArn; @@ -108,12 +112,9 @@ describe('configure permissions boundary on env add', () => { it('applies existing policy to new env when existing policy is accessible', async () => { getPermissionsBoundaryArn_mock.mockReturnValueOnce(permissionsBoundaryArn); IAMClient_mock.getInstance.mockResolvedValueOnce({ - client: { - getPolicy: jest.fn().mockReturnValueOnce({ - promise: jest.fn(), - }), - } as unknown as IAM, + client: mockIAMClient as unknown as IAM, }); + mockIAMClient.on(GetPolicyCommand).resolvesOnce({}); await configurePermissionsBoundaryForInit(context_stub); expect(setPermissionsBoundaryArn_mock.mock.calls[0][0]).toEqual(permissionsBoundaryArn); expect(prompt_mock).not.toHaveBeenCalled(); @@ -122,12 +123,9 @@ describe('configure permissions boundary on env add', () => { it('prompts for new policy when existing one is not accessible', async () => { getPermissionsBoundaryArn_mock.mockReturnValueOnce(permissionsBoundaryArn); IAMClient_mock.getInstance.mockResolvedValueOnce({ - client: { - getPolicy: jest.fn().mockReturnValueOnce({ - promise: jest.fn().mockRejectedValueOnce({ statusCode: 404, message: 'test error' }), - }), - } as unknown as IAM, + client: mockIAMClient as unknown as IAM, }); + mockIAMClient.on(GetPolicyCommand).rejects({ name: 'NoSuchEntityException', message: 'test error' }); const newPermissionsBoundaryArn = 'thisIsANewArn'; prompt_mock.mockResolvedValueOnce({ permissionsBoundaryArn: newPermissionsBoundaryArn, @@ -140,12 +138,9 @@ describe('configure permissions boundary on env add', () => { context_stub.input.options.yes = true; getPermissionsBoundaryArn_mock.mockReturnValueOnce(permissionsBoundaryArn); IAMClient_mock.getInstance.mockResolvedValueOnce({ - client: { - getPolicy: jest.fn().mockReturnValueOnce({ - promise: jest.fn().mockRejectedValueOnce({ statusCode: 404, message: 'test error' }), - }), - } as unknown as IAM, + client: mockIAMClient as unknown as IAM, }); + mockIAMClient.on(GetPolicyCommand).rejects({ name: 'NoSuchEntityException', message: 'test error' }); await expect(configurePermissionsBoundaryForInit(context_stub)).rejects.toMatchInlineSnapshot( `[InputValidationError: A permissions boundary ARN must be specified using --permissions-boundary]`, ); diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/utils/amplify-resource-state-utils.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/utils/amplify-resource-state-utils.test.ts index 6e1f293f87a..f9a108b6ff8 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/utils/amplify-resource-state-utils.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/utils/amplify-resource-state-utils.test.ts @@ -1,45 +1,49 @@ +import { CloudFormationClient, DescribeStackResourcesCommand, DescribeStacksCommand } from '@aws-sdk/client-cloudformation'; import { getTableNames, getPreviousDeploymentRecord } from '../../utils/amplify-resource-state-utils'; -import { CloudFormation } from 'aws-sdk'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; -const cfnClientStub = { - describeStackResources: () => ({ - promise: () => - Promise.resolve({ - StackResources: [ +const mockCfnClient = mockClient(CloudFormationClient); +mockCfnClient + .on(DescribeStackResourcesCommand) + .resolves({ + StackResources: [ + { + LogicalResourceId: 'LogicalResourceIdTest1', + PhysicalResourceId: 'PhysicalResourceIdTest', + ResourceType: undefined, + Timestamp: undefined, + ResourceStatus: undefined, + }, + ], + }) + .on(DescribeStacksCommand) + .resolves({ + Stacks: [ + { + Outputs: [ { - LogicalResourceId: 'LogicalResourceIdTest1', - PhysicalResourceId: 'PhysicalResourceIdTest', + OutputKey: 'GetAttLogicalResourceIdTest1TableName', + OutputValue: 'TestStackOutputValue1', + }, + { + OutputKey: 'InvalidLogicalResourceIdTableName', + OutputValue: 'TestStackOutputValue2', }, ], - }), - }), - describeStacks: () => ({ - promise: () => - Promise.resolve({ - Stacks: [ + Parameters: [ { - Outputs: [ - { - OutputKey: 'GetAttLogicalResourceIdTest1TableName', - OutputValue: 'TestStackOutputValue1', - }, - { - OutputKey: 'InvalidLogicalResourceIdTableName', - OutputValue: 'TestStackOutputValue2', - }, - ], - Parameters: [ - { - ParameterKey: 'TestParameterKey1', - ParameterValue: 'TestParameterValue1', - }, - ], - Capabilities: ['CAPABILITY_IAM'], + ParameterKey: 'TestParameterKey1', + ParameterValue: 'TestParameterValue1', }, ], - }), - }), -} as unknown as CloudFormation; + Capabilities: ['CAPABILITY_IAM'], + StackName: undefined, + CreationTime: undefined, + StackStatus: undefined, + }, + ], + }); describe('amplify-resource-state-utils', () => { const StackID = 'TestSTackID'; @@ -49,7 +53,7 @@ describe('amplify-resource-state-utils', () => { const expectedTableNameMap: Map = new Map(); expectedTableNameMap.set('LogicalResourceIdTest1', 'TestStackOutputValue1'); - const tableNames = await getTableNames(cfnClientStub, tables, StackID); + const tableNames = await getTableNames(mockCfnClient as unknown as CloudFormationClient, tables, StackID); expect(tableNames).toEqual(expectedTableNameMap); }); @@ -58,7 +62,7 @@ describe('amplify-resource-state-utils', () => { capabilities: ['CAPABILITY_IAM'], parameters: { TestParameterKey1: 'TestParameterValue1' }, }; - const prevDeploymentRecord = await getPreviousDeploymentRecord(cfnClientStub, StackID); + const prevDeploymentRecord = await getPreviousDeploymentRecord(mockCfnClient as unknown as CloudFormationClient, StackID); expect(prevDeploymentRecord).toEqual(expectedPrevDeploymentRecord); }); diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/delete-ssm-parameters.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/delete-ssm-parameters.test.ts index f70bd26c3d8..6336560f9f5 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/delete-ssm-parameters.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/utils/ssm-utils/delete-ssm-parameters.test.ts @@ -1,11 +1,13 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; -import type { SSM as SSMType } from 'aws-sdk'; import { SSM } from '../../../aws-utils/aws-ssm'; import { deleteEnvironmentParametersFromService } from '../../../utils/ssm-utils/delete-ssm-parameters'; import { getSsmSdkParametersDeleteParameters, getSsmSdkParametersGetParametersByPath, } from '../../../utils/ssm-utils/get-ssm-sdk-parameters'; +import { DeleteParametersCommand, GetParametersByPathCommand, GetParametersByPathResult, SSMClient } from '@aws-sdk/client-ssm'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; jest.mock('../../../aws-utils/aws-ssm'); @@ -25,37 +27,34 @@ const contextStub = { }, }, }; +const mockSSMClient = mockClient(SSMClient); describe('parameters-delete-handler', () => { + beforeEach(() => { + mockSSMClient.reset(); + }); it('check if returned function is called once with correct paramater', async () => { - const deleteParametersPromiseMock = jest.fn().mockImplementation(() => Promise.resolve()); - const deleteParametersMock = jest.fn().mockImplementation(() => ({ promise: deleteParametersPromiseMock })); - - const mockGetParamatersReturnedObject: SSMType.GetParametersByPathResult = { + const mockGetParamatersReturnedObject: GetParametersByPathResult = { Parameters: keys.map((key) => { return { Name: key }; }), }; - const getParametersByPathPromiseMock = jest.fn().mockImplementation(() => Promise.resolve(mockGetParamatersReturnedObject)); - const getParametersByPathMock = jest.fn().mockImplementation(() => ({ promise: getParametersByPathPromiseMock })); const mockSSM = SSM as jest.Mocked; mockSSM.getInstance = jest.fn().mockResolvedValue({ - client: { - deleteParameters: deleteParametersMock, - getParametersByPath: getParametersByPathMock, - }, + client: mockSSMClient as unknown as SSMClient, }); + mockSSMClient.on(DeleteParametersCommand).resolvesOnce({}); + mockSSMClient.on(GetParametersByPathCommand).resolvesOnce(mockGetParamatersReturnedObject); + await deleteEnvironmentParametersFromService(contextStub as unknown as $TSContext, envName); - expect(deleteParametersPromiseMock).toBeCalledTimes(1); - expect(deleteParametersMock).toBeCalledTimes(1); + expect(mockSSMClient).toHaveReceivedCommandTimes(DeleteParametersCommand, 1); const expectedDeleteParamater = getSsmSdkParametersDeleteParameters(expectedKeys); - expect(deleteParametersMock).toBeCalledWith(expectedDeleteParamater); + expect(mockSSMClient).toHaveReceivedCommandWith(DeleteParametersCommand, expectedDeleteParamater); - expect(getParametersByPathPromiseMock).toBeCalledTimes(1); - expect(getParametersByPathMock).toBeCalledTimes(1); + expect(mockSSMClient).toHaveReceivedCommandTimes(GetParametersByPathCommand, 1); const expectedGetParamater = getSsmSdkParametersGetParametersByPath(fakeAppId, envName); - expect(getParametersByPathMock).toBeCalledWith(expectedGetParamater); + expect(mockSSMClient).toHaveReceivedCommandWith(GetParametersByPathCommand, expectedGetParamater); }); }); diff --git a/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts b/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts index aac7736eb90..122d611d1b4 100644 --- a/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts +++ b/packages/amplify-provider-awscloudformation/src/permissions-boundary/permissions-boundary.ts @@ -140,7 +140,7 @@ const isPolicyAccessible = async (context: $TSContext, policyArn: string) => { await iamClient.client.send(new GetPolicyCommand({ PolicyArn: policyArn })); } catch (err) { // NoSuchEntity error - if (err?.statusCode === 404) { + if (err?.name.includes('NoSuchEntity')) { return false; } // if it's some other error (such as client credentials don't have getPolicy permissions, or network error) From 953656f8506d4d666e6e0bec50b3b887e93889be Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 18 Jul 2025 13:11:19 -0700 Subject: [PATCH 13/13] fix: lint, api, yarn --- .../amplify-provider-awscloudformation/API.md | 5 +- .../package.json | 1 + packages/amplify-util-import/API.md | 9 +- yarn.lock | 507 +----------------- 4 files changed, 34 insertions(+), 488 deletions(-) diff --git a/packages/amplify-provider-awscloudformation/API.md b/packages/amplify-provider-awscloudformation/API.md index 85fee4b01ae..b9ea4d882ee 100644 --- a/packages/amplify-provider-awscloudformation/API.md +++ b/packages/amplify-provider-awscloudformation/API.md @@ -7,10 +7,11 @@ import { $TSAny } from '@aws-amplify/amplify-cli-core'; import { $TSContext } from '@aws-amplify/amplify-cli-core'; import { $TSObject } from '@aws-amplify/amplify-cli-core'; -import * as AWS_2 from 'aws-sdk'; import { CognitoIdentityProviderClient } from '@aws-sdk/client-cognito-identity-provider'; import { IAmplifyResource } from '@aws-amplify/amplify-cli-core'; import { LocationClient } from '@aws-sdk/client-location'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; +import { SSMClient } from '@aws-sdk/client-ssm'; import { Template } from '@aws-amplify/amplify-cli-core'; // @public (undocumented) @@ -26,6 +27,8 @@ export interface AwsSdkConfig { // (undocumented) region: string; // (undocumented) + requestHandler?: NodeHttpHandler; + // (undocumented) secretAccessKey: string; // (undocumented) sessionToken?: string; diff --git a/packages/amplify-provider-awscloudformation/package.json b/packages/amplify-provider-awscloudformation/package.json index c824226774b..609660e1dcb 100644 --- a/packages/amplify-provider-awscloudformation/package.json +++ b/packages/amplify-provider-awscloudformation/package.json @@ -68,6 +68,7 @@ "amplify-codegen": "^4.10.3", "archiver": "^7.0.1", "aws-cdk-lib": "~2.189.1", + "aws-sdk": "^2.1464.0", "bottleneck": "2.19.5", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", diff --git a/packages/amplify-util-import/API.md b/packages/amplify-util-import/API.md index 9fc18e2a0e1..f8476c591b1 100644 --- a/packages/amplify-util-import/API.md +++ b/packages/amplify-util-import/API.md @@ -4,13 +4,12 @@ ```ts -import { Buckets } from 'aws-sdk/clients/s3'; +import { Bucket } from '@aws-sdk/client-s3'; import { GetUserPoolMfaConfigResponse } from '@aws-sdk/client-cognito-identity-provider'; import { IdentityPool } from '@aws-sdk/client-cognito-identity'; import { IdentityPoolShortDescription } from '@aws-sdk/client-cognito-identity'; import { IdentityProviderType } from '@aws-sdk/client-cognito-identity-provider'; -import { TableDescription } from 'aws-sdk/clients/dynamodb'; -import { TableName } from 'aws-sdk/clients/dynamodb'; +import { TableDescription } from '@aws-sdk/client-dynamodb'; import { UserPoolClientType } from '@aws-sdk/client-cognito-identity-provider'; import { UserPoolDescriptionType } from '@aws-sdk/client-cognito-identity-provider'; import { UserPoolType } from '@aws-sdk/client-cognito-identity-provider'; @@ -34,7 +33,7 @@ export interface IDynamoDBService { // (undocumented) getTableDetails(tableName: string): Promise; // (undocumented) - listTables(): Promise; + listTables(): Promise; // (undocumented) tableExists(tableName: string): Promise; } @@ -61,7 +60,7 @@ export interface IS3Service { // (undocumented) getBucketLocation(bucketName: string): Promise; // (undocumented) - listBuckets(): Promise; + listBuckets(): Promise; } // (No @packageDocumentation comment for this package) diff --git a/yarn.lock b/yarn.lock index a4a59a219d1..ac1fc398e32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -848,6 +848,7 @@ __metadata: amplify-codegen: ^4.10.3 archiver: ^7.0.1 aws-cdk-lib: ~2.189.1 + aws-sdk: ^2.1464.0 aws-sdk-client-mock: ^4.1.0 aws-sdk-client-mock-jest: ^4.1.0 bottleneck: 2.19.5 @@ -2487,7 +2488,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.844.0": +"@aws-sdk/client-cognito-identity@npm:3.844.0, @aws-sdk/client-cognito-identity@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-cognito-identity@npm:3.844.0" dependencies: @@ -2534,53 +2535,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:^3.624.0": - version: 3.830.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.830.0" - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.826.0 - "@aws-sdk/credential-provider-node": 3.830.0 - "@aws-sdk/middleware-host-header": 3.821.0 - "@aws-sdk/middleware-logger": 3.821.0 - "@aws-sdk/middleware-recursion-detection": 3.821.0 - "@aws-sdk/middleware-user-agent": 3.828.0 - "@aws-sdk/region-config-resolver": 3.821.0 - "@aws-sdk/types": 3.821.0 - "@aws-sdk/util-endpoints": 3.828.0 - "@aws-sdk/util-user-agent-browser": 3.821.0 - "@aws-sdk/util-user-agent-node": 3.828.0 - "@smithy/config-resolver": ^4.1.4 - "@smithy/core": ^3.5.3 - "@smithy/fetch-http-handler": ^5.0.4 - "@smithy/hash-node": ^4.0.4 - "@smithy/invalid-dependency": ^4.0.4 - "@smithy/middleware-content-length": ^4.0.4 - "@smithy/middleware-endpoint": ^4.1.11 - "@smithy/middleware-retry": ^4.1.12 - "@smithy/middleware-serde": ^4.0.8 - "@smithy/middleware-stack": ^4.0.4 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/node-http-handler": ^4.0.6 - "@smithy/protocol-http": ^5.1.2 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - "@smithy/url-parser": ^4.0.4 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-body-length-node": ^4.0.0 - "@smithy/util-defaults-mode-browser": ^4.0.19 - "@smithy/util-defaults-mode-node": ^4.0.19 - "@smithy/util-endpoints": ^3.0.6 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-retry": ^4.0.5 - "@smithy/util-utf8": ^4.0.0 - tslib: ^2.6.2 - checksum: 17b234e5cd5090acb0e84f934cef1435cb078c6e74c0c6f328ea248229fee841912e5a076d00819c212006e8d5fe269a3b19c5b3829fc8f4ec3e5ee93b4135dd - languageName: node - linkType: hard - "@aws-sdk/client-comprehend@npm:3.6.1": version: 3.6.1 resolution: "@aws-sdk/client-comprehend@npm:3.6.1" @@ -3771,73 +3725,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.25.0, @aws-sdk/client-s3@npm:^3.624.0": - version: 3.832.0 - resolution: "@aws-sdk/client-s3@npm:3.832.0" - dependencies: - "@aws-crypto/sha1-browser": 5.2.0 - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.826.0 - "@aws-sdk/credential-provider-node": 3.830.0 - "@aws-sdk/middleware-bucket-endpoint": 3.830.0 - "@aws-sdk/middleware-expect-continue": 3.821.0 - "@aws-sdk/middleware-flexible-checksums": 3.826.0 - "@aws-sdk/middleware-host-header": 3.821.0 - "@aws-sdk/middleware-location-constraint": 3.821.0 - "@aws-sdk/middleware-logger": 3.821.0 - "@aws-sdk/middleware-recursion-detection": 3.821.0 - "@aws-sdk/middleware-sdk-s3": 3.826.0 - "@aws-sdk/middleware-ssec": 3.821.0 - "@aws-sdk/middleware-user-agent": 3.828.0 - "@aws-sdk/region-config-resolver": 3.821.0 - "@aws-sdk/signature-v4-multi-region": 3.826.0 - "@aws-sdk/types": 3.821.0 - "@aws-sdk/util-endpoints": 3.828.0 - "@aws-sdk/util-user-agent-browser": 3.821.0 - "@aws-sdk/util-user-agent-node": 3.828.0 - "@aws-sdk/xml-builder": 3.821.0 - "@smithy/config-resolver": ^4.1.4 - "@smithy/core": ^3.5.3 - "@smithy/eventstream-serde-browser": ^4.0.4 - "@smithy/eventstream-serde-config-resolver": ^4.1.2 - "@smithy/eventstream-serde-node": ^4.0.4 - "@smithy/fetch-http-handler": ^5.0.4 - "@smithy/hash-blob-browser": ^4.0.4 - "@smithy/hash-node": ^4.0.4 - "@smithy/hash-stream-node": ^4.0.4 - "@smithy/invalid-dependency": ^4.0.4 - "@smithy/md5-js": ^4.0.4 - "@smithy/middleware-content-length": ^4.0.4 - "@smithy/middleware-endpoint": ^4.1.11 - "@smithy/middleware-retry": ^4.1.12 - "@smithy/middleware-serde": ^4.0.8 - "@smithy/middleware-stack": ^4.0.4 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/node-http-handler": ^4.0.6 - "@smithy/protocol-http": ^5.1.2 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - "@smithy/url-parser": ^4.0.4 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-body-length-node": ^4.0.0 - "@smithy/util-defaults-mode-browser": ^4.0.19 - "@smithy/util-defaults-mode-node": ^4.0.19 - "@smithy/util-endpoints": ^3.0.6 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-retry": ^4.0.5 - "@smithy/util-stream": ^4.2.2 - "@smithy/util-utf8": ^4.0.0 - "@smithy/util-waiter": ^4.0.5 - "@types/uuid": ^9.0.1 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: fc115d6cff56f6cbaf88e6c6d3c9ee57dea449222a96f9acc1397e982799d88303871f11d8d4e422d65ea44fe8dcf3ba96b32c8d5d8d18a1e1b2fd59cfbd73e4 - languageName: node - linkType: hard - -"@aws-sdk/client-s3@npm:^3.515.0": +"@aws-sdk/client-s3@npm:^3.25.0, @aws-sdk/client-s3@npm:^3.515.0, @aws-sdk/client-s3@npm:^3.624.0": version: 3.844.0 resolution: "@aws-sdk/client-s3@npm:3.844.0" dependencies: @@ -5870,21 +5758,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.830.0": - version: 3.830.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.830.0" - dependencies: - "@aws-sdk/types": 3.821.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/protocol-http": ^5.1.2 - "@smithy/types": ^4.3.1 - "@smithy/util-config-provider": ^4.0.0 - tslib: ^2.6.2 - checksum: bfcefaeaff1bf4819860838f9af3d6ba9ee90f1488f98c1193607d045b1a1db8845bc3c2e1a22f9833f41a53f009c084adff34fb7048acac0f041186ee7172c1 - languageName: node - linkType: hard - "@aws-sdk/middleware-bucket-endpoint@npm:3.840.0": version: 3.840.0 resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.840.0" @@ -5973,18 +5846,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.821.0": - version: 3.821.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.821.0" - dependencies: - "@aws-sdk/types": 3.821.0 - "@smithy/protocol-http": ^5.1.2 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: baf1b95b29184b642bbdc915ad2504aeaa9c78e9727cee2b1d0a513a7f1ebcbee7687dceb080424da3255990393a126154a58494a67c0b291034f481f69e9130 - languageName: node - linkType: hard - "@aws-sdk/middleware-expect-continue@npm:3.840.0": version: 3.840.0 resolution: "@aws-sdk/middleware-expect-continue@npm:3.840.0" @@ -6013,27 +5874,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.826.0": - version: 3.826.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.826.0" - dependencies: - "@aws-crypto/crc32": 5.2.0 - "@aws-crypto/crc32c": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/core": 3.826.0 - "@aws-sdk/types": 3.821.0 - "@smithy/is-array-buffer": ^4.0.0 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/protocol-http": ^5.1.2 - "@smithy/types": ^4.3.1 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-stream": ^4.2.2 - "@smithy/util-utf8": ^4.0.0 - tslib: ^2.6.2 - checksum: a9473378c0dcac89c65f2c6252d4d0b3062e2eeb6c4b9cdb545a3ce7e8430b6a9439b2ff7006521fe44dd5a5ab96bc98aa5caf7746211750e41956256ff14067 - languageName: node - linkType: hard - "@aws-sdk/middleware-flexible-checksums@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.844.0" @@ -6124,17 +5964,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-location-constraint@npm:3.821.0": - version: 3.821.0 - resolution: "@aws-sdk/middleware-location-constraint@npm:3.821.0" - dependencies: - "@aws-sdk/types": 3.821.0 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: 4266e9cdd9d137ce7d55a6397cfffbbd931dbcf0790ea47e2618f6751f6740c85d7eb339654da3a5e24284eece1f39fc87318d5fba4eece1e6cf72291784869c - languageName: node - linkType: hard - "@aws-sdk/middleware-location-constraint@npm:3.840.0": version: 3.840.0 resolution: "@aws-sdk/middleware-location-constraint@npm:3.840.0" @@ -6366,28 +6195,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.826.0": - version: 3.826.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.826.0" - dependencies: - "@aws-sdk/core": 3.826.0 - "@aws-sdk/types": 3.821.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/core": ^3.5.3 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/protocol-http": ^5.1.2 - "@smithy/signature-v4": ^5.1.2 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - "@smithy/util-config-provider": ^4.0.0 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-stream": ^4.2.2 - "@smithy/util-utf8": ^4.0.0 - tslib: ^2.6.2 - checksum: 8c964dbf7c909541978d36bdcfb952cacd99cd227c8dae0eacda24ce992dc8b4ce666cfd1d29e42465c2701b3f0198c77ee4300bbbaf43a4998da6f6cafa2cc3 - languageName: node - linkType: hard - "@aws-sdk/middleware-sdk-s3@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/middleware-sdk-s3@npm:3.844.0" @@ -6481,17 +6288,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-ssec@npm:3.821.0": - version: 3.821.0 - resolution: "@aws-sdk/middleware-ssec@npm:3.821.0" - dependencies: - "@aws-sdk/types": 3.821.0 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: 12194b3ab9c4e85a9af5e9531c218c5b7970153569a5bb5a6123c3281ce1ccb1a6eff0e0666f3711e491246e39c0242dd931f35df0459f1cbcdedd65ed66627c - languageName: node - linkType: hard - "@aws-sdk/middleware-ssec@npm:3.840.0": version: 3.840.0 resolution: "@aws-sdk/middleware-ssec@npm:3.840.0" @@ -7037,20 +6833,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.826.0": - version: 3.826.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.826.0" - dependencies: - "@aws-sdk/middleware-sdk-s3": 3.826.0 - "@aws-sdk/types": 3.821.0 - "@smithy/protocol-http": ^5.1.2 - "@smithy/signature-v4": ^5.1.2 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: 24b3e33bdd6d2674319121b563d69d57b7ce8091f67f8195bb9606cb4e061b713e1c9f30258d518840c2e3bf2887839db0a3832b6d622bc3a833cbe8ddde7b28 - languageName: node - linkType: hard - "@aws-sdk/signature-v4-multi-region@npm:3.844.0": version: 3.844.0 resolution: "@aws-sdk/signature-v4-multi-region@npm:3.844.0" @@ -7874,18 +7656,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.8.3": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" - dependencies: - "@babel/helper-validator-identifier": ^7.25.9 - js-tokens: ^4.0.0 - picocolors: ^1.0.0 - checksum: 7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.27.1": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.8.3": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" dependencies: @@ -8189,14 +7960,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.27.1": +"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-identifier@npm:7.27.1" checksum: c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 @@ -12025,24 +11789,7 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.5.3": - version: 3.5.3 - resolution: "@smithy/core@npm:3.5.3" - dependencies: - "@smithy/middleware-serde": ^4.0.8 - "@smithy/protocol-http": ^5.1.2 - "@smithy/types": ^4.3.1 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-body-length-browser": ^4.0.0 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-stream": ^4.2.2 - "@smithy/util-utf8": ^4.0.0 - tslib: ^2.6.2 - checksum: ba4bce5c58a93467e52cb9362dbdc8c8aa120dfbc5333e911c8aadcbbcd236054126277eff9f970bfc24a918f44e929a4116e4533644811ad83f44c7abc81766 - languageName: node - linkType: hard - -"@smithy/core@npm:^3.7.0": +"@smithy/core@npm:^3.5.3, @smithy/core@npm:^3.7.0": version: 3.7.0 resolution: "@smithy/core@npm:3.7.0" dependencies: @@ -12221,20 +11968,7 @@ __metadata: languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.4": - version: 5.0.4 - resolution: "@smithy/fetch-http-handler@npm:5.0.4" - dependencies: - "@smithy/protocol-http": ^5.1.2 - "@smithy/querystring-builder": ^4.0.4 - "@smithy/types": ^4.3.1 - "@smithy/util-base64": ^4.0.0 - tslib: ^2.6.2 - checksum: ce57acfcd40a6ff3965c5f14b432c5ab87f0b0766766960224d4af79af85e37d61da2db6dc5cfa16bf4b8f2d8966a2838d2ee6eef8d5cd5a837aacbc01517851 - languageName: node - linkType: hard - -"@smithy/fetch-http-handler@npm:^5.1.0": +"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.1.0": version: 5.1.0 resolution: "@smithy/fetch-http-handler@npm:5.1.0" dependencies: @@ -12424,23 +12158,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.11": - version: 4.1.11 - resolution: "@smithy/middleware-endpoint@npm:4.1.11" - dependencies: - "@smithy/core": ^3.5.3 - "@smithy/middleware-serde": ^4.0.8 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/shared-ini-file-loader": ^4.0.4 - "@smithy/types": ^4.3.1 - "@smithy/url-parser": ^4.0.4 - "@smithy/util-middleware": ^4.0.4 - tslib: ^2.6.2 - checksum: 28420a3b8b42655e29a005d2de14348082fd472c008bee2d135aa0907772678961bf74a631dc583e136f4819936aa495c80fbcca5079cadfd1800bb6ab391110 - languageName: node - linkType: hard - -"@smithy/middleware-endpoint@npm:^4.1.14, @smithy/middleware-endpoint@npm:^4.1.15": +"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.1.14, @smithy/middleware-endpoint@npm:^4.1.15": version: 4.1.15 resolution: "@smithy/middleware-endpoint@npm:4.1.15" dependencies: @@ -12473,24 +12191,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-retry@npm:^4.1.12": - version: 4.1.12 - resolution: "@smithy/middleware-retry@npm:4.1.12" - dependencies: - "@smithy/node-config-provider": ^4.1.3 - "@smithy/protocol-http": ^5.1.2 - "@smithy/service-error-classification": ^4.0.5 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - "@smithy/util-middleware": ^4.0.4 - "@smithy/util-retry": ^4.0.5 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 7cd2ee73003423d0857a458db64ce0d9d484c8f4b669a8b33c866ee4fdbbc199e85a53f729a76d7f0874e771fb7f9b95ad151af443573588e15e9ecac1f38fbe - languageName: node - linkType: hard - -"@smithy/middleware-retry@npm:^4.1.15, @smithy/middleware-retry@npm:^4.1.16": +"@smithy/middleware-retry@npm:^4.1.12, @smithy/middleware-retry@npm:^4.1.15, @smithy/middleware-retry@npm:^4.1.16": version: 4.1.16 resolution: "@smithy/middleware-retry@npm:4.1.16" dependencies: @@ -12585,20 +12286,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.6": - version: 4.0.6 - resolution: "@smithy/node-http-handler@npm:4.0.6" - dependencies: - "@smithy/abort-controller": ^4.0.4 - "@smithy/protocol-http": ^5.1.2 - "@smithy/querystring-builder": ^4.0.4 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: bde23701b6166b76958cbc194d551a139e3dcc1d05a6c7de3d5b14f54934ca5a49a28d13d8ec4b012716aae816cd0c8c4735c959d5ef697a7a1932fbcfc5d7f2 - languageName: node - linkType: hard - -"@smithy/node-http-handler@npm:^4.1.0": +"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/node-http-handler@npm:4.1.0" dependencies: @@ -12702,15 +12390,6 @@ __metadata: languageName: node linkType: hard -"@smithy/service-error-classification@npm:^4.0.5": - version: 4.0.5 - resolution: "@smithy/service-error-classification@npm:4.0.5" - dependencies: - "@smithy/types": ^4.3.1 - checksum: 9ca6a876a403fa15151d955ef43c7b4e8c3a93b334d493ab7086d095bcd8670b848779bb82be66b2a14423edf169f1be514ec381f71d2d78f0612731416911ac - languageName: node - linkType: hard - "@smithy/service-error-classification@npm:^4.0.6": version: 4.0.6 resolution: "@smithy/service-error-classification@npm:4.0.6" @@ -12787,22 +12466,7 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.3": - version: 4.4.3 - resolution: "@smithy/smithy-client@npm:4.4.3" - dependencies: - "@smithy/core": ^3.5.3 - "@smithy/middleware-endpoint": ^4.1.11 - "@smithy/middleware-stack": ^4.0.4 - "@smithy/protocol-http": ^5.1.2 - "@smithy/types": ^4.3.1 - "@smithy/util-stream": ^4.2.2 - tslib: ^2.6.2 - checksum: 37f69c4af3883525cebe4ea648b05cd93de01742d7206e7613e65ec15f3bd06874b0d923a6ccfbdc3b7e01a2cb6dc6c961f7590f984eea4e55c68871dfb3b11a - languageName: node - linkType: hard - -"@smithy/smithy-client@npm:^4.4.6, @smithy/smithy-client@npm:^4.4.7": +"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.4.6, @smithy/smithy-client@npm:^4.4.7": version: 4.4.7 resolution: "@smithy/smithy-client@npm:4.4.7" dependencies: @@ -12976,20 +12640,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^4.0.19": - version: 4.0.19 - resolution: "@smithy/util-defaults-mode-browser@npm:4.0.19" - dependencies: - "@smithy/property-provider": ^4.0.4 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - bowser: ^2.11.0 - tslib: ^2.6.2 - checksum: 05998cf1481f1bc2467f2fba571faa9ebcaeb1cf58d5c411a1096320068a9467b100ee2491eb1d56458d56d723a0b28711a975fb186df60bf3165d2d8aa6a678 - languageName: node - linkType: hard - -"@smithy/util-defaults-mode-browser@npm:^4.0.22, @smithy/util-defaults-mode-browser@npm:^4.0.23": +"@smithy/util-defaults-mode-browser@npm:^4.0.19, @smithy/util-defaults-mode-browser@npm:^4.0.22, @smithy/util-defaults-mode-browser@npm:^4.0.23": version: 4.0.23 resolution: "@smithy/util-defaults-mode-browser@npm:4.0.23" dependencies: @@ -13017,22 +12668,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^4.0.19": - version: 4.0.19 - resolution: "@smithy/util-defaults-mode-node@npm:4.0.19" - dependencies: - "@smithy/config-resolver": ^4.1.4 - "@smithy/credential-provider-imds": ^4.0.6 - "@smithy/node-config-provider": ^4.1.3 - "@smithy/property-provider": ^4.0.4 - "@smithy/smithy-client": ^4.4.3 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: e12adbad9efa9f5604beb356d7b84de62df47cea6535e9835987a764c28602e341ea4909cd08daef6c0627bbcb921725bca524664ac00eb78ac27efbd0e924dd - languageName: node - linkType: hard - -"@smithy/util-defaults-mode-node@npm:^4.0.22, @smithy/util-defaults-mode-node@npm:^4.0.23": +"@smithy/util-defaults-mode-node@npm:^4.0.19, @smithy/util-defaults-mode-node@npm:^4.0.22, @smithy/util-defaults-mode-node@npm:^4.0.23": version: 4.0.23 resolution: "@smithy/util-defaults-mode-node@npm:4.0.23" dependencies: @@ -13118,18 +12754,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-retry@npm:^4.0.5": - version: 4.0.5 - resolution: "@smithy/util-retry@npm:4.0.5" - dependencies: - "@smithy/service-error-classification": ^4.0.5 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: 8e6c136f79c503c02e28b31bc43fce7a37282143c20aee13d2a7421b0502d5c478f2eb3cf3c3455739ed9e441e572e2725bf39339aa08ed53825129123dcfff0 - languageName: node - linkType: hard - -"@smithy/util-retry@npm:^4.0.6": +"@smithy/util-retry@npm:^4.0.5, @smithy/util-retry@npm:^4.0.6": version: 4.0.6 resolution: "@smithy/util-retry@npm:4.0.6" dependencies: @@ -13156,23 +12781,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/util-stream@npm:4.2.2" - dependencies: - "@smithy/fetch-http-handler": ^5.0.4 - "@smithy/node-http-handler": ^4.0.6 - "@smithy/types": ^4.3.1 - "@smithy/util-base64": ^4.0.0 - "@smithy/util-buffer-from": ^4.0.0 - "@smithy/util-hex-encoding": ^4.0.0 - "@smithy/util-utf8": ^4.0.0 - tslib: ^2.6.2 - checksum: 5e4ef783e41185d291a72e8503d02fd5a5f7bd23f3d30198f3d738c0f27dd6d7ea131fe6fbe36a6ac69b8bd4207f7dfc75a15329764e6aa52f62c45bc5442619 - languageName: node - linkType: hard - -"@smithy/util-stream@npm:^4.2.3": +"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.2.3": version: 4.2.3 resolution: "@smithy/util-stream@npm:4.2.3" dependencies: @@ -13247,17 +12856,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^4.0.5": - version: 4.0.5 - resolution: "@smithy/util-waiter@npm:4.0.5" - dependencies: - "@smithy/abort-controller": ^4.0.4 - "@smithy/types": ^4.3.1 - tslib: ^2.6.2 - checksum: c53b4ae929d37d8d8b3629b0c91005d48c8f788257eccbfb62b3b7f7a670934d8a44556456289c4a0a5fde957d87162c36318184b5e2df154deeeabe97bfd4b4 - languageName: node - linkType: hard - "@smithy/util-waiter@npm:^4.0.6": version: 4.0.6 resolution: "@smithy/util-waiter@npm:4.0.6" @@ -13954,14 +13552,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.3 - resolution: "@types/istanbul-lib-coverage@npm:2.0.3" - checksum: 820d093eed629844074ae6b94b7d131eb0aacf33b9c952488d20ccab9dadf1376dbb33a461960ace5bc58208b5fac3ff5991283e9bf07914150998ebdfb0115e - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:^2.0.6": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 @@ -13977,16 +13568,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: e147f0db9346a0cae9a359220bc76f7c78509fb6979a2597feb24d64b6e8328d2d26f9d152abbd59c6bca721e4ea2530af20116d01df50815efafd1e151fd777 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.4": +"@types/istanbul-reports@npm:^3.0.0, @types/istanbul-reports@npm:^3.0.4": version: 3.0.4 resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: @@ -14333,14 +13915,7 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 3327ee919a840ffe907bbd5c1d07dfd79137dd9732d2d466cf717ceec5bb21f66296173c53bb56cff95fae4185b9cd6770df3e9745fe4ba528bbc4975f54d13f - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.3": +"@types/stack-utils@npm:^2.0.0, @types/stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" checksum: 1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c @@ -14498,16 +14073,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17, @types/yargs@npm:^17.0.8": - version: 17.0.24 - resolution: "@types/yargs@npm:17.0.24" - dependencies: - "@types/yargs-parser": "*" - checksum: fbebf57e1d04199e5e7eb0c67a402566fa27177ee21140664e63da826408793d203d262b48f8f41d4a7665126393d2e952a463e960e761226def247d9bbcdbd0 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.33": +"@types/yargs@npm:^17, @types/yargs@npm:^17.0.33, @types/yargs@npm:^17.0.8": version: 17.0.33 resolution: "@types/yargs@npm:17.0.33" dependencies: @@ -17744,14 +17310,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0": - version: 4.2.0 - resolution: "ci-info@npm:4.2.0" - checksum: 37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058 - languageName: node - linkType: hard - -"ci-info@npm:^4.2.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.2.0": version: 4.3.0 resolution: "ci-info@npm:4.3.0" checksum: 60d3dfe95d75c01454ec1cfd5108617dd598a28a2a3e148bd7e1523c1c208b5f5a3007cafcbe293e6fd0a5a310cc32217c5dc54743eeabc0a2bec80072fc055c @@ -30212,10 +29771,10 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.8.6 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 +"react-is@npm:^16.8.6 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 languageName: node linkType: hard @@ -30226,13 +29785,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.3.1": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - "react-native-get-random-values@npm:^1.4.0": version: 1.7.1 resolution: "react-native-get-random-values@npm:1.7.1" @@ -32012,16 +31564,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: 059f828eed5b03b963e8200529c27bd92b105f2cac9dffc9edcbc739ea8fa108e4ec45d0da257d8e0f7b5ac98db5643a0787e5c25ceab1396f7123e1ee15a086 - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.6": +"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: