From 98a384c414e9fd7f5d19f40f0e2d49a58f715b0b Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 17 Sep 2025 16:23:01 -0400 Subject: [PATCH 01/51] chore: removed v2 from packages that don't use it --- packages/amplify-environment-parameters/package.json | 1 - packages/amplify-opensearch-simulator/package.json | 1 - packages/amplify-storage-simulator/package.json | 3 +-- yarn.lock | 3 --- 4 files changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/amplify-environment-parameters/package.json b/packages/amplify-environment-parameters/package.json index dc883b6c7e4..25ca81b43fd 100644 --- a/packages/amplify-environment-parameters/package.json +++ b/packages/amplify-environment-parameters/package.json @@ -32,7 +32,6 @@ "lodash": "^4.17.21" }, "devDependencies": { - "aws-sdk": "^2.1464.0", "mkdirp": "^1.0.4", "ts-json-schema-generator": "~1.1.2" }, diff --git a/packages/amplify-opensearch-simulator/package.json b/packages/amplify-opensearch-simulator/package.json index 7a432e15afc..c5534845c20 100644 --- a/packages/amplify-opensearch-simulator/package.json +++ b/packages/amplify-opensearch-simulator/package.json @@ -27,7 +27,6 @@ "dependencies": { "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-prompts": "2.8.7", - "aws-sdk": "^2.1464.0", "detect-port": "^1.3.0", "execa": "^5.1.1", "fs-extra": "^8.1.0", diff --git a/packages/amplify-storage-simulator/package.json b/packages/amplify-storage-simulator/package.json index 2053171a9ca..0da7bde7b9f 100644 --- a/packages/amplify-storage-simulator/package.json +++ b/packages/amplify-storage-simulator/package.json @@ -43,8 +43,7 @@ "@types/glob": "^7.1.1", "@types/serve-static": "^1.13.3", "@types/uuid": "^8.3.1", - "@types/xml": "^1.0.4", - "aws-sdk": "^2.1464.0" + "@types/xml": "^1.0.4" }, "berry": { "plugins": [ diff --git a/yarn.lock b/yarn.lock index 3c1cc0e72e7..447b1254ab9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -567,7 +567,6 @@ __metadata: dependencies: "@aws-amplify/amplify-cli-core": 4.4.2 ajv: ^6.12.6 - aws-sdk: ^2.1464.0 lodash: ^4.17.21 mkdirp: ^1.0.4 ts-json-schema-generator: ~1.1.2 @@ -771,7 +770,6 @@ __metadata: "@aws-amplify/amplify-prompts": 2.8.7 "@types/node": ^12.12.6 "@types/openpgp": ^4.4.19 - aws-sdk: ^2.1464.0 detect-port: ^1.3.0 execa: ^5.1.1 fs-extra: ^8.1.0 @@ -13210,7 +13208,6 @@ __metadata: "@types/serve-static": ^1.13.3 "@types/uuid": ^8.3.1 "@types/xml": ^1.0.4 - aws-sdk: ^2.1464.0 body-parser: ^1.19.2 cors: ^2.8.5 etag: ^1.8.1 From a7ed5bb022f13374822bdbb370c60b09d0d87b15 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 17 Sep 2025 16:45:43 -0400 Subject: [PATCH 02/51] refactor: update amplify-cli, amplify-console-integ-tests, and amplify-dynamodb-sim --- packages/amplify-cli/package.json | 2 +- packages/amplify-cli/src/commands/logout.ts | 6 +- .../package.json | 3 +- .../pullAndInit/amplifyConsoleOperations.ts | 43 +- packages/amplify-dynamodb-simulator/index.js | 10 +- .../amplify-dynamodb-simulator/package.json | 2 +- yarn.lock | 1025 ++++++++++++++++- 7 files changed, 1060 insertions(+), 31 deletions(-) diff --git a/packages/amplify-cli/package.json b/packages/amplify-cli/package.json index 520a428a9f7..c7a59229b76 100644 --- a/packages/amplify-cli/package.json +++ b/packages/amplify-cli/package.json @@ -66,6 +66,7 @@ "@aws-amplify/amplify-util-mock": "5.10.17", "@aws-amplify/amplify-util-uibuilder": "1.14.20", "@aws-cdk/cloudformation-diff": "~2.68.0", + "@aws-sdk/client-cognito-identity-provider": "^3.624.0", "amplify-codegen": "^4.10.3", "amplify-dotnet-function-runtime-provider": "2.1.5", "amplify-go-function-runtime-provider": "2.3.52", @@ -74,7 +75,6 @@ "amplify-nodejs-function-runtime-provider": "2.5.30", "amplify-python-function-runtime-provider": "2.4.52", "aws-cdk-lib": "~2.189.1", - "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "ci-info": "^3.8.0", "cli-table3": "^0.6.0", diff --git a/packages/amplify-cli/src/commands/logout.ts b/packages/amplify-cli/src/commands/logout.ts index 3b8f41fdcdd..c33ad1011a1 100644 --- a/packages/amplify-cli/src/commands/logout.ts +++ b/packages/amplify-cli/src/commands/logout.ts @@ -1,7 +1,7 @@ import { stateManager } from '@aws-amplify/amplify-cli-core'; import { printer, prompter } from '@aws-amplify/amplify-prompts'; import { Context } from '../domain/context'; -import { CognitoIdentityServiceProvider } from 'aws-sdk'; +import { CognitoIdentityProviderClient, GlobalSignOutCommand } from '@aws-sdk/client-cognito-identity-provider'; export const run = async (context: Context) => { const { appId } = context.parameters.options; @@ -20,9 +20,9 @@ export const run = async (context: Context) => { const useGlobalSignOut = await prompter.yesOrNo('Do you want to logout from all sessions?'); if (useGlobalSignOut) { - const cognitoISP = new CognitoIdentityServiceProvider({ region: amplifyAdminConfig.region }); + const cognitoISP = new CognitoIdentityProviderClient({ region: amplifyAdminConfig.region }); try { - await cognitoISP.globalSignOut(amplifyAdminConfig.accessToken.jwtToken); + await cognitoISP.send(new GlobalSignOutCommand({ AccessToken: amplifyAdminConfig.accessToken.jwtToken })); printer.info('Logged out globally.'); } catch (e) { printer.error(`An error occurred during logout: ${e.message}`); diff --git a/packages/amplify-console-integration-tests/package.json b/packages/amplify-console-integration-tests/package.json index 2fc59d70c22..500aed47454 100644 --- a/packages/amplify-console-integration-tests/package.json +++ b/packages/amplify-console-integration-tests/package.json @@ -23,8 +23,9 @@ "dependencies": { "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-e2e-core": "5.7.5", + "@aws-sdk/client-amplify": "^3.624.0", + "@aws-sdk/client-cloudformation": "^3.624.0", "@types/ini": "^1.3.30", - "aws-sdk": "^2.1464.0", "dotenv": "^8.2.0", "execa": "^5.1.1", "fs-extra": "^8.1.0", diff --git a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts index e76178b2958..2085a65ef0a 100644 --- a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts +++ b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts @@ -1,20 +1,27 @@ -import { Amplify, CloudFormation } from 'aws-sdk'; +import { + AmplifyClient, + ListAppsCommand, + DeleteAppCommand, + CreateAppCommand, + CreateBackendEnvironmentCommand, +} from '@aws-sdk/client-amplify'; +import { CloudFormationClient, DeleteStackCommand } from '@aws-sdk/client-cloudformation'; import moment from 'moment'; import { getConfigFromProfile } from '../profile-helper'; export function getConfiguredAmplifyClient() { const config = getConfigFromProfile(); - return new Amplify(config); + return new AmplifyClient(config); } export function getConfiguredCFNClient() { const config = getConfigFromProfile(); - return new CloudFormation(config); + return new CloudFormationClient(config); } //delete all existing amplify console projects -export async function deleteAllAmplifyProjects(amplifyClient?: Amplify) { +export async function deleteAllAmplifyProjects(amplifyClient?: AmplifyClient) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -24,29 +31,29 @@ export async function deleteAllAmplifyProjects(amplifyClient?: Amplify) { } while (token); } -export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFormation) { +export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFormationClient) { if (!cfnClient) cfnClient = getConfiguredCFNClient(); try { - await cfnClient.deleteStack({ StackName: stackName }).promise(); + await cfnClient.send(new DeleteStackCommand({ StackName: stackName })); } catch (err) { // do nothing } } -async function PaginatedDeleteProjects(amplifyClient: any, token?: any) { +async function PaginatedDeleteProjects(amplifyClient: AmplifyClient, token?: any) { const sequential = require('promise-sequential'); const maxResults = '25'; - const listAppsResult = await amplifyClient - .listApps({ + const listAppsResult = await amplifyClient.send( + new ListAppsCommand({ maxResults, nextToken: token, - }) - .promise(); + }), + ); const deleteTasks = []; listAppsResult.apps.forEach((app) => { deleteTasks.push(async () => { - await amplifyClient.deleteApp({ appId: app.appId }).promise(); + await amplifyClient.send(new DeleteAppCommand({ appId: app.appId })); }); }); await sequential(deleteTasks); @@ -61,7 +68,7 @@ export function generateBackendEnvParams(appId: string, projectName: string, env return { appId, envName, stackName, deploymentBucketName }; } -export async function createConsoleApp(projectName: string, amplifyClient?: Amplify) { +export async function createConsoleApp(projectName: string, amplifyClient?: AmplifyClient) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -70,11 +77,11 @@ export async function createConsoleApp(projectName: string, amplifyClient?: Ampl environmentVariables: { _LIVE_PACKAGE_UPDATES: '[{"pkg":"@aws-amplify/cli","type":"npm","version":"latest"}]' }, }; - const createAppResponse = await amplifyClient.createApp(createAppParams).promise(); + const createAppResponse = await amplifyClient.send(new CreateAppCommand(createAppParams)); return createAppResponse.app.appId; } -export async function deleteConsoleApp(appId: string, amplifyClient?: Amplify) { +export async function deleteConsoleApp(appId: string, amplifyClient?: AmplifyClient) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -82,13 +89,13 @@ export async function deleteConsoleApp(appId: string, amplifyClient?: Amplify) { appId, }; try { - await amplifyClient.deleteApp(deleteAppParams).promise(); + await amplifyClient.send(new DeleteAppCommand(deleteAppParams)); } catch (err) { // Do nothing } } -export async function createBackendEnvironment(backendParams: any, amplifyClient?: Amplify) { +export async function createBackendEnvironment(backendParams: any, amplifyClient?: AmplifyClient) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -102,5 +109,5 @@ export async function createBackendEnvironment(backendParams: any, amplifyClient deploymentArtifacts: deploymentBucketName, }; - await amplifyClient.createBackendEnvironment(createEnvParams).promise(); + await amplifyClient.send(new CreateBackendEnvironmentCommand(createEnvParams)); } diff --git a/packages/amplify-dynamodb-simulator/index.js b/packages/amplify-dynamodb-simulator/index.js index 33dfb64eb36..a47ec059d4e 100644 --- a/packages/amplify-dynamodb-simulator/index.js +++ b/packages/amplify-dynamodb-simulator/index.js @@ -230,12 +230,14 @@ async function launch(givenOptions = {}, retry = 0, startTime = Date.now()) { } function getClient(emu, options = {}) { - const { DynamoDB } = require('aws-sdk'); - return new DynamoDB({ + const { DynamoDBClient } = require('@aws-sdk/client-dynamodb'); + return new DynamoDBClient({ endpoint: emu.url, region: 'us-fake-1', - accessKeyId: 'fake', - secretAccessKey: 'fake', + credentials: { + accessKeyId: 'fake', + secretAccessKey: 'fake', + }, ...options, }); } diff --git a/packages/amplify-dynamodb-simulator/package.json b/packages/amplify-dynamodb-simulator/package.json index 63a4c99e175..cd18139dcb3 100644 --- a/packages/amplify-dynamodb-simulator/package.json +++ b/packages/amplify-dynamodb-simulator/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@aws-amplify/amplify-cli-core": "4.4.2", - "aws-sdk": "^2.1464.0", + "@aws-sdk/client-dynamodb": "^3.624.0", "detect-port": "^1.3.0", "execa": "^5.1.1", "fs-extra": "^8.1.0", diff --git a/yarn.lock b/yarn.lock index 447b1254ab9..547fe3fc7d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -488,8 +488,9 @@ __metadata: dependencies: "@aws-amplify/amplify-cli-core": 4.4.2 "@aws-amplify/amplify-e2e-core": 5.7.5 + "@aws-sdk/client-amplify": ^3.624.0 + "@aws-sdk/client-cloudformation": ^3.624.0 "@types/ini": ^1.3.30 - aws-sdk: ^2.1464.0 dotenv: ^8.2.0 execa: ^5.1.1 fs-extra: ^8.1.0 @@ -1117,6 +1118,7 @@ __metadata: "@aws-amplify/amplify-util-mock": 5.10.17 "@aws-amplify/amplify-util-uibuilder": 1.14.20 "@aws-cdk/cloudformation-diff": ~2.68.0 + "@aws-sdk/client-cognito-identity-provider": ^3.624.0 "@types/archiver": ^5.3.1 "@types/columnify": ^1.5.1 "@types/folder-hash": ^4.0.1 @@ -1139,7 +1141,6 @@ __metadata: amplify-nodejs-function-runtime-provider: 2.5.30 amplify-python-function-runtime-provider: 2.4.52 aws-cdk-lib: ~2.189.1 - aws-sdk: ^2.1464.0 chalk: ^4.1.1 ci-info: ^3.8.0 cli-table3: ^0.6.0 @@ -2081,6 +2082,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-amplify@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/client-amplify@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-node": 3.891.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 5136eb62744950b4a797f7020a349a9062f9caa72118a2fcd9aab1fa9e9acf8966b495ebaa6b7fb2e7d71d6d79c2320bc74c14c6098585a02058b4ba28973845 + 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" @@ -2131,6 +2179,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-cloudformation@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/client-cloudformation@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-node": 3.891.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + "@smithy/util-waiter": ^4.1.1 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: eac848cb46a39a07529afe9b9c46e997495af8e16f34fd3b03c9ed5576676b4de2ff9a906c152b5f21937af85232dd15a3688bf77046a7167c4a03b429c298c6 + 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" @@ -2405,6 +2503,57 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-dynamodb@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/client-dynamodb@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-node": 3.891.0 + "@aws-sdk/middleware-endpoint-discovery": 3.891.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + "@smithy/util-waiter": ^4.1.1 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 82af81dce0bd4ecbcacdb9072e166282c5d53cf79adeb6d79ee591d90b31ef68b463c11845e41cf88855f94f90074ee43cb849a196f586b215a4a845887856db + 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" @@ -3405,6 +3554,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/client-sso@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 5e52e5b6fb6935c38a0453a9aa70ccdb7c82c71d9148466dfaa5b0741e8ea962843b245c3b08945feee38e718351f47d167a8bd3ac158b25bc0b778f41559a69 + 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" @@ -3687,6 +3882,29 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/core@npm:3.890.0": + version: 3.890.0 + resolution: "@aws-sdk/core@npm:3.890.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@aws-sdk/xml-builder": 3.887.0 + "@smithy/core": ^3.11.0 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/signature-v4": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-utf8": ^4.1.0 + fast-xml-parser: 5.2.5 + tslib: ^2.6.2 + checksum: 20794214024add4ea9a9806659c9507b5914664d63c31dc78eb6fe3cf0f2bfdc435895292a706eaa358c5bac2643232d859408897f74a3334f588c2cdfa30fd2 + 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" @@ -3747,6 +3965,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-env@npm:3.890.0": + version: 3.890.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.890.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@smithy/property-provider": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 52d648a385a25daf95e6884e2849158f6bf7f3f502258167d83fc278fd79b79d32408bbcacf2de5ff71f5e81b1b48f6133538f487de07210a3c5d97a235bb5d1 + 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" @@ -3782,6 +4013,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-http@npm:3.890.0": + version: 3.890.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.890.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/property-provider": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/util-stream": ^4.3.1 + tslib: ^2.6.2 + checksum: c48bc17cacddfc47a1f5dbb8be2fdff68ae0c80cdab1192e406bc65744b13412f9100bc1af2126efafea427fafd9d58284e6d095c63a3957ac0dd087c5fc360b + 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" @@ -3876,6 +4125,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-ini@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.891.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-env": 3.890.0 + "@aws-sdk/credential-provider-http": 3.890.0 + "@aws-sdk/credential-provider-process": 3.890.0 + "@aws-sdk/credential-provider-sso": 3.891.0 + "@aws-sdk/credential-provider-web-identity": 3.891.0 + "@aws-sdk/nested-clients": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/credential-provider-imds": ^4.1.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 642d533f8e94c6b3b94659a7c8985d072c423fdd7d3d340875366656441857c83e1965a6305a438ce8db451ec83f597916bb01815baa0a0c12d8c75f4b0d9adf + 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" @@ -3950,6 +4220,26 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.891.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.890.0 + "@aws-sdk/credential-provider-http": 3.890.0 + "@aws-sdk/credential-provider-ini": 3.891.0 + "@aws-sdk/credential-provider-process": 3.890.0 + "@aws-sdk/credential-provider-sso": 3.891.0 + "@aws-sdk/credential-provider-web-identity": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/credential-provider-imds": ^4.1.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 9f701c7fcf58f9421ede8ceeaa8d261a835216eb9f7910fc3ecf8f59ff4f4a84008be335ae329816ddc6119e30aa358ae92133081daa97ef2363561b81b44b5f + 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" @@ -4002,6 +4292,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-process@npm:3.890.0": + version: 3.890.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.890.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 4cb1864ad5318ceb8d6b6c0b97f1991ea309776139a19469128d19ebfe01127dbafc2f8cf7cf04e2308cedbf1ba5bee9129fadf07c66b6a88c91ecc819e2058a + 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" @@ -4046,6 +4350,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.891.0" + dependencies: + "@aws-sdk/client-sso": 3.891.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/token-providers": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 618e4ef6b6b0a58ddfa28cb80d883eb947be4ca6a91c3c62c6d83c615ccf4bb9ae5c371beac03fed31c3afde13dfea0c6ca6483ca5aa9baee7e41b4b94e4e006 + 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" @@ -4085,6 +4405,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-web-identity@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.891.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/nested-clients": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 3efbf1c8bcb9438bf09673a6eaf6cb0ad1a1b39635e7462f515818f66748ca9dafe58208be152574c6b967d061616822f6dfd702bb385f32bc7090e981300e49 + 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" @@ -4119,6 +4454,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/endpoint-cache@npm:3.873.0": + version: 3.873.0 + resolution: "@aws-sdk/endpoint-cache@npm:3.873.0" + dependencies: + mnemonist: 0.38.3 + tslib: ^2.6.2 + checksum: e3e860b0e99dadb51148ddfe6582225de01fdfebf4475a6180d80b4e82326fd7174c72ee9448eb96d6501696330605c4e0718cc470bdf401afd5a79da4d021c1 + 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" @@ -4443,6 +4788,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-endpoint-discovery@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/middleware-endpoint-discovery@npm:3.891.0" + dependencies: + "@aws-sdk/endpoint-cache": 3.873.0 + "@aws-sdk/types": 3.887.0 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 2bc3bd97fc4c50a7b1b18cdb7380872876dc13e254d6b8e79d2100a6e092db6e2b42364d434be39456809fdcfcd3b77f19ba188cc4e79d1c3f6325fdeea26d82 + 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" @@ -4561,6 +4920,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-host-header@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.891.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 5716641a3732ffcae51387af289888dd771260b783e75b8c1c137ba18565a1e3a33318a1673f736baec36aaeba7f7cfd3446ce4844caed3fa2c080cf23d523f4 + 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" @@ -4625,6 +4996,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-logger@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/middleware-logger@npm:3.891.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 6eab8cb71b14597e30334df164e211fadd093a380811efef156baa126b9ed42fdf005f54447cd48050e211e277719cd182f4534a44757d799b21a77ef39b460d + 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" @@ -4660,6 +5042,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-recursion-detection@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.891.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@aws/lambda-invoke-store": ^0.0.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 3e8af5cc39f1d85a91d7856cce38070948e90b9cb0068e8e5cc861ce91d3d9370cdbdbef305bd5770e31e0f4fea330e3447df4030f1b9ce51c4e9974d0e001ad + 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" @@ -4913,6 +5308,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.891.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@smithy/core": ^3.11.0 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 9a9bd85ebccbf705a40c53490e523a5e4a311fe9f8eb9d3e5cd8593b84011db03d90a153dcb2f984cb908b6e7e65fa23ecf0bc48234e73aca3ebf3b031bd0202 + languageName: node + linkType: hard + "@aws-sdk/nested-clients@npm:3.830.0": version: 3.830.0 resolution: "@aws-sdk/nested-clients@npm:3.830.0" @@ -4959,6 +5369,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/nested-clients@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/nested-clients@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: f69d9f9cf0f94558367312e47741cdfe94472d7a3e94f44723c22fe796f007207bebc19c6fe2b12ac0f44bb067f7cd65499a0936ec91e94f445579e7147a7813 + 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" @@ -5119,6 +5575,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/region-config-resolver@npm:3.890.0": + version: 3.890.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.890.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/types": ^4.5.0 + "@smithy/util-config-provider": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + tslib: ^2.6.2 + checksum: a95432f7fc38653cd31b58c9ccc543d63a79184b7a67d8e880b3c171576b548616c8dcf0b12a995d78ace1f4893f0b3ed3cef6d9e8c65cf54683fe6bd7cf99c1 + 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" @@ -5259,6 +5729,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/token-providers@npm:3.891.0" + dependencies: + "@aws-sdk/core": 3.890.0 + "@aws-sdk/nested-clients": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: ed6f689a9e643dc240b65d8b109b841694f71cb9aeaf73df185b757be3311165b90bd5068437857e347094a4338deb2036b084eef7e66845f9f905342918c773 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.186.0": version: 3.186.0 resolution: "@aws-sdk/types@npm:3.186.0" @@ -5302,6 +5787,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:3.887.0": + version: 3.887.0 + resolution: "@aws-sdk/types@npm:3.887.0" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 862ad368a8692cf75b0e44e96b2fe96c0e145f3c40bbb4a6fe07de1f5935722f0ecdc983fdf09789527a2555392a3cac08372d9a7cdec5f15849508083104413 + 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" @@ -5517,6 +6012,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-endpoints@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/util-endpoints@npm:3.891.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-endpoints": ^3.1.2 + tslib: ^2.6.2 + checksum: 78c0cf6956f4b866449ba535a4055a67c801f26f25e9839c96cec899a8e369f6db648739d4428ce7d3799103cd7aed76040bd817b31fdf907fb4bfe10de968d7 + 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" @@ -5638,6 +6146,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-browser@npm:3.887.0": + version: 3.887.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.887.0" + dependencies: + "@aws-sdk/types": 3.887.0 + "@smithy/types": ^4.5.0 + bowser: ^2.11.0 + tslib: ^2.6.2 + checksum: f48410fbdb2f986e798072a7fb55ee0780fe90c57c35f8ad22bd9127914d911ea63b6d43b62ebb81edfb8b82ec5eed1f6bc93135bc55fad294f7e5b638d20f61 + 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" @@ -5700,6 +6220,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.891.0": + version: 3.891.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.891.0" + dependencies: + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/types": 3.887.0 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: ec0da41bc610859ec2004cbd33cb934091bc92f857d5c4f1d21be5487afd7cc98dfd7afb1170e4507dc7a54f594a8898e0bef80543f5b7c2cfd1b66c680b50f1 + 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" @@ -5779,6 +6317,23 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:3.887.0": + version: 3.887.0 + resolution: "@aws-sdk/xml-builder@npm:3.887.0" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: a8ec9b57934cba380ee72f7d5bab5305e61ffd12f8eed5957d062db0983de58a8a9f62f4979c036eccad4b74d8cf9267e8e6d21601f2dc85cc1db54a5eb17ce9 + languageName: node + linkType: hard + +"@aws/lambda-invoke-store@npm:^0.0.1": + version: 0.0.1 + resolution: "@aws/lambda-invoke-store@npm:0.0.1" + checksum: 0bbf3060014a462177fb743e132e9b106a6743ad9cd905df4bd26e9ca8bfe2cc90473b03a79938fa908934e45e43f366f57af56a697991abda71d9ac92f5018f + languageName: node + linkType: hard + "@babel/cli@npm:^7.27.0": version: 7.27.0 resolution: "@babel/cli@npm:7.27.0" @@ -9795,6 +10350,16 @@ __metadata: languageName: node linkType: hard +"@smithy/abort-controller@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/abort-controller@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: f50ee8e76dab55df7af7247c5dac88209702b9e0a775a5d98472d67c607b6f624c3789ac75974c8b6fa452e1a4f9f72e5749dbea5b57f14d7ca137929e36f0ee + 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" @@ -9859,6 +10424,19 @@ __metadata: languageName: node linkType: hard +"@smithy/config-resolver@npm:^4.2.2": + version: 4.2.2 + resolution: "@smithy/config-resolver@npm:4.2.2" + dependencies: + "@smithy/node-config-provider": ^4.2.2 + "@smithy/types": ^4.5.0 + "@smithy/util-config-provider": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + tslib: ^2.6.2 + checksum: 3d53cd54424dfaa1e0249c0de987fc10b3c5d48b9807f5ac6d692483d1438210c9058251223f15931bfdacfdbfd4320b754abdaa6a9b1c7e3722b8584d4eb270 + 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" @@ -9875,6 +10453,25 @@ __metadata: languageName: node linkType: hard +"@smithy/core@npm:^3.11.0": + version: 3.11.0 + resolution: "@smithy/core@npm:3.11.0" + dependencies: + "@smithy/middleware-serde": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-stream": ^4.3.1 + "@smithy/util-utf8": ^4.1.0 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 290d088cc7a14b38c96943577d6bfde1b0c47588493c0b18dfacc98affb02a3d067f9b57d71a838bd79b46c3a7a10458f445eada37934bf308c1e21ae02b4b7d + languageName: node + linkType: hard + "@smithy/core@npm:^3.5.3": version: 3.5.3 resolution: "@smithy/core@npm:3.5.3" @@ -9918,6 +10515,19 @@ __metadata: languageName: node linkType: hard +"@smithy/credential-provider-imds@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/credential-provider-imds@npm:4.1.2" + dependencies: + "@smithy/node-config-provider": ^4.2.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + tslib: ^2.6.2 + checksum: c1ab5c17ee832edf2135eaf17c90f6fd34af2926bfd35c76312a10172cafbaf730b15d29384e3f3838e1c3b55df111539d4e07fdfc4d11b639f4622d4e067f6b + languageName: node + linkType: hard + "@smithy/eventstream-codec@npm:^3.1.7": version: 3.1.7 resolution: "@smithy/eventstream-codec@npm:3.1.7" @@ -10067,6 +10677,19 @@ __metadata: languageName: node linkType: hard +"@smithy/fetch-http-handler@npm:^5.2.1": + version: 5.2.1 + resolution: "@smithy/fetch-http-handler@npm:5.2.1" + dependencies: + "@smithy/protocol-http": ^5.2.1 + "@smithy/querystring-builder": ^4.1.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + tslib: ^2.6.2 + checksum: c4a6a1a67f84361045bd10fef470ec6cda8691f549a455f734cfd3de05ccefc300973188e55578ae379b936f7e3f842971447386a3d8ec728f7df9c2f1c58fc2 + 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" @@ -10115,6 +10738,18 @@ __metadata: languageName: node linkType: hard +"@smithy/hash-node@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/hash-node@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + "@smithy/util-buffer-from": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: aedf905c5fba7c814a697d973ea49c76d529dc9a10675676984a811637623b4f41542d72e53ed0df0a30881ee7fbe77c74bd49bd272e4a034e9d80021b6022a7 + 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" @@ -10157,6 +10792,16 @@ __metadata: languageName: node linkType: hard +"@smithy/invalid-dependency@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/invalid-dependency@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 5700333f00b6a31a97b792fa9a00fadd07b2eafaea01087a6ea212753dba2621a040dfb0d7dc5a1f75bb95cc28fba2e498cdaca43009b142610944c0fcd95a58 + 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" @@ -10184,6 +10829,15 @@ __metadata: languageName: node linkType: hard +"@smithy/is-array-buffer@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/is-array-buffer@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 399af810a9329c033d1816c492b17343d2ff956d32a358f327da6af0e4ad3c4640a1ef8dcd5f4d0f7d85ef19cf6909038f1a6539c938372dd33996d8f102bb9a + languageName: node + linkType: hard + "@smithy/md5-js@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/md5-js@npm:3.0.8" @@ -10228,6 +10882,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-content-length@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/middleware-content-length@npm:4.1.1" + dependencies: + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: c841e9221f43303103076b3e2d0fb745b75f8caa0ec9cabb0be4fdb2c5a3fe4077391c083b6f8547ccdc58c44f267ee2423430e544bb95484d2b805e6008b8f3 + 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" @@ -10260,6 +10925,22 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-endpoint@npm:^4.2.2": + version: 4.2.2 + resolution: "@smithy/middleware-endpoint@npm:4.2.2" + dependencies: + "@smithy/core": ^3.11.0 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-middleware": ^4.1.1 + tslib: ^2.6.2 + checksum: 1c720187426c10fff6eb750cd0148047cfb03c97dbfd2f0bfc4a1d9ada2bb1dc480627cfdeef04cb911d4b44545ccac3119ee7da25f22b05b07aad1c404d5ca4 + languageName: node + linkType: hard + "@smithy/middleware-retry@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/middleware-retry@npm:3.0.25" @@ -10294,6 +10975,24 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-retry@npm:^4.2.3": + version: 4.2.3 + resolution: "@smithy/middleware-retry@npm:4.2.3" + dependencies: + "@smithy/node-config-provider": ^4.2.2 + "@smithy/protocol-http": ^5.2.1 + "@smithy/service-error-classification": ^4.1.2 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 90701134dc363a7ef6fc10279608e7e8592b56775a4d759f982e4c42692f644acb7ffe7345e2d3e7f10d6d6f8b2b0c6964e948ce137a9622ce08811cd1c1b852 + 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" @@ -10315,6 +11014,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-serde@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/middleware-serde@npm:4.1.1" + dependencies: + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 69c0cf035da2ccbdf2838f50a1fafb0f8e6fb286b820e0aa91be7bdc6dd102f51ce3b295e68cdf9e7441dfc3160a3d3cabac99d98a8f0a75675ecf0f1e09d439 + 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" @@ -10335,6 +11045,16 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-stack@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/middleware-stack@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 8ee554c30e6802f6adcaf673e4d216cd8f56e13a9ef5d644ec94f0b553c3b62b451a8156fd49645cc1f5eedd09234a107edc42faff779416a4a43a215e370007 + 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" @@ -10359,6 +11079,18 @@ __metadata: languageName: node linkType: hard +"@smithy/node-config-provider@npm:^4.2.2": + version: 4.2.2 + resolution: "@smithy/node-config-provider@npm:4.2.2" + dependencies: + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 9170728f606f1e250236c1265bee9811e1062e3b929339eafc5a8d5229e9fbb4c94e1b8cdcd644b0a8c855370b649c85a0aca5b47d132ad505ce32ba8a51e230 + 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" @@ -10385,6 +11117,19 @@ __metadata: languageName: node linkType: hard +"@smithy/node-http-handler@npm:^4.2.1": + version: 4.2.1 + resolution: "@smithy/node-http-handler@npm:4.2.1" + dependencies: + "@smithy/abort-controller": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/querystring-builder": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 7536923c62b0bbbade8335b25368d02b4840cd381aba9dbdadb472fb501576d7b3b73121069356b022e9da3ec5d27711a00ec7786d31ba15089abdce582121cc + 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" @@ -10405,6 +11150,16 @@ __metadata: languageName: node linkType: hard +"@smithy/property-provider@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/property-provider@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 5aa28b7e6cc23baf3605aa3be8a33ae4943635e698e0de773e8056f5ad06494f370f23cd3c4d083245d6fe411c25c38a76887d38a36d5daf075e36e6e6e3864f + 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" @@ -10425,6 +11180,16 @@ __metadata: languageName: node linkType: hard +"@smithy/protocol-http@npm:^5.2.1": + version: 5.2.1 + resolution: "@smithy/protocol-http@npm:5.2.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: b27df0a94f8e0bab1e8310da82c3048e6d397a3b52f8413c4f19bb9c13d11afcdf7424293cb8d8d3e867b07ff8c5f3c8d0fbdd7d07a8328a39721eb202336d2b + 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" @@ -10447,6 +11212,17 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-builder@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/querystring-builder@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + "@smithy/util-uri-escape": ^4.1.0 + tslib: ^2.6.2 + checksum: 15d41888eae29f57dbf9d2c8caa449d19ebb760b83958a0fe2cf4858948bb6e0466c176a207b868d8af7785e8f6688b87ada4e364ec6fd729ab6bffbd64b92d8 + languageName: node + linkType: hard + "@smithy/querystring-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-parser@npm:3.0.8" @@ -10467,6 +11243,16 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-parser@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/querystring-parser@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 6bf8672aca07826af16625b41f20332fdfdc39861124e026ee929e4652f638edc7107d347a2fe7feb0c2e6f2c98d149d2d383cecaab46a48a990f36333e8f016 + 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" @@ -10485,6 +11271,15 @@ __metadata: languageName: node linkType: hard +"@smithy/service-error-classification@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/service-error-classification@npm:4.1.2" + dependencies: + "@smithy/types": ^4.5.0 + checksum: f9c3d3d085491e9bc67c0bdb2fe51ba19ada826daf2b9bf7b335f1d37186eedcbf4c33927a1cc266bf8505c39672d4b26a0a133fe7924377866ba5ae4261a0c6 + 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" @@ -10505,6 +11300,16 @@ __metadata: languageName: node linkType: hard +"@smithy/shared-ini-file-loader@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/shared-ini-file-loader@npm:4.2.0" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 36b0ee727a7c07c617db986ff34c55ffc5068074ccd01cf1650bbef299c909b72d3f3a703c42f45b31d4ebfe698ec32036eeb57c27a1281de000543bcfe1ac9f + languageName: node + linkType: hard + "@smithy/signature-v4@npm:^4.1.0": version: 4.2.1 resolution: "@smithy/signature-v4@npm:4.2.1" @@ -10537,6 +11342,22 @@ __metadata: languageName: node linkType: hard +"@smithy/signature-v4@npm:^5.2.1": + version: 5.2.1 + resolution: "@smithy/signature-v4@npm:5.2.1" + dependencies: + "@smithy/is-array-buffer": ^4.1.0 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-hex-encoding": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-uri-escape": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: d00cb14155b89016493e90e19d3406f5362d7ec4205cd82a4fba47521f87d88b372e1ebfa34ceb739704f2f21d7a7bbf4da699773f71fab58028d515b932d014 + 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" @@ -10567,6 +11388,21 @@ __metadata: languageName: node linkType: hard +"@smithy/smithy-client@npm:^4.6.2": + version: 4.6.2 + resolution: "@smithy/smithy-client@npm:4.6.2" + dependencies: + "@smithy/core": ^3.11.0 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-stream": ^4.3.1 + tslib: ^2.6.2 + checksum: 69393eb48120b0d3a49f0a216504a9e3a8360cf20777bb44ba0dcfacc7f45c21883a3a7cded3c53d818fbf518afe513b0b25dbf7c8ed9ac4fca772f090d3155b + languageName: node + linkType: hard + "@smithy/types@npm:^3.3.0, @smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0, @smithy/types@npm:^3.7.2": version: 3.7.2 resolution: "@smithy/types@npm:3.7.2" @@ -10585,6 +11421,15 @@ __metadata: languageName: node linkType: hard +"@smithy/types@npm:^4.5.0": + version: 4.5.0 + resolution: "@smithy/types@npm:4.5.0" + dependencies: + tslib: ^2.6.2 + checksum: 7c765c9316893ab9e6575ba40e3d1569d43d7d1edd1110b505e190a4aa378a89e407b6f92de7bf0f22342ce05228ff0f1d37b14781e41c60c429fc22c8e5bae9 + 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" @@ -10607,6 +11452,17 @@ __metadata: languageName: node linkType: hard +"@smithy/url-parser@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/url-parser@npm:4.1.1" + dependencies: + "@smithy/querystring-parser": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 1f9e19d5d1e1a4874cf2f61df014715dc3685be385356758d3aed1a6b020b074af22961b12ae651faad74ed0460a102156471543031e74c726770820ede6f31c + languageName: node + linkType: hard + "@smithy/util-base64@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-base64@npm:3.0.0" @@ -10629,6 +11485,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-base64@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-base64@npm:4.1.0" + dependencies: + "@smithy/util-buffer-from": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: e2275e4a09c245b8a0c1c6ead4418333d037f6cbc29a01881b56fb5676ad46839058bbdb3f9f357898c8000feccac9344ee66c9c36e17dd321bda84a93f2c36f + 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" @@ -10647,6 +11514,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-body-length-browser@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-body-length-browser@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: e86c39696dca4ce4b58e393fb85263e31ee046d88fdbd0bd1ee121f5101faca5fc945a7da17432aa39e86c178c80ac183568edb3b7df323f1134172dc36192c6 + 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" @@ -10665,6 +11541,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-body-length-node@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-body-length-node@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: d31fb7be66eb481f865d046b48c07221d25108b07c783f05eff7f165369d2259ca01de7c369f9de95e37e989b1344521bc6d4a6b38b42a7a46375a0c97f38a0b + 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" @@ -10695,6 +11580,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-buffer-from@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-buffer-from@npm:4.1.0" + dependencies: + "@smithy/is-array-buffer": ^4.1.0 + tslib: ^2.6.2 + checksum: f19457df277e7125ffbf106c26c70ffbc550956afceede4e2c2eb13a32f6f304f9e3b7a37f4c717df3c5ce97f8b759ee59ceed0e3f649f236bbaf2bfe8f266ef + 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" @@ -10713,6 +11608,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-config-provider@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-config-provider@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 099add392d9f029dec36d3646af4a63145a13ed8014af11f507bffbdb113fc2bb2bfd71ee157e385320f4c8de4bd48557c98f40878f93022187d3fc3082e6713 + 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" @@ -10739,6 +11643,19 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-browser@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/util-defaults-mode-browser@npm:4.1.2" + dependencies: + "@smithy/property-provider": ^4.1.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + bowser: ^2.11.0 + tslib: ^2.6.2 + checksum: d93c24587d7555dac6d5e6e0aacf1493769b1ed2c5e9931bbd3a3e6f78ceae1d76852eb81577409cd4fbf774aa5c3df8dc1768e2a49a6089e57127f382fb6f8e + 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" @@ -10769,6 +11686,21 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-node@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/util-defaults-mode-node@npm:4.1.2" + dependencies: + "@smithy/config-resolver": ^4.2.2 + "@smithy/credential-provider-imds": ^4.1.2 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: ccff3039600e8bee569c54786efafad84653e8a8142326eb6ecd36fee7e01f41721d911e357857ecee2ac7acfc87ac33b1f0a164b8bb5f1ecbb6767131a09a2f + languageName: node + linkType: hard + "@smithy/util-endpoints@npm:^2.0.5": version: 2.1.4 resolution: "@smithy/util-endpoints@npm:2.1.4" @@ -10791,6 +11723,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-endpoints@npm:^3.1.2": + version: 3.1.2 + resolution: "@smithy/util-endpoints@npm:3.1.2" + dependencies: + "@smithy/node-config-provider": ^4.2.2 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 326511840868b2a1e337dd9bcc746d25c1efe8b9b9a7b15ff439a8e01978821bf6410eb8bf32037c781e48c8286f40e82cc77f8bcbaee3f2b3c242b8af3f52cc + 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" @@ -10809,6 +11752,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-hex-encoding@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-hex-encoding@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: eefaa537612afd13e497353a1bd55f3d6f977cdc52360f91fcb3b83b68d6cdd9b9fc16ab82561375b509ed8d5735c47b263c4e64e96471d1662d4c7a8c88449d + 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" @@ -10829,6 +11781,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-middleware@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/util-middleware@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 47bee56b2fbf9fbe3c4be4e1daac247fea889848d43120c64895529bb92ef43b25cf07213792d1646622356a1572b91cc48b0976c39667a9020edfa5ec58d093 + 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" @@ -10851,6 +11813,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-retry@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/util-retry@npm:4.1.2" + dependencies: + "@smithy/service-error-classification": ^4.1.2 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 7fe664301f67898fcb721d250487763e3e59462027fe7081e4d0126d5a2d2703b053e9bdd6ffc3926dd2e4e5ea4d78590e33d512e1cb195ff21981e43e1ec3e7 + 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" @@ -10883,6 +11856,22 @@ __metadata: languageName: node linkType: hard +"@smithy/util-stream@npm:^4.3.1": + version: 4.3.1 + resolution: "@smithy/util-stream@npm:4.3.1" + dependencies: + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-buffer-from": ^4.1.0 + "@smithy/util-hex-encoding": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 7fd8fde8b011fe3535799d9a60195fe8e1229c6976b76d3bf930dbb9d27204754acbf082816cdacaa00e77857ab9e4b673c331c6626aba7ef242cdb7e143b028 + 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" @@ -10901,6 +11890,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-uri-escape@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-uri-escape@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 3ff56036ce93226b05e68d34c1691e51cdd82ac5f2ba635701ba76a36a2b384ce945bfe2d9c4992f7b500387a6fe1de4d5d0825cd7c73fa10165678d443d3acc + languageName: node + linkType: hard + "@smithy/util-utf8@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-utf8@npm:2.0.0" @@ -10931,6 +11929,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-utf8@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-utf8@npm:4.1.0" + dependencies: + "@smithy/util-buffer-from": ^4.1.0 + tslib: ^2.6.2 + checksum: 4331c056b005647701609c42609c3bf0848fdaa01134d891327820c32cfcf7410d8bce1c15d534e5c75af79ea4527c3ca33bccfc104e19a94475fbfe125ecb86 + languageName: node + linkType: hard + "@smithy/util-waiter@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/util-waiter@npm:3.1.7" @@ -10953,6 +11961,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-waiter@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/util-waiter@npm:4.1.1" + dependencies: + "@smithy/abort-controller": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 0ecdaa4b8a2036f753e0ad6c2a4f3c98b069b98f16525db9e8219aaceb189e78b46ebcd8829210874cc44a4693f9a83da9eb96315c2ed30f379065b821d6447c + 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" @@ -13036,7 +14055,7 @@ __metadata: resolution: "amplify-dynamodb-simulator@workspace:packages/amplify-dynamodb-simulator" dependencies: "@aws-amplify/amplify-cli-core": 4.4.2 - aws-sdk: ^2.1464.0 + "@aws-sdk/client-dynamodb": ^3.624.0 detect-port: ^1.3.0 execa: ^5.1.1 fs-extra: ^8.1.0 From e4062a0ded65eab106bcaa00cefc09eeba0878de Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 17 Sep 2025 17:02:42 -0400 Subject: [PATCH 03/51] refactor: category-function and appsync-sim --- .../amplify-appsync-simulator/package.json | 3 +- .../src/data-loader/dynamo-db/index.ts | 74 +++++++++++-------- .../src/data-loader/dynamo-db/utils/index.ts | 4 +- .../src/velocity/util/dynamodb-utils.ts | 5 +- .../amplify-category-function/package.json | 2 +- .../secrets/ssmClientWrapper.ts | 66 +++++++++-------- .../utils/updateTopLevelComment.ts | 13 ++-- yarn.lock | 66 ++++++++++++++++- 8 files changed, 157 insertions(+), 76 deletions(-) diff --git a/packages/amplify-appsync-simulator/package.json b/packages/amplify-appsync-simulator/package.json index 486ec39cb29..5409c4e8c5e 100644 --- a/packages/amplify-appsync-simulator/package.json +++ b/packages/amplify-appsync-simulator/package.json @@ -32,10 +32,11 @@ "dependencies": { "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-prompts": "2.8.7", + "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/util-dynamodb": "^3.624.0", "@graphql-tools/schema": "^8.3.1", "@graphql-tools/utils": "^8.5.1", "amplify-velocity-template": "1.4.17", - "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "cors": "^2.8.5", "dataloader": "^2.0.0", diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 9b645ecf96f..5654500648d 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -1,5 +1,13 @@ -import { AttributeMap } from 'aws-sdk/clients/dynamodb'; -import { DynamoDB } from 'aws-sdk'; +import { + AttributeValue, + DynamoDBClient, + GetItemCommand, + PutItemCommand, + UpdateItemCommand, + DeleteItemCommand, + QueryCommand, + ScanCommand, +} from '@aws-sdk/client-dynamodb'; import { unmarshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; @@ -15,7 +23,7 @@ type DynamoDBLoaderConfig = { options: object; }; export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { - private client: DynamoDB; + private client: DynamoDBClient; private tableName: string; constructor(private ddbConfig: DynamoDBLoaderConfig) { @@ -24,7 +32,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { throw new Error(`Invalid DynamoDBConfig ${JSON.stringify(ddbConfig, null, 4)}`); } this.tableName = tableName; - this.client = new DynamoDB({ ...ddbConfig.config, ...ddbConfig.options }); + this.client = new DynamoDBClient({ ...ddbConfig.config, ...ddbConfig.options }); } async load(payload): Promise { @@ -53,11 +61,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { throw new Error(`Unknown operation name: ${payload.operation}`); } } catch (e) { - if (e.code) { + if (e.name) { console.log('Error while executing Local DynamoDB'); console.log(JSON.stringify(payload, null, 4)); console.log(e); - e.extensions = { errorType: 'DynamoDB:' + e.code }; + e.extensions = { errorType: 'DynamoDB:' + e.name }; } throw e; } @@ -67,13 +75,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { try { const items = await this.getAllItems(); for await (const item of items) { - await this.client - .deleteItem({ + await this.client.send( + new DeleteItemCommand({ TableName: this.tableName, Key: { id: item.id }, ReturnValues: 'ALL_OLD', - }) - .promise(); + }), + ); } } catch (e) { throw new Error(`Error while deleting all items from ${this.tableName}`); @@ -81,17 +89,17 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return [this.tableName]; } // Gets all the records from the DynamoDB local table - private async getAllItems(): Promise | null> { + private async getAllItems(): Promise> | null> { let items = []; - let data = await this.client.scan({ TableName: this.tableName }).promise(); + let data = await this.client.send(new ScanCommand({ TableName: this.tableName })); items = [...items, ...data.Items]; while (typeof data.LastEvaluatedKey !== 'undefined') { - data = await this.client - .scan({ + data = await this.client.send( + new ScanCommand({ TableName: this.tableName, ExclusiveStartKey: data.LastEvaluatedKey, - }) - .promise(); + }), + ); items = [...items, ...data.Items]; } return items; @@ -99,13 +107,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async getItem(payload: any): Promise { const { consistentRead = false } = payload; - const result = await this.client - .getItem({ + const result = await this.client.send( + new GetItemCommand({ TableName: this.tableName, Key: payload.key, ConsistentRead: consistentRead, - }) - .promise(); + }), + ); if (!result.Item) return null; return unmarshall(result.Item); @@ -122,8 +130,8 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = null, } = {}, } = payload; - await this.client - .putItem({ + await this.client.send( + new PutItemCommand({ TableName: this.tableName, Item: { ...attributeValues, @@ -132,8 +140,8 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ConditionExpression: expression, ExpressionAttributeNames: expressionNames, ExpressionAttributeValues: expressionValues, - }) - .promise(); + }), + ); // put does not return us anything useful so we need to fetch the object. @@ -165,7 +173,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { Items: items, ScannedCount: scannedCount, LastEvaluatedKey: resultNextToken = null, - } = await this.client.query(params as any).promise(); + } = await this.client.send(new QueryCommand(params as any)); return { items: items.map((item) => unmarshall(item)), @@ -191,7 +199,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(update.expressionValues || {}), }), }; - const { Attributes: updated } = await this.client.updateItem(params).promise(); + const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); return unmarshall(updated); } @@ -205,16 +213,16 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = null, } = {}, } = payload; - const { Attributes: deleted } = await this.client - .deleteItem({ + const { Attributes: deleted } = await this.client.send( + new DeleteItemCommand({ TableName: this.tableName, Key: key, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, ExpressionAttributeValues: expressionValues, - }) - .promise(); + }), + ); return unmarshall(deleted); } @@ -243,7 +251,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { }, }); } - const { Items: items, ScannedCount: scannedCount, LastEvaluatedKey: resultNextToken = null } = await this.client.scan(params).promise(); + const { + Items: items, + ScannedCount: scannedCount, + LastEvaluatedKey: resultNextToken = null, + } = await this.client.send(new ScanCommand(params)); return { items: items.map((item) => unmarshall(item)), diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index 20faf7b67e2..822d3587cb9 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -1,11 +1,11 @@ -import { Converter } from 'aws-sdk/clients/dynamodb'; +import { unmarshall as awsUnmarshall } from '@aws-sdk/util-dynamodb'; export function nullIfEmpty(obj: object): object | null { return Object.keys(obj).length === 0 ? null : obj; } export function unmarshall(raw, isRaw = true) { - const content = isRaw ? Converter.unmarshall(raw) : raw; + const content = isRaw ? awsUnmarshall(raw) : raw; // Because of the funky set type used in the aws-sdk, we need to further unwrap // to find if there is a set that needs to be unpacked into an array. diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index b4e9f1e3d82..70c7e8b0fce 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -1,11 +1,10 @@ -import { Converter } from 'aws-sdk/clients/dynamodb'; -import { DynamoDBSet } from 'aws-sdk/lib/dynamodb/set'; +import { marshall, DynamoDBSet } from '@aws-sdk/util-dynamodb'; import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { - return Converter.input(toJSON(value)); + return marshall(toJSON(value)); }, $toSet(values, fn = (value) => value) { return this.toDynamoDB(new DynamoDBSet([].concat(values).map((value) => fn(value)))); diff --git a/packages/amplify-category-function/package.json b/packages/amplify-category-function/package.json index 46b734586e2..23d90fa6e66 100644 --- a/packages/amplify-category-function/package.json +++ b/packages/amplify-category-function/package.json @@ -30,8 +30,8 @@ "@aws-amplify/amplify-environment-parameters": "1.9.20", "@aws-amplify/amplify-function-plugin-interface": "1.12.1", "@aws-amplify/amplify-prompts": "2.8.7", + "@aws-sdk/client-ssm": "^3.624.0", "archiver": "^7.0.1", - "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", "enquirer": "^2.3.6", diff --git a/packages/amplify-category-function/src/provider-utils/awscloudformation/secrets/ssmClientWrapper.ts b/packages/amplify-category-function/src/provider-utils/awscloudformation/secrets/ssmClientWrapper.ts index fe26df73887..82acdcf9934 100644 --- a/packages/amplify-category-function/src/provider-utils/awscloudformation/secrets/ssmClientWrapper.ts +++ b/packages/amplify-category-function/src/provider-utils/awscloudformation/secrets/ssmClientWrapper.ts @@ -1,5 +1,12 @@ import { $TSContext } from '@aws-amplify/amplify-cli-core'; -import type { SSM } from 'aws-sdk'; +import { + SSMClient, + GetParametersCommand, + GetParametersByPathCommand, + PutParameterCommand, + DeleteParameterCommand, + DeleteParametersCommand, +} from '@aws-sdk/client-ssm'; /** * Wrapper around SSM SDK calls @@ -14,7 +21,7 @@ export class SSMClientWrapper { return SSMClientWrapper.instance; }; - private constructor(private readonly ssmClient: SSM) {} + private constructor(private readonly ssmClient: SSMClient) {} /** * Returns a list of secret name value pairs @@ -23,12 +30,12 @@ export class SSMClientWrapper { if (!secretNames || secretNames.length === 0) { return []; } - const result = await this.ssmClient - .getParameters({ + const result = await this.ssmClient.send( + new GetParametersCommand({ Names: secretNames, WithDecryption: true, - }) - .promise(); + }), + ); return result?.Parameters?.map(({ Name, Value }) => ({ secretName: Name, secretValue: Value })); }; @@ -40,8 +47,8 @@ export class SSMClientWrapper { let NextToken; const accumulator: string[] = []; do { - const result: SSM.GetParametersByPathResult = await this.ssmClient - .getParametersByPath({ + const result = await this.ssmClient.send( + new GetParametersByPathCommand({ Path: secretPath, MaxResults: 10, ParameterFilters: [ @@ -52,8 +59,8 @@ export class SSMClientWrapper { }, ], NextToken, - }) - .promise(); + }), + ); if (Array.isArray(result?.Parameters)) { accumulator.push(...result.Parameters.filter((param) => param?.Name !== undefined).map((param) => param.Name)); @@ -68,31 +75,32 @@ export class SSMClientWrapper { * Sets the given secretName to the secretValue. If secretName is already present, it is overwritten. */ setSecret = async (secretName: string, secretValue: string): Promise => { - await this.ssmClient - .putParameter({ + await this.ssmClient.send( + new PutParameterCommand({ Name: secretName, Value: secretValue, Type: 'SecureString', Overwrite: true, - }) - .promise(); + }), + ); }; /** * Deletes secretName. If it already doesn't exist, this is treated as success. All other errors will throw. */ deleteSecret = async (secretName: string): Promise => { - await this.ssmClient - .deleteParameter({ - Name: secretName, - }) - .promise() - .catch((err) => { - if (err.code !== 'ParameterNotFound') { - // if the value didn't exist in the first place, consider it deleted - throw err; - } - }); + try { + await this.ssmClient.send( + new DeleteParameterCommand({ + Name: secretName, + }), + ); + } catch (err) { + if (err.name !== 'ParameterNotFound') { + // if the value didn't exist in the first place, consider it deleted + throw err; + } + } }; /** @@ -100,18 +108,18 @@ export class SSMClientWrapper { */ deleteSecrets = async (secretNames: string[]): Promise => { try { - await this.ssmClient.deleteParameters({ Names: secretNames }).promise(); + await this.ssmClient.send(new DeleteParametersCommand({ Names: secretNames })); } catch (err) { // if the value didn't exist in the first place, consider it deleted - if (err.code !== 'ParameterNotFound') { + if (err.name !== 'ParameterNotFound') { throw err; } } }; } -const getSSMClient = async (context: $TSContext): Promise => { - const { client } = await context.amplify.invokePluginMethod<{ client: SSM }>( +const getSSMClient = async (context: $TSContext): Promise => { + const { client } = await context.amplify.invokePluginMethod<{ client: SSMClient }>( context, 'awscloudformation', undefined, diff --git a/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts b/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts index feda8e3843f..a264d674acd 100644 --- a/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts +++ b/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts @@ -60,14 +60,13 @@ const secretsUsageFooter = `Parameters will be of the form { Name: 'secretName', const secretsUsageTemplate = (secretNames: string[]) => `${secretsUsageHeader} -const aws = require('aws-sdk'); +const { SSMClient, GetParametersCommand } = require('@aws-sdk/client-ssm'); -const { Parameters } = await (new aws.SSM()) - .getParameters({ - Names: ${JSON.stringify(secretNames)}.map(secretName => process.env[secretName]), - WithDecryption: true, - }) - .promise(); +const client = new SSMClient(); +const { Parameters } = await client.send(new GetParametersCommand({ + Names: ${JSON.stringify(secretNames)}.map(secretName => process.env[secretName]), + WithDecryption: true, +})); ${secretsUsageFooter}`; diff --git a/yarn.lock b/yarn.lock index 547fe3fc7d4..2a371806072 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,6 +108,8 @@ __metadata: "@aws-amplify/amplify-cli-core": 4.4.2 "@aws-amplify/amplify-graphiql-explorer": 2.6.3 "@aws-amplify/amplify-prompts": 2.8.7 + "@aws-sdk/client-dynamodb": ^3.624.0 + "@aws-sdk/util-dynamodb": ^3.624.0 "@graphql-tools/schema": ^8.3.1 "@graphql-tools/utils": ^8.5.1 "@types/cors": ^2.8.6 @@ -115,7 +117,6 @@ __metadata: "@types/node": ^12.12.6 "@types/ws": ^8.2.2 amplify-velocity-template: 1.4.17 - aws-sdk: ^2.1464.0 chalk: ^4.1.1 cors: ^2.8.5 dataloader: ^2.0.0 @@ -269,9 +270,9 @@ __metadata: "@aws-amplify/amplify-environment-parameters": 1.9.20 "@aws-amplify/amplify-function-plugin-interface": 1.12.1 "@aws-amplify/amplify-prompts": 2.8.7 + "@aws-sdk/client-ssm": ^3.624.0 "@types/folder-hash": ^4.0.1 archiver: ^7.0.1 - aws-sdk: ^2.1464.0 chalk: ^4.1.1 cloudform-types: ^4.2.0 enquirer: ^2.3.6 @@ -3374,6 +3375,56 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-ssm@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/client-ssm@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-node": 3.891.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + "@smithy/util-waiter": ^4.1.1 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 8607a2c2440f984237f2d3c1ce3ebd033a8d4114b9842423cc6f3bb1e8dbdb67f9f30b430a3072b0ab75ee3672d021379273f40925cc81eca46ad72dd628ae72 + 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" @@ -5988,6 +6039,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-dynamodb@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/util-dynamodb@npm:3.891.0" + dependencies: + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.891.0 + checksum: 0ce33995341973286e89b6af3c750949828fc84e808f9bcd62e978ab8c752611a786e9ceb5f77952a8cd8c7bac626ab97e46ba6d2ca570f9b07314993582a7d4 + 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" From 856a4e6b929d8de36a9256dfb2bdf3c8565686e9 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 17 Sep 2025 17:15:30 -0400 Subject: [PATCH 04/51] fix: some adjustments --- .../src/velocity/util/dynamodb-utils.ts | 4 ++-- .../src/pullAndInit/amplifyConsoleOperations.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index 70c7e8b0fce..703fe21861d 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -1,4 +1,4 @@ -import { marshall, DynamoDBSet } from '@aws-sdk/util-dynamodb'; +import { marshall } from '@aws-sdk/util-dynamodb'; import { toJSON } from '../value-mapper/to-json'; @@ -7,7 +7,7 @@ export const dynamodbUtils = { return marshall(toJSON(value)); }, $toSet(values, fn = (value) => value) { - return this.toDynamoDB(new DynamoDBSet([].concat(values).map((value) => fn(value)))); + return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); }, toDynamoDBJson(value) { return JSON.stringify(this.toDynamoDB(value)); diff --git a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts index 2085a65ef0a..283c7b07519 100644 --- a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts +++ b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts @@ -42,7 +42,7 @@ export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFor async function PaginatedDeleteProjects(amplifyClient: AmplifyClient, token?: any) { const sequential = require('promise-sequential'); - const maxResults = '25'; + const maxResults = 25; const listAppsResult = await amplifyClient.send( new ListAppsCommand({ maxResults, From b2a9de64dfab31212af8f23d41daa30c7fbc8642 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 18 Sep 2025 13:58:49 -0400 Subject: [PATCH 05/51] fix: fix some e2e tests --- .../dynamodb-simulator.test.ts | 22 +- .../src/__tests__/function_7.test.ts | 1 + packages/amplify-util-mock/package.json | 1 + .../src/__e2e__/utils/index.ts | 5 +- .../src/utils/dynamo-db/helpers.ts | 6 +- .../src/utils/dynamo-db/index.ts | 8 +- .../src/utils/dynamo-db/utils.ts | 16 +- yarn.lock | 534 ++---------------- 8 files changed, 69 insertions(+), 524 deletions(-) diff --git a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts index 1c341f94d60..902e9bc88da 100644 --- a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts @@ -1,3 +1,5 @@ +import { AttributeDefinition, CreateTableCommand, KeySchemaElement, ListTablesCommand } from '@aws-sdk/client-dynamodb'; + const path = require('path'); const ddbSimulator = require('amplify-dynamodb-simulator'); const fs = require('fs-extra'); @@ -17,21 +19,21 @@ describe('emulator operations', () => { { AttributeName: 'Artist', AttributeType: 'S', - }, + } as AttributeDefinition, { AttributeName: 'SongTitle', AttributeType: 'S', - }, + } as AttributeDefinition, ], KeySchema: [ { AttributeName: 'Artist', KeyType: 'HASH', - }, + } as KeySchemaElement, { AttributeName: 'SongTitle', KeyType: 'RANGE', - }, + } as KeySchemaElement, ], ProvisionedThroughput: { ReadCapacityUnits: 5, @@ -70,7 +72,7 @@ describe('emulator operations', () => { emulators.push(emu); const dynamo = ddbSimulator.getClient(emu); - const tables = await dynamo.listTables().promise(); + const tables = await dynamo.send(new ListTablesCommand()); expect(tables).toEqual({ TableNames: [] }); }); @@ -78,18 +80,18 @@ describe('emulator operations', () => { const emuOne = await ddbSimulator.launch({ dbPath }); emulators.push(emuOne); const dynamoOne = ddbSimulator.getClient(emuOne); - await dynamoOne - .createTable({ + await dynamoOne.send( + new CreateTableCommand({ TableName: 'foo', ...dbParams, - }) - .promise(); + }), + ); await emuOne.terminate(); emulators = []; const emuTwo = await ddbSimulator.launch({ dbPath }); emulators.push(emuTwo); const dynamoTwo = await ddbSimulator.getClient(emuTwo); - const t = await dynamoTwo.listTables().promise(); + const t = await dynamoTwo.send(new ListTablesCommand()); expect(t).toEqual({ TableNames: ['foo'], }); diff --git a/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts b/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts index 52b9154eeab..8f65896eea6 100644 --- a/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts @@ -22,6 +22,7 @@ describe('function secret value', () => { let projRoot: string; beforeEach(async () => { + process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; projRoot = await createNewProjectDir('funcsecrets'); }); diff --git a/packages/amplify-util-mock/package.json b/packages/amplify-util-mock/package.json index 15753d9c212..2b8b287a451 100644 --- a/packages/amplify-util-mock/package.json +++ b/packages/amplify-util-mock/package.json @@ -70,6 +70,7 @@ "@aws-amplify/graphql-transformer-core": "^2.11.1", "@aws-amplify/graphql-transformer-interfaces": "^3.12.0", "@aws-amplify/graphql-transformer-migrator": "^2.2.32", + "@aws-sdk/client-dynamodb": "^3.624.0", "@types/detect-port": "^1.3.0", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.149", diff --git a/packages/amplify-util-mock/src/__e2e__/utils/index.ts b/packages/amplify-util-mock/src/__e2e__/utils/index.ts index 6dd6290796b..5c25c241bd3 100644 --- a/packages/amplify-util-mock/src/__e2e__/utils/index.ts +++ b/packages/amplify-util-mock/src/__e2e__/utils/index.ts @@ -12,6 +12,7 @@ import { DynamoDB } from 'aws-sdk'; import { functionRuntimeContributorFactory } from 'amplify-nodejs-function-runtime-provider'; import { querySearchable } from '../../utils/opensearch'; import { isWindowsPlatform } from '@aws-amplify/amplify-cli-core'; +import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; const invoke = functionRuntimeContributorFactory({}).invoke; @@ -44,7 +45,7 @@ export async function launchDDBLocal() { export async function deploy( transformerOutput: any, - client?: DynamoDB, + client?: DynamoDBClient, opensearchURL?: URL, ): Promise<{ config: any; simulator: AmplifyAppSyncSimulator }> { let config: any = processTransformerStacks(transformerOutput); @@ -65,7 +66,7 @@ export async function deploy( export async function reDeploy( transformerOutput: any, simulator: AmplifyAppSyncSimulator, - client?: DynamoDB, + client?: DynamoDBClient, ): Promise<{ config: any; simulator: AmplifyAppSyncSimulator }> { let config: any = processTransformerStacks(transformerOutput); config.appSync.apiKey = 'da-fake-api-key'; diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/helpers.ts b/packages/amplify-util-mock/src/utils/dynamo-db/helpers.ts index 76d4da04e50..052da8ab2dc 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/helpers.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/helpers.ts @@ -1,8 +1,8 @@ -import { DynamoDB } from 'aws-sdk'; +import { DynamoDBClient, DescribeTableCommand } from '@aws-sdk/client-dynamodb'; const MILLI_SECONDS = 1000; export async function waitTillTableStateIsActive( - dynamoDBClient: DynamoDB, + dynamoDBClient: DynamoDBClient, tableName: string, maximumWait: number = 15 * MILLI_SECONDS, ): Promise { @@ -12,7 +12,7 @@ export async function waitTillTableStateIsActive( let timeoutHandle; /* eslint-enable */ const checkStatus = async () => { - const tableDescription = await dynamoDBClient.describeTable({ TableName: tableName }).promise(); + const tableDescription = await dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName })); if (tableDescription.Table.TableStatus === 'ACTIVE') { clearTimeout(timeoutHandle); clearInterval(intervalHandle); diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts index 878d759567d..74eb670f195 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts @@ -1,14 +1,14 @@ -import { DynamoDB } from 'aws-sdk'; +import { DynamoDBClient, ListTablesCommand } from '@aws-sdk/client-dynamodb'; import { createTables, describeTables, getUpdateTableInput, updateTables } from './utils'; -import { CreateTableInput } from 'aws-sdk/clients/dynamodb'; +import { CreateTableInput } from '@aws-sdk/client-dynamodb'; export type MockDynamoDBConfig = { tables: { Properties: CreateTableInput; isNewlyAdded: boolean }[]; }; -export async function createAndUpdateTable(dynamoDbClient: DynamoDB, config: MockDynamoDBConfig): Promise { +export async function createAndUpdateTable(dynamoDbClient: DynamoDBClient, config: MockDynamoDBConfig): Promise { const tables = config.tables.map((table) => table.Properties); - const existingTables = await dynamoDbClient.listTables().promise(); + const existingTables = await dynamoDbClient.send(new ListTablesCommand({})); const existingTablesWithDetails = await describeTables(dynamoDbClient, existingTables.TableNames); const tablesToCreate = tables.filter((t) => { const tableName = t.TableName; diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/utils.ts b/packages/amplify-util-mock/src/utils/dynamo-db/utils.ts index 629a8ebfbef..3b6dced7d35 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/utils.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/utils.ts @@ -1,16 +1,16 @@ -import { DynamoDB } from 'aws-sdk'; -import { CreateTableInput, GlobalSecondaryIndexUpdate, TableDescription, UpdateTableInput } from 'aws-sdk/clients/dynamodb'; +import { DynamoDBClient, CreateTableCommand, UpdateTableCommand, DescribeTableCommand } from '@aws-sdk/client-dynamodb'; +import { CreateTableInput, GlobalSecondaryIndexUpdate, TableDescription, UpdateTableInput } from '@aws-sdk/client-dynamodb'; import _ from 'lodash'; import { waitTillTableStateIsActive } from './helpers'; -export async function createTables(dynamoDbClient: DynamoDB, tables: CreateTableInput[]): Promise { +export async function createTables(dynamoDbClient: DynamoDBClient, tables: CreateTableInput[]): Promise { for (const table of tables) { console.log(`Creating new table ${table.TableName}`); - await dynamoDbClient.createTable(table).promise(); + await dynamoDbClient.send(new CreateTableCommand(table)); } } -export async function updateTables(dynamoDbClient: DynamoDB, tables: UpdateTableInput[]): Promise { +export async function updateTables(dynamoDbClient: DynamoDBClient, tables: UpdateTableInput[]): Promise { for (const table of tables) { const updateType = table.GlobalSecondaryIndexUpdates[0].Delete ? 'Deleting' : 'Creating'; const indexName = @@ -19,17 +19,17 @@ export async function updateTables(dynamoDbClient: DynamoDB, tables: UpdateTable : table.GlobalSecondaryIndexUpdates[0].Create.IndexName; await waitTillTableStateIsActive(dynamoDbClient, table.TableName); console.log(`${updateType} index ${indexName} on ${table.TableName}`); - await dynamoDbClient.updateTable(table).promise(); + await dynamoDbClient.send(new UpdateTableCommand(table)); } } -export async function describeTables(dynamoDbClient: DynamoDB, tableNames: string[]): Promise> { +export async function describeTables(dynamoDbClient: DynamoDBClient, tableNames: string[]): Promise> { const tableDetails: Record = {}; if (_.isEmpty(tableNames)) { return tableDetails; } for (const tableName of tableNames) { - const tableDescription = await dynamoDbClient.describeTable({ TableName: tableName }).promise(); + const tableDescription = await dynamoDbClient.send(new DescribeTableCommand({ TableName: tableName })); if (tableDescription.Table) { tableDetails[tableName] = tableDescription.Table; } diff --git a/yarn.lock b/yarn.lock index 2a371806072..dacb7cc1f70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -904,6 +904,7 @@ __metadata: "@aws-amplify/graphql-transformer-core": ^2.11.1 "@aws-amplify/graphql-transformer-interfaces": ^3.12.0 "@aws-amplify/graphql-transformer-migrator": ^2.2.32 + "@aws-sdk/client-dynamodb": ^3.624.0 "@hapi/topo": ^5.0.0 "@types/detect-port": ^1.3.0 "@types/jest": ^29.0.0 @@ -5828,7 +5829,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.821.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": +"@aws-sdk/types@npm:3.821.0": version: 3.821.0 resolution: "@aws-sdk/types@npm:3.821.0" dependencies: @@ -5838,7 +5839,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.887.0": +"@aws-sdk/types@npm:3.887.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.887.0 resolution: "@aws-sdk/types@npm:3.887.0" dependencies: @@ -10402,16 +10403,6 @@ __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/abort-controller@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/abort-controller@npm:4.1.1" @@ -10473,20 +10464,7 @@ __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/config-resolver@npm:^4.2.2": +"@smithy/config-resolver@npm:^4.1.4, @smithy/config-resolver@npm:^4.2.2": version: 4.2.2 resolution: "@smithy/config-resolver@npm:4.2.2" dependencies: @@ -10515,7 +10493,7 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.11.0": +"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.5.3": version: 3.11.0 resolution: "@smithy/core@npm:3.11.0" dependencies: @@ -10534,23 +10512,6 @@ __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/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" @@ -10564,20 +10525,7 @@ __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/credential-provider-imds@npm:^4.1.2": +"@smithy/credential-provider-imds@npm:^4.0.6, @smithy/credential-provider-imds@npm:^4.1.2": version: 4.1.2 resolution: "@smithy/credential-provider-imds@npm:4.1.2" dependencies: @@ -10726,20 +10674,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.2.1": +"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1": version: 5.2.1 resolution: "@smithy/fetch-http-handler@npm:5.2.1" dependencies: @@ -10788,19 +10723,7 @@ __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-node@npm:^4.1.1": +"@smithy/hash-node@npm:^4.0.4, @smithy/hash-node@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/hash-node@npm:4.1.1" dependencies: @@ -10844,17 +10767,7 @@ __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/invalid-dependency@npm:^4.1.1": +"@smithy/invalid-dependency@npm:^4.0.4, @smithy/invalid-dependency@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/invalid-dependency@npm:4.1.1" dependencies: @@ -10882,16 +10795,7 @@ __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/is-array-buffer@npm:^4.1.0": +"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/is-array-buffer@npm:4.1.0" dependencies: @@ -10933,18 +10837,7 @@ __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-content-length@npm:^4.1.1": +"@smithy/middleware-content-length@npm:^4.0.4, @smithy/middleware-content-length@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/middleware-content-length@npm:4.1.1" dependencies: @@ -10971,23 +10864,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.2.2": +"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2": version: 4.2.2 resolution: "@smithy/middleware-endpoint@npm:4.2.2" dependencies: @@ -11020,24 +10897,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.2.3": +"@smithy/middleware-retry@npm:^4.1.12, @smithy/middleware-retry@npm:^4.2.3": version: 4.2.3 resolution: "@smithy/middleware-retry@npm:4.2.3" dependencies: @@ -11065,18 +10925,7 @@ __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-serde@npm:^4.1.1": +"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/middleware-serde@npm:4.1.1" dependencies: @@ -11097,17 +10946,7 @@ __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/middleware-stack@npm:^4.1.1": +"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/middleware-stack@npm:4.1.1" dependencies: @@ -11129,19 +10968,7 @@ __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-config-provider@npm:^4.2.2": +"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2": version: 4.2.2 resolution: "@smithy/node-config-provider@npm:4.2.2" dependencies: @@ -11166,20 +10993,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.2.1": +"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1": version: 4.2.1 resolution: "@smithy/node-http-handler@npm:4.2.1" dependencies: @@ -11202,17 +11016,7 @@ __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/property-provider@npm:^4.1.1": +"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/property-provider@npm:4.1.1" dependencies: @@ -11232,17 +11036,7 @@ __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/protocol-http@npm:^5.2.1": +"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1": version: 5.2.1 resolution: "@smithy/protocol-http@npm:5.2.1" dependencies: @@ -11263,17 +11057,6 @@ __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-builder@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/querystring-builder@npm:4.1.1" @@ -11295,16 +11078,6 @@ __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/querystring-parser@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/querystring-parser@npm:4.1.1" @@ -11324,15 +11097,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.1.2": version: 4.1.2 resolution: "@smithy/service-error-classification@npm:4.1.2" @@ -11352,17 +11116,7 @@ __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/shared-ini-file-loader@npm:^4.2.0": +"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/shared-ini-file-loader@npm:4.2.0" dependencies: @@ -11388,23 +11142,7 @@ __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/signature-v4@npm:^5.2.1": +"@smithy/signature-v4@npm:^5.1.2, @smithy/signature-v4@npm:^5.2.1": version: 5.2.1 resolution: "@smithy/signature-v4@npm:5.2.1" dependencies: @@ -11435,22 +11173,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.6.2": +"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2": version: 4.6.2 resolution: "@smithy/smithy-client@npm:4.6.2" dependencies: @@ -11474,16 +11197,7 @@ __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/types@npm:^4.5.0": +"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0": version: 4.5.0 resolution: "@smithy/types@npm:4.5.0" dependencies: @@ -11503,18 +11217,7 @@ __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/url-parser@npm:^4.1.1": +"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/url-parser@npm:4.1.1" dependencies: @@ -11536,18 +11239,7 @@ __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-base64@npm:^4.1.0": +"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-base64@npm:4.1.0" dependencies: @@ -11567,16 +11259,7 @@ __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-browser@npm:^4.1.0": +"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-body-length-browser@npm:4.1.0" dependencies: @@ -11594,16 +11277,7 @@ __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-body-length-node@npm:^4.1.0": +"@smithy/util-body-length-node@npm:^4.0.0, @smithy/util-body-length-node@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-body-length-node@npm:4.1.0" dependencies: @@ -11632,16 +11306,6 @@ __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-buffer-from@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-buffer-from@npm:4.1.0" @@ -11661,16 +11325,7 @@ __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-config-provider@npm:^4.1.0": +"@smithy/util-config-provider@npm:^4.0.0, @smithy/util-config-provider@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-config-provider@npm:4.1.0" dependencies: @@ -11692,20 +11347,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.1.2": +"@smithy/util-defaults-mode-browser@npm:^4.0.19, @smithy/util-defaults-mode-browser@npm:^4.1.2": version: 4.1.2 resolution: "@smithy/util-defaults-mode-browser@npm:4.1.2" dependencies: @@ -11733,22 +11375,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.1.2": +"@smithy/util-defaults-mode-node@npm:^4.0.19, @smithy/util-defaults-mode-node@npm:^4.1.2": version: 4.1.2 resolution: "@smithy/util-defaults-mode-node@npm:4.1.2" dependencies: @@ -11774,18 +11401,7 @@ __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-endpoints@npm:^3.1.2": +"@smithy/util-endpoints@npm:^3.0.6, @smithy/util-endpoints@npm:^3.1.2": version: 3.1.2 resolution: "@smithy/util-endpoints@npm:3.1.2" dependencies: @@ -11805,16 +11421,7 @@ __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-hex-encoding@npm:^4.1.0": +"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-hex-encoding@npm:4.1.0" dependencies: @@ -11833,17 +11440,7 @@ __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-middleware@npm:^4.1.1": +"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/util-middleware@npm:4.1.1" dependencies: @@ -11864,18 +11461,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.1.2": +"@smithy/util-retry@npm:^4.0.5, @smithy/util-retry@npm:^4.1.2": version: 4.1.2 resolution: "@smithy/util-retry@npm:4.1.2" dependencies: @@ -11902,23 +11488,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.3.1": +"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1": version: 4.3.1 resolution: "@smithy/util-stream@npm:4.3.1" dependencies: @@ -11943,15 +11513,6 @@ __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-uri-escape@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-uri-escape@npm:4.1.0" @@ -11981,17 +11542,7 @@ __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-utf8@npm:^4.1.0": +"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0": version: 4.1.0 resolution: "@smithy/util-utf8@npm:4.1.0" dependencies: @@ -12012,18 +11563,7 @@ __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.1.1": +"@smithy/util-waiter@npm:^4.0.5, @smithy/util-waiter@npm:^4.1.1": version: 4.1.1 resolution: "@smithy/util-waiter@npm:4.1.1" dependencies: From 53f8ed6516fb3a7787cc79b6a730527295fe0fca Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 18 Sep 2025 15:33:40 -0400 Subject: [PATCH 06/51] fix: unit tests --- packages/amplify-util-mock/package.json | 2 + .../__tests__/utils/dynamo-db/helper.test.ts | 86 ++-- .../__tests__/utils/dynamo-db/index.test.ts | 80 ++-- .../__tests__/utils/dynamo-db/util.test.ts | 177 ++++---- yarn.lock | 405 +++++++++++++++++- 5 files changed, 551 insertions(+), 199 deletions(-) diff --git a/packages/amplify-util-mock/package.json b/packages/amplify-util-mock/package.json index 2b8b287a451..58024f63e64 100644 --- a/packages/amplify-util-mock/package.json +++ b/packages/amplify-util-mock/package.json @@ -81,6 +81,8 @@ "aws-appsync": "^4.1.4", "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", "aws-sdk-mock": "^6.2.0", "axios": "^1.11.0", "constructs": "^10.0.5", diff --git a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/helper.test.ts b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/helper.test.ts index c3cb083e1d4..8ce021c40f2 100644 --- a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/helper.test.ts +++ b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/helper.test.ts @@ -1,82 +1,68 @@ import { waitTillTableStateIsActive } from '../../../utils/dynamo-db/helpers'; -import AWS_MOCK from 'aws-sdk-mock'; -import * as AWS from 'aws-sdk'; -import { DynamoDB } from 'aws-sdk'; +import { DynamoDBClient, DescribeTableCommand } from '@aws-sdk/client-dynamodb'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; + +const ddbMock = mockClient(DynamoDBClient); describe('waitTillTableStateIsActive', () => { - const describeTableMock = jest.fn(); beforeEach(() => { jest.resetAllMocks(); jest.useFakeTimers(); - AWS_MOCK.setSDKInstance(AWS); + ddbMock.reset(); }); afterEach(() => { jest.useRealTimers(); }); it('should wait for table to be in active state', async () => { - describeTableMock.mockImplementation(({ TableName }) => ({ - promise: jest.fn().mockResolvedValue({ - Table: { - TableName, - TableStatus: 'ACTIVE', - }, - }), - })); - const dynamoDBClient = { - describeTable: describeTableMock, - }; + ddbMock.on(DescribeTableCommand).resolves({ + Table: { + TableName: 'table1', + TableStatus: 'ACTIVE', + }, + }); - const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(dynamoDBClient as unknown as DynamoDB, 'table1'); + const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(ddbMock as unknown as DynamoDBClient, 'table1'); jest.advanceTimersByTime(1000); await waitTillTableStateIsActivePromise; - expect(describeTableMock.mock.calls[0][0]).toEqual({ TableName: 'table1' }); + expect(ddbMock).toHaveReceivedNthCommandWith(1, DescribeTableCommand, { TableName: 'table1' }); + expect(ddbMock.commandCalls(DescribeTableCommand)).toHaveLength(1); }); it('should reject the promise when table does not become active for timeout period', async () => { - describeTableMock.mockImplementation(({ TableName }) => ({ - promise: jest.fn().mockResolvedValue({ - Table: { - TableName, - TableStatus: 'UPDATING', - }, - }), - })); + ddbMock.on(DescribeTableCommand).resolves({ + Table: { + TableName: 'table1', + TableStatus: 'UPDATING', + }, + }); - const dynamoDBClient = { - describeTable: describeTableMock, - }; - const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(dynamoDBClient as unknown as DynamoDB, 'table1'); + const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(ddbMock as unknown as DynamoDBClient, 'table1'); jest.runOnlyPendingTimers(); await expect(waitTillTableStateIsActivePromise).rejects.toMatchObject({ message: 'Waiting for table status to turn ACTIVE timed out' }); - expect(describeTableMock).toHaveBeenCalled(); + expect(ddbMock).toHaveReceivedCommand(DescribeTableCommand); }); it('should periodically call check status', async () => { let callCount = 0; - - describeTableMock.mockImplementation(({ TableName }) => { + ddbMock.on(DescribeTableCommand).callsFake(() => { callCount += 1; - return { - promise: jest.fn().mockResolvedValue({ - Table: { - TableName, - TableStatus: callCount === 3 ? 'ACTIVE' : 'UPDATING', - }, - }), - }; + return Promise.resolve({ + Table: { + TableName: 'table1', + TableStatus: callCount === 3 ? 'ACTIVE' : 'UPDATING', + }, + }); }); - const dynamoDBClient = { - describeTable: describeTableMock, - }; - const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(dynamoDBClient as unknown as DynamoDB, 'table1'); + const waitTillTableStateIsActivePromise = waitTillTableStateIsActive(ddbMock as unknown as DynamoDBClient, 'table1'); jest.advanceTimersByTime(4000); await waitTillTableStateIsActivePromise; - expect(describeTableMock).toBeCalledTimes(4); - expect(describeTableMock.mock.calls[0][0]).toEqual({ TableName: 'table1' }); - expect(describeTableMock.mock.calls[1][0]).toEqual({ TableName: 'table1' }); - expect(describeTableMock.mock.calls[2][0]).toEqual({ TableName: 'table1' }); - expect(describeTableMock.mock.calls[3][0]).toEqual({ TableName: 'table1' }); + expect(ddbMock.commandCalls(DescribeTableCommand)).toHaveLength(4); + expect(ddbMock).toHaveReceivedNthCommandWith(1, DescribeTableCommand, { TableName: 'table1' }); + expect(ddbMock).toHaveReceivedNthCommandWith(2, DescribeTableCommand, { TableName: 'table1' }); + expect(ddbMock).toHaveReceivedNthCommandWith(3, DescribeTableCommand, { TableName: 'table1' }); + expect(ddbMock).toHaveReceivedNthCommandWith(4, DescribeTableCommand, { TableName: 'table1' }); }); }); diff --git a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/index.test.ts b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/index.test.ts index 4a77f76ea5e..0cb640835dd 100644 --- a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/index.test.ts +++ b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/index.test.ts @@ -1,36 +1,41 @@ import { createAndUpdateTable, MockDynamoDBConfig } from '../../../utils/dynamo-db'; -import AWS_MOCK from 'aws-sdk-mock'; -import * as AWS from 'aws-sdk'; -import { DynamoDB } from 'aws-sdk'; - +import { + AttributeDefinition, + CreateTableCommand, + DynamoDBClient, + KeySchemaElement, + ListTablesCommand, + UpdateTableCommand, +} from '@aws-sdk/client-dynamodb'; +import { mockClient } from 'aws-sdk-client-mock'; import { createTables, describeTables, getUpdateTableInput, updateTables } from '../../../utils/dynamo-db/utils'; -import { CreateTableInput, GlobalSecondaryIndex } from 'aws-sdk/clients/dynamodb'; + +const ddbMock = mockClient(DynamoDBClient); jest.mock('../../../utils/dynamo-db/utils'); describe('createAndUpdateTable', () => { - const describeTablesMock = jest.fn(); - const table1Input: CreateTableInput = { + const table1Input = { TableName: 'table1', AttributeDefinitions: [ { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, { AttributeName: 'name', AttributeType: 'S', - }, + } as AttributeDefinition, ], KeySchema: [ { AttributeName: 'id', KeyType: 'HASH', - }, + } as KeySchemaElement, ], }; - const indexByName: GlobalSecondaryIndex = { + const indexByName = { IndexName: 'byName', KeySchema: [ { @@ -38,12 +43,11 @@ describe('createAndUpdateTable', () => { KeyType: 'HASH', }, ], - Projection: { ProjectionType: 'ALL', }, }; - const indexByContent: GlobalSecondaryIndex = { + const indexByContent = { IndexName: 'index1', KeySchema: [ { @@ -51,20 +55,19 @@ describe('createAndUpdateTable', () => { KeyType: 'HASH', }, ], - Projection: { ProjectionType: 'ALL', }, }; - const table2Input: CreateTableInput = { + const table2Input = { ...table1Input, AttributeDefinitions: [ ...table1Input.AttributeDefinitions, { AttributeName: 'content', AttributeType: 'S', - }, + } as AttributeDefinition, ], TableName: 'table2', GlobalSecondaryIndexes: [indexByName, indexByContent], @@ -73,7 +76,7 @@ describe('createAndUpdateTable', () => { beforeEach(() => { jest.resetAllMocks(); jest.useFakeTimers(); - AWS_MOCK.setSDKInstance(AWS); + ddbMock.reset(); }); it('should create new tables when they are missing', async () => { @@ -81,26 +84,18 @@ describe('createAndUpdateTable', () => { tables: [{ Properties: table1Input, isNewlyAdded: true }], }; - const mockListTables = jest.fn().mockReturnValue({ - promise: jest.fn().mockResolvedValue({ TableNames: [] }), - }); - - describeTablesMock.mockReturnValue({}); + ddbMock.on(ListTablesCommand).resolves({ TableNames: [] }); + ddbMock.on(CreateTableCommand).resolves({}); + ddbMock.on(UpdateTableCommand).resolves({}); - const ddbClient = { - describeTables: describeTablesMock, - listTables: mockListTables, - }; - await createAndUpdateTable(ddbClient as unknown as DynamoDB, mockDDBConfig); - expect(createTables).toHaveBeenCalledWith(ddbClient, [table1Input]); + //const ddbClient = new DynamoDBClient({}); + await createAndUpdateTable(ddbMock as unknown as DynamoDBClient, mockDDBConfig); + expect(createTables).toHaveBeenCalledWith(ddbMock as unknown as DynamoDBClient, [table1Input]); expect(getUpdateTableInput).not.toHaveBeenCalled(); - expect(updateTables).toHaveBeenCalledWith(ddbClient, []); + expect(updateTables).toHaveBeenCalledWith(ddbMock as unknown as DynamoDBClient, []); }); it('should update existing table with new GSI', async () => { - const createTablesMock = jest.fn(); - const mockListTables = jest.fn(); - const getUpdateTableInputResult = [ { ...table2Input, @@ -116,13 +111,9 @@ describe('createAndUpdateTable', () => { }, ]; - createTablesMock.mockReturnValue(() => { - jest.fn().mockResolvedValue([]); - }); - - mockListTables.mockReturnValue({ - promise: jest.fn().mockResolvedValue({ TableNames: [table1Input.TableName, table2Input.TableName] }), - }); + ddbMock.on(ListTablesCommand).resolves({ TableNames: [table1Input.TableName, table2Input.TableName] }); + ddbMock.on(CreateTableCommand).resolves({}); + ddbMock.on(UpdateTableCommand).resolves({}); (getUpdateTableInput as jest.Mock).mockImplementation((input) => (input === table2Input ? getUpdateTableInputResult : [])); @@ -137,15 +128,10 @@ describe('createAndUpdateTable', () => { { Properties: table2Input, isNewlyAdded: false }, ], }; - const ddbClient = { - createTables: createTablesMock, - listTables: mockListTables, - getUpdateTableInput, - }; - await createAndUpdateTable(ddbClient as unknown as DynamoDB, mockDDBConfig); - expect(createTables).toHaveBeenCalledWith(ddbClient, []); + await createAndUpdateTable(ddbMock as unknown as DynamoDBClient, mockDDBConfig); + expect(createTables).toHaveBeenCalledWith(ddbMock as unknown as DynamoDBClient, []); expect(getUpdateTableInput).toHaveBeenCalledWith(table2Input, { ...table2Input, GlobalSecondaryIndex: [] }); - expect(updateTables).toHaveBeenCalledWith(ddbClient, getUpdateTableInputResult); + expect(updateTables).toHaveBeenCalledWith(ddbMock as unknown as DynamoDBClient, getUpdateTableInputResult); }); }); diff --git a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/util.test.ts b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/util.test.ts index 2aad9996300..c0f6df3ac79 100644 --- a/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/util.test.ts +++ b/packages/amplify-util-mock/src/__tests__/utils/dynamo-db/util.test.ts @@ -1,27 +1,32 @@ import * as ddbUtils from '../../../utils/dynamo-db/utils'; -import AWS_MOCK from 'aws-sdk-mock'; -import * as AWS from 'aws-sdk'; -import { DescribeTableOutput, CreateTableInput, UpdateTableInput, TableDescription } from 'aws-sdk/clients/dynamodb'; +import { + DynamoDBClient, + DescribeTableCommand, + CreateTableCommand, + UpdateTableCommand, + KeySchemaElement, + GlobalSecondaryIndexDescription, + AttributeDefinition, + GlobalSecondaryIndexUpdate, + ProjectionType, +} from '@aws-sdk/client-dynamodb'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; import { waitTillTableStateIsActive } from '../../../utils/dynamo-db/helpers'; -import { DynamoDB } from 'aws-sdk'; + +const ddbMock = mockClient(DynamoDBClient); jest.mock('../../../utils/dynamo-db/helpers'); describe('DynamoDB Utils', () => { beforeEach(() => { - jest.resetAllMocks(); - AWS_MOCK.setSDKInstance(require('aws-sdk')); + ddbMock.reset(); }); describe('describeTables', () => { - const describeTableMock = jest.fn(); - beforeEach(() => { - AWS_MOCK.mock('DynamoDB', 'describeTable', describeTableMock); - }); - it('should call DynamoDB Clients describe table and collect the results', async () => { const tableNames = ['table1', 'table2']; - const describeTableResult: Record = { + const describeTableResult = { table1: { Table: { TableName: 'table1', @@ -29,11 +34,11 @@ describe('DynamoDB Utils', () => { { AttributeName: 'id', KeyType: 'HASH', - }, + } as KeySchemaElement, { AttributeName: 'createdAt', KeyType: 'RANGE', - }, + } as KeySchemaElement, ], GlobalSecondaryIndexes: [ { @@ -41,7 +46,7 @@ describe('DynamoDB Utils', () => { Projection: { ProjectionType: 'ALL', }, - }, + } as GlobalSecondaryIndexDescription, ], }, }, @@ -52,11 +57,11 @@ describe('DynamoDB Utils', () => { { AttributeName: 'table2_id', KeyType: 'HASH', - }, + } as KeySchemaElement, { AttributeName: 'createdAt', KeyType: 'RANGE', - }, + } as KeySchemaElement, ], GlobalSecondaryIndexes: [ { @@ -64,38 +69,33 @@ describe('DynamoDB Utils', () => { Projection: { ProjectionType: 'ALL', }, - }, + } as GlobalSecondaryIndexDescription, ], }, }, }; - describeTableMock.mockImplementation(function (params, cb) { - const tableName = params.TableName; - cb(null, describeTableResult[tableName]); - }); - const client = new AWS.DynamoDB(); + + ddbMock.on(DescribeTableCommand, { TableName: 'table1' }).resolves(describeTableResult.table1); + ddbMock.on(DescribeTableCommand, { TableName: 'table2' }).resolves(describeTableResult.table2); + + const client = new DynamoDBClient({}); await expect(ddbUtils.describeTables(client, tableNames)).resolves.toEqual({ table1: describeTableResult.table1.Table, table2: describeTableResult.table2.Table, }); - expect(describeTableMock).toHaveBeenCalledTimes(2); - expect(describeTableMock.mock.calls[0][0]).toEqual({ TableName: 'table1' }); - expect(describeTableMock.mock.calls[1][0]).toEqual({ TableName: 'table2' }); + expect(ddbMock).toHaveReceivedNthCommandWith(1, DescribeTableCommand, { TableName: 'table1' }); + expect(ddbMock).toHaveReceivedNthCommandWith(2, DescribeTableCommand, { TableName: 'table2' }); + expect(ddbMock.commandCalls(DescribeTableCommand)).toHaveLength(2); }); it('should early exit for empty tables', async () => { - const tableNames = []; - const client = { - describeTable: describeTableMock, - }; - await expect(ddbUtils.describeTables(client as unknown as DynamoDB, tableNames)).resolves.toEqual({}); - expect(describeTableMock).toHaveBeenCalledTimes(0); + const tableNames: string[] = []; + await expect(ddbUtils.describeTables(ddbMock as unknown as DynamoDBClient, tableNames)).resolves.toEqual({}); + expect(ddbMock.commandCalls(DescribeTableCommand)).toHaveLength(0); }); }); describe('createTables', () => { - const createTableMock = jest.fn(); - it('should call createTable for each table', async () => { const tableInputs = [ { @@ -104,13 +104,13 @@ describe('DynamoDB Utils', () => { { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, ], KeySchema: [ { AttributeName: 'id', KeyType: 'HASH', - }, + } as KeySchemaElement, ], }, { @@ -119,46 +119,38 @@ describe('DynamoDB Utils', () => { { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, ], KeySchema: [ { AttributeName: 'id', KeyType: 'HASH', - }, + } as KeySchemaElement, ], }, ]; - createTableMock.mockImplementation(() => { - return { - promise: jest.fn().mockResolvedValue(null), - }; - }); - const client = { - createTable: createTableMock, - }; - await ddbUtils.createTables(client as unknown as DynamoDB, tableInputs); - expect(createTableMock).toHaveBeenCalledTimes(2); - expect(createTableMock.mock.calls[0][0]).toEqual(tableInputs[0]); - expect(createTableMock.mock.calls[1][0]).toEqual(tableInputs[1]); + ddbMock.on(CreateTableCommand).resolves({}); + + await ddbUtils.createTables(ddbMock as unknown as DynamoDBClient, tableInputs); + expect(ddbMock).toHaveReceivedNthCommandWith(1, CreateTableCommand, tableInputs[0]); + expect(ddbMock).toHaveReceivedNthCommandWith(2, CreateTableCommand, tableInputs[1]); + expect(ddbMock.commandCalls(CreateTableCommand)).toHaveLength(2); }); }); describe('updateTables', () => { - const updateTableMock = jest.fn(); - it('should wait for table to be in ACTIVE state before updating', async () => { const waitTillTableStateIsActiveMock = (waitTillTableStateIsActive as jest.Mock).mockResolvedValue(undefined); - const tables: UpdateTableInput[] = [ + const tables = [ { TableName: 'table1', AttributeDefinitions: [ { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, ], GlobalSecondaryIndexUpdates: [ { @@ -172,7 +164,7 @@ describe('DynamoDB Utils', () => { ], Projection: { ProjectionType: 'ALL' }, }, - }, + } as GlobalSecondaryIndexUpdate, ], }, { @@ -181,11 +173,11 @@ describe('DynamoDB Utils', () => { { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, { AttributeName: 'createdAt', AttributeType: 'S', - }, + } as AttributeDefinition, ], GlobalSecondaryIndexUpdates: [ { @@ -203,40 +195,25 @@ describe('DynamoDB Utils', () => { ], Projection: { ProjectionType: 'ALL' }, }, - }, + } as GlobalSecondaryIndexUpdate, ], }, ]; - updateTableMock.mockImplementation((params, callback) => { - const { TableName, AttributeDefinitions, GlobalSecondaryIndexUpdates } = params; - const response = { - TableDescription: { - TableName, - AttributeDefinitions, - GlobalSecondaryIndexes: GlobalSecondaryIndexUpdates.filter((update) => update.Create).map((gsi) => gsi.Update), - }, - }; - if (typeof callback === 'function') { - callback(null, response); - return undefined; - } else { - return { - promise: jest.fn().mockResolvedValue(response), - }; - } + ddbMock.on(UpdateTableCommand).resolves({ + TableDescription: { + TableName: 'table1', + AttributeDefinitions: [], + GlobalSecondaryIndexes: [], + }, }); - const client = { - updateTable: updateTableMock, - }; - const updatePromise = ddbUtils.updateTables(client as unknown as DynamoDB, tables); - await updatePromise; - - expect(updateTableMock).toHaveBeenCalledTimes(2); - expect(updateTableMock.mock.calls[0][0]).toEqual(tables[0]); - expect(updateTableMock.mock.calls[1][0]).toEqual(tables[1]); + const client = new DynamoDBClient({}); + await ddbUtils.updateTables(client, tables); + expect(ddbMock).toHaveReceivedNthCommandWith(1, UpdateTableCommand, tables[0]); + expect(ddbMock).toHaveReceivedNthCommandWith(2, UpdateTableCommand, tables[1]); + expect(ddbMock.commandCalls(UpdateTableCommand)).toHaveLength(2); expect(waitTillTableStateIsActiveMock).toHaveBeenCalledTimes(2); expect(waitTillTableStateIsActiveMock).toHaveBeenNthCalledWith(1, client, tables[0].TableName); expect(waitTillTableStateIsActiveMock).toHaveBeenNthCalledWith(2, client, tables[1].TableName); @@ -250,21 +227,21 @@ describe('DynamoDB Utils', () => { { AttributeName: 'id', AttributeType: 'S', - }, + } as AttributeDefinition, { AttributeName: 'Name', AttributeType: 'S', - }, + } as AttributeDefinition, { AttributeName: 'Address', AttributeType: 'S', - }, + } as AttributeDefinition, ], KeySchema: [ { AttributeName: 'id', KeyType: 'HASH', - }, + } as KeySchemaElement, ], }; const existingIndex = { @@ -273,10 +250,10 @@ describe('DynamoDB Utils', () => { { AttributeName: 'address', KeyType: 'HASH', - }, + } as KeySchemaElement, ], Projection: { - ProjectionType: 'ALL', + ProjectionType: 'ALL' as ProjectionType, }, }; const newIndex = { @@ -285,18 +262,18 @@ describe('DynamoDB Utils', () => { { AttributeName: 'name', KeyType: 'HASH', - }, + } as KeySchemaElement, ], Projection: { - ProjectionType: 'ALL', + ProjectionType: 'ALL' as ProjectionType, }, }; it('should add a new index', () => { - const createTableInput: CreateTableInput = { + const createTableInput = { ...baseSchema, GlobalSecondaryIndexes: [newIndex, existingIndex], }; - const existingTableConfig: TableDescription = { + const existingTableConfig = { ...baseSchema, GlobalSecondaryIndexes: [existingIndex], }; @@ -312,10 +289,10 @@ describe('DynamoDB Utils', () => { ]); }); it('should delete a new index', () => { - const createTableInput: CreateTableInput = { + const createTableInput = { ...baseSchema, }; - const existingTableConfig: TableDescription = { + const existingTableConfig = { ...baseSchema, GlobalSecondaryIndexes: [existingIndex], }; @@ -328,11 +305,11 @@ describe('DynamoDB Utils', () => { }); it('should throw error if the table names dont match', () => { - const createTableInput: CreateTableInput = { + const createTableInput = { ...baseSchema, TableName: 'different-name', }; - const existingTableConfig: TableDescription = { + const existingTableConfig = { ...baseSchema, GlobalSecondaryIndexes: [existingIndex], }; @@ -340,11 +317,11 @@ describe('DynamoDB Utils', () => { }); it('should generate sepearate inputs when there is an addition and deletion of index', () => { - const createTableInput: CreateTableInput = { + const createTableInput = { ...baseSchema, GlobalSecondaryIndexes: [newIndex], }; - const existingTableConfig: TableDescription = { + const existingTableConfig = { ...baseSchema, GlobalSecondaryIndexes: [existingIndex], }; diff --git a/yarn.lock b/yarn.lock index dacb7cc1f70..434451b7448 100644 --- a/yarn.lock +++ b/yarn.lock @@ -919,6 +919,8 @@ __metadata: aws-appsync: ^4.1.4 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 aws-sdk-mock: ^6.2.0 axios: ^1.11.0 chokidar: ^3.5.3 @@ -6435,6 +6437,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" @@ -6735,6 +6748,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" @@ -8886,6 +8906,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" @@ -8922,6 +8949,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:30.1.2": + version: 30.1.2 + resolution: "@jest/expect-utils@npm:30.1.2" + dependencies: + "@jest/get-type": 30.1.0 + checksum: 5b6c4d400ad0bd22960bd77750baf55b24bf1ebdc2cec328afe275967db76bf94f797ca4c9817cdb86bc7820b9219d3f493705f3fa94fe7720960e47805a8e1b + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -8983,6 +9019,13 @@ __metadata: languageName: node linkType: hard +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: 3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac + languageName: node + linkType: hard + "@jest/globals@npm:^27.5.1": version: 27.5.1 resolution: "@jest/globals@npm:27.5.1" @@ -9006,6 +9049,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" @@ -9043,6 +9096,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/schemas@npm:30.0.5" + dependencies: + "@sinclair/typebox": ^0.34.0 + checksum: 449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -9156,6 +9218,21 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/types@npm:30.0.5" + dependencies: + "@jest/pattern": 30.0.1 + "@jest/schemas": 30.0.5 + "@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: fd097a390e36edacbd2c92a8378ec0cd67abec5e234bab7a80aec6eb8625568052b0c32acf472388d04c4cf384b8fa2871d0d12a56b4b06eaea93f2c6df0ec6c + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -10296,6 +10373,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.41 + resolution: "@sinclair/typebox@npm:0.34.41" + checksum: 0fb61fc2f90c25e30b19b0096eb8ab3ccef401d3e2acfce42168ff0ee877ba5981c8243fa6b1035ac756cde95316724e978b2837dd642d7e4e095de03a999c90 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -12002,6 +12086,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" @@ -12065,6 +12158,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" @@ -12250,6 +12350,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" @@ -12268,6 +12375,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" @@ -12591,6 +12707,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" @@ -12607,6 +12739,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" @@ -12767,6 +12906,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" @@ -12993,6 +13141,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" @@ -13959,7 +14149,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 @@ -14388,6 +14578,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" @@ -14588,6 +14785,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" @@ -15704,6 +15929,19 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.2.0": + version: 5.3.3 + resolution: "chai@npm:5.3.3" + 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: b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53 + languageName: node + linkType: hard + "chalk@npm:4.1.0": version: 4.1.0 resolution: "chalk@npm:4.1.0" @@ -15836,6 +16074,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" @@ -15904,6 +16149,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.6 resolution: "cipher-base@npm:1.0.6" @@ -17525,6 +17777,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" @@ -19113,6 +19372,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:>28.1.3": + version: 30.1.2 + resolution: "expect@npm:30.1.2" + dependencies: + "@jest/expect-utils": 30.1.2 + "@jest/get-type": 30.1.0 + jest-matcher-utils: 30.1.2 + jest-message-util: 30.1.0 + jest-mock: 30.0.5 + jest-util: 30.0.5 + checksum: 467c1b69549e75a1a09f3feec335e0dc968cd71370361b5d83248351cf77e705e8ddf38a4885e32a50237502ced7fcc9106462f59f33c4796462e95938b8ca19 + languageName: node + linkType: hard + "expect@npm:^27.5.1": version: 27.5.1 resolution: "expect@npm:27.5.1" @@ -22567,6 +22840,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:30.1.2": + version: 30.1.2 + resolution: "jest-diff@npm:30.1.2" + dependencies: + "@jest/diff-sequences": 30.0.1 + "@jest/get-type": 30.1.0 + chalk: ^4.1.2 + pretty-format: 30.0.5 + checksum: 5baba5c54d044faf77540d2b97f947ce2a735c529bdca23ccd25669085ba3912eef2a8f66f4d765e8e416b1e10b95cb1dded0ebc1633efdbef37706b4e767ecb + 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" @@ -22737,6 +23022,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:30.1.2": + version: 30.1.2 + resolution: "jest-matcher-utils@npm:30.1.2" + dependencies: + "@jest/get-type": 30.1.0 + chalk: ^4.1.2 + jest-diff: 30.1.2 + pretty-format: 30.0.5 + checksum: c4f81fc7d72f94b18dff807adf787d6fd081c3e150148fbbcb1559c353b27890989bcf7e10b15d763625565175bf30019e93a014078ff291646a88a9acdfc9a4 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^27.5.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -22761,6 +23058,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:30.1.0": + version: 30.1.0 + resolution: "jest-message-util@npm:30.1.0" + dependencies: + "@babel/code-frame": ^7.27.1 + "@jest/types": 30.0.5 + "@types/stack-utils": ^2.0.3 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + micromatch: ^4.0.8 + pretty-format: 30.0.5 + slash: ^3.0.0 + stack-utils: ^2.0.6 + checksum: 3884f7e772d64891eca63870f73b89af4e1dce715611c308e1115f7961ed378560bac66c5f9cbee025b06ca530dbd30685362cb8db7b5a48f5f53b75ba79023e + languageName: node + linkType: hard + "jest-message-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-message-util@npm:26.6.2" @@ -22812,6 +23126,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:30.0.5": + version: 30.0.5 + resolution: "jest-mock@npm:30.0.5" + dependencies: + "@jest/types": 30.0.5 + "@types/node": "*" + jest-util: 30.0.5 + checksum: 207fd79297f514a8e26ede9b4b5035e70212b8850a2f460b51d3cc58e8e7c9585bd2dbc5df2475a3321c4cd114b90e0b24190f00d6eeb88c8f088a8ed00416d5 + languageName: node + linkType: hard + "jest-mock@npm:^26.6.2": version: 26.6.2 resolution: "jest-mock@npm:26.6.2" @@ -22855,6 +23180,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" @@ -23087,6 +23419,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:30.0.5": + version: 30.0.5 + resolution: "jest-util@npm:30.0.5" + dependencies: + "@jest/types": 30.0.5 + "@types/node": "*" + chalk: ^4.1.2 + ci-info: ^4.2.0 + graceful-fs: ^4.2.11 + picomatch: ^4.0.2 + checksum: d3808b5f7720044d0464664c795e2b795ed82edf3b5871db74b8b603c3a0a38107668730348d26f92920ca3b8245a99cbbc2c93e77d0abb1f5e27524079a4ba8 + languageName: node + linkType: hard + "jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" @@ -24211,6 +24557,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.0, loupe@npm:^3.1.4": + version: 3.2.1 + resolution: "loupe@npm:3.2.1" + checksum: 910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705 + 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" @@ -24601,7 +24954,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: @@ -26544,6 +26897,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" @@ -27698,6 +28058,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:30.0.5": + version: 30.0.5 + resolution: "pretty-format@npm:30.0.5" + dependencies: + "@jest/schemas": 30.0.5 + ansi-styles: ^5.2.0 + react-is: ^18.3.1 + checksum: 9f6cf1af5c3169093866c80adbfdad32f69c692b62f24ba3ca8cdec8519336123323f896396f9fa40346a41b197c5f6be15aec4d8620819f12496afaaca93f81 + languageName: node + linkType: hard + "pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" @@ -28234,6 +28605,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" @@ -30023,6 +30401,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" @@ -30846,6 +31233,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.4 + resolution: "tinyspy@npm:4.0.4" + checksum: a8020fc17799251e06a8398dcc352601d2770aa91c556b9531ecd7a12581161fd1c14e81cbdaff0c1306c93bfdde8ff6d1c1a3f9bbe6d91604f0fd4e01e2f1eb + languageName: node + linkType: hard + "title-case@npm:^3.0.3": version: 3.0.3 resolution: "title-case@npm:3.0.3" From fabf0724139c09a3583702f4ee0b4657707798fc Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 18 Sep 2025 15:36:18 -0400 Subject: [PATCH 07/51] chore: dedupe --- yarn.lock | 97 +++++++------------------------------------------------ 1 file changed, 12 insertions(+), 85 deletions(-) diff --git a/yarn.lock b/yarn.lock index 434451b7448..4e29c95dea3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6426,18 +6426,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: @@ -6741,14 +6730,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 @@ -12343,14 +12325,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 @@ -12366,16 +12341,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: @@ -12732,14 +12698,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 @@ -12897,16 +12856,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: @@ -16142,14 +16092,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 @@ -28591,10 +28534,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 @@ -28605,13 +28548,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" @@ -30392,16 +30328,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: From 9f05e7cff11dd3be332c2c925c46d00405a3b596 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 19 Sep 2025 11:31:28 -0400 Subject: [PATCH 08/51] refactor: amplify-util-mock --- .../src/data-loader/dynamo-db/index.ts | 6 +- .../dynamodb-simulator.test.ts | 6 +- packages/amplify-util-mock/package.json | 3 +- .../subscriptions-with-auth.e2e.test.ts | 8 --- .../src/__e2e__/utils/index.ts | 5 +- .../api/lambda-trigger-handler.test.ts | 6 +- packages/amplify-util-mock/src/api/api.ts | 2 +- .../src/api/lambda-trigger-handler.ts | 42 +++++++----- yarn.lock | 68 +++++++++++++------ 9 files changed, 86 insertions(+), 60 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 5654500648d..ba5851b6c64 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -14,8 +14,10 @@ import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { endpoint: string; region: 'us-fake-1'; - accessKeyId: 'fake'; - secretAccessKey: 'fake'; + credentials: { + accessKeyId: 'fake'; + secretAccessKey: 'fake'; + }; tableName: string; }; type DynamoDBLoaderConfig = { diff --git a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts index 902e9bc88da..4a9d3d1483f 100644 --- a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts @@ -73,7 +73,7 @@ describe('emulator operations', () => { const dynamo = ddbSimulator.getClient(emu); const tables = await dynamo.send(new ListTablesCommand()); - expect(tables).toEqual({ TableNames: [] }); + expect(tables.TableNames).toEqual(undefined); }); it('should preserve state between restarts with dbPath', async () => { @@ -92,9 +92,7 @@ describe('emulator operations', () => { emulators.push(emuTwo); const dynamoTwo = await ddbSimulator.getClient(emuTwo); const t = await dynamoTwo.send(new ListTablesCommand()); - expect(t).toEqual({ - TableNames: ['foo'], - }); + expect(t.TableNames).toEqual(['foo']); }); it('should start on specific port', async () => { diff --git a/packages/amplify-util-mock/package.json b/packages/amplify-util-mock/package.json index 58024f63e64..3904b5b91fa 100644 --- a/packages/amplify-util-mock/package.json +++ b/packages/amplify-util-mock/package.json @@ -71,6 +71,7 @@ "@aws-amplify/graphql-transformer-interfaces": "^3.12.0", "@aws-amplify/graphql-transformer-migrator": "^2.2.32", "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/client-dynamodb-streams": "^3.624.0", "@types/detect-port": "^1.3.0", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.149", @@ -80,10 +81,8 @@ "amplify-nodejs-function-runtime-provider": "2.5.30", "aws-appsync": "^4.1.4", "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", - "aws-sdk-mock": "^6.2.0", "axios": "^1.11.0", "constructs": "^10.0.5", "graphql": "^15.5.0", diff --git a/packages/amplify-util-mock/src/__e2e__/subscriptions-with-auth.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/subscriptions-with-auth.e2e.test.ts index c6581de21f5..f9a9ac7cd54 100644 --- a/packages/amplify-util-mock/src/__e2e__/subscriptions-with-auth.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/subscriptions-with-auth.e2e.test.ts @@ -4,7 +4,6 @@ import { FeatureFlagProvider, GraphQLTransform } from 'graphql-transformer-core' import { deploy, launchDDBLocal, terminateDDB } from './utils/index'; import AWSAppSyncClient, { AUTH_TYPE } from 'aws-appsync'; import { signUpAddToGroupAndGetJwtToken } from './utils/cognito-utils'; -import AWS = require('aws-sdk'); import gql from 'graphql-tag'; import 'isomorphic-fetch'; import { GraphQLClient } from './utils/graphql-client'; @@ -12,13 +11,6 @@ import { GraphQLClient } from './utils/graphql-client'; // to deal with subscriptions in node env (global as any).WebSocket = require('ws'); -// To overcome of the way of how AmplifyJS picks up currentUserCredentials -const anyAWS = AWS as any; - -if (anyAWS && anyAWS.config && anyAWS.config.credentials) { - delete anyAWS.config.credentials; -} - // delays const SUBSCRIPTION_DELAY = 2000; const PROPAGATAION_DELAY = 5000; diff --git a/packages/amplify-util-mock/src/__e2e__/utils/index.ts b/packages/amplify-util-mock/src/__e2e__/utils/index.ts index 5c25c241bd3..668f20cd0cb 100644 --- a/packages/amplify-util-mock/src/__e2e__/utils/index.ts +++ b/packages/amplify-util-mock/src/__e2e__/utils/index.ts @@ -8,11 +8,10 @@ import _ from 'lodash'; import { processTransformerStacks } from '../../CFNParser/appsync-resource-processor'; import { configureDDBDataSource, createAndUpdateTable } from '../../utils/dynamo-db'; import { getFunctionDetails } from './lambda-helper'; -import { DynamoDB } from 'aws-sdk'; +import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { functionRuntimeContributorFactory } from 'amplify-nodejs-function-runtime-provider'; import { querySearchable } from '../../utils/opensearch'; import { isWindowsPlatform } from '@aws-amplify/amplify-cli-core'; -import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; const invoke = functionRuntimeContributorFactory({}).invoke; @@ -38,7 +37,7 @@ export async function launchDDBLocal() { dbPath, port: null, }); - const client: DynamoDB = await dynamoEmulator.getClient(emulator); + const client: DynamoDBClient = await dynamoEmulator.getClient(emulator); logDebug(dbPath); return { emulator, dbPath, client }; } diff --git a/packages/amplify-util-mock/src/__tests__/api/lambda-trigger-handler.test.ts b/packages/amplify-util-mock/src/__tests__/api/lambda-trigger-handler.test.ts index 2d8326bbd47..91d289543e7 100644 --- a/packages/amplify-util-mock/src/__tests__/api/lambda-trigger-handler.test.ts +++ b/packages/amplify-util-mock/src/__tests__/api/lambda-trigger-handler.test.ts @@ -2,7 +2,7 @@ import { $TSAny, $TSContext } from '@aws-amplify/amplify-cli-core'; import { invokeTrigger } from '../../api/lambda-invoke'; import { isMockable } from '@aws-amplify/amplify-category-function'; import * as lambdaTriggerHandlers from '../../api/lambda-trigger-handler'; -import { DynamoDBStreams, Endpoint } from 'aws-sdk'; +import { DynamoDBStreamsClient } from '@aws-sdk/client-dynamodb-streams'; jest.mock('../../api/lambda-invoke', () => ({ invokeTrigger: jest.fn(), @@ -17,7 +17,7 @@ const isMockableMock = isMockable as jest.MockedFunction; const mockContext = {} as $TSContext; const mockStreamArn = 'mock-arn'; const mockTrigger = { name: 'mock-trigger' }; -const mockDDBEndpoint = new Endpoint('mock'); +const mockDDBEndpoint = 'mock'; describe('Lambda Trigger Handler', () => { beforeEach(() => jest.clearAllMocks()); @@ -66,7 +66,7 @@ describe('Lambda Trigger Handler', () => { const pollForRecordsMock = jest.spyOn(lambdaTriggerHandlers, 'pollDDBStreamAndInvokeLambda').mockResolvedValueOnce(); await lambdaTriggerHandlers.ddbLambdaTriggerHandler(mockContext, mockStreamArn, mockTrigger, mockDDBEndpoint); expect(pollForRecordsMock).toBeCalledTimes(1); - expect(pollForRecordsMock).toBeCalledWith(mockContext, mockStreamArn, expect.any(DynamoDBStreams), mockTrigger); + expect(pollForRecordsMock).toBeCalledWith(mockContext, mockStreamArn, expect.any(DynamoDBStreamsClient), mockTrigger); }); it('Invokes the local lambda when records are available to be processed', async () => { diff --git a/packages/amplify-util-mock/src/api/api.ts b/packages/amplify-util-mock/src/api/api.ts index 861e5627d47..4091cd744bb 100644 --- a/packages/amplify-util-mock/src/api/api.ts +++ b/packages/amplify-util-mock/src/api/api.ts @@ -28,7 +28,7 @@ import { getInvoker } from '@aws-amplify/amplify-category-function'; import { lambdaArnToConfig } from './lambda-arn-to-config'; import { timeConstrainedInvoker } from '../func'; import { ddbLambdaTriggerHandler } from './lambda-trigger-handler'; -import { TableDescription } from 'aws-sdk/clients/dynamodb'; +import { TableDescription } from '@aws-sdk/client-dynamodb'; import { querySearchable } from '../utils/opensearch'; import { getMockOpensearchDataDirectory } from '../utils/mock-directory'; import { buildLambdaTrigger } from './lambda-invoke'; diff --git a/packages/amplify-util-mock/src/api/lambda-trigger-handler.ts b/packages/amplify-util-mock/src/api/lambda-trigger-handler.ts index dd28d25ed56..6b8bddad6c5 100644 --- a/packages/amplify-util-mock/src/api/lambda-trigger-handler.ts +++ b/packages/amplify-util-mock/src/api/lambda-trigger-handler.ts @@ -1,5 +1,11 @@ import { $TSContext, AmplifyFault, AMPLIFY_SUPPORT_DOCS } from '@aws-amplify/amplify-cli-core'; -import { DynamoDBStreams, Endpoint } from 'aws-sdk'; +import { + DynamoDBStreamsClient, + DescribeStreamCommand, + GetShardIteratorCommand, + GetRecordsCommand, + Shard, +} from '@aws-sdk/client-dynamodb-streams'; import { invokeTrigger } from './lambda-invoke'; import { isMockable } from '@aws-amplify/amplify-category-function'; import { printer } from '@aws-amplify/amplify-prompts'; @@ -17,7 +23,7 @@ export const ddbLambdaTriggerHandler = async ( context: $TSContext, streamArn?: string, lambdaTrigger?: LambdaTrigger, - localDynamoDBEndpoint?: Endpoint, + localDynamoDBEndpoint?: string, ): Promise => { if (!lambdaTrigger || (!lambdaTrigger?.name && !lambdaTrigger?.config)) { throw new AmplifyFault('MockProcessFault', { @@ -60,8 +66,8 @@ export const ddbLambdaTriggerHandler = async ( * @param streams DDB streams client * @returns latest active shard iterator */ -export const getLatestShardIterator = async (streamArn: string, streams: DynamoDBStreams): Promise => { - const stream = await streams.describeStream({ StreamArn: streamArn }).promise(); +export const getLatestShardIterator = async (streamArn: string, streams: DynamoDBStreamsClient): Promise => { + const stream = await streams.send(new DescribeStreamCommand({ StreamArn: streamArn })); if (!stream) { throw new AmplifyFault('MockProcessFault', { @@ -80,13 +86,13 @@ export const getLatestShardIterator = async (streamArn: string, streams: DynamoD }); } - const { ShardIterator: start } = await streams - .getShardIterator({ + const { ShardIterator: start } = await streams.send( + new GetShardIteratorCommand({ StreamArn: streamArn, ShardId: shardId, ShardIteratorType: DDBStreamsShardIteratorType.LATEST, - }) - .promise(); + }), + ); return start; }; @@ -98,7 +104,7 @@ enum DDBStreamsShardIteratorType { AFTER_SEQUENCE_NUMBER = 'AFTER_SEQUENCE_NUMBER', } -const isShardActive = (shard: DynamoDBStreams.Shard): boolean => { +const isShardActive = (shard: Shard): boolean => { return shard.SequenceNumberRange && shard.SequenceNumberRange.StartingSequenceNumber && !shard.SequenceNumberRange.EndingSequenceNumber; }; @@ -109,15 +115,15 @@ const isShardActive = (shard: DynamoDBStreams.Shard): boolean => { * @param streams DDB streams client * @returns latest available records from stream */ -export const getStreamRecords = async (shardIterator: string, streamArn: string, streams: DynamoDBStreams) => { +export const getStreamRecords = async (shardIterator: string, streamArn: string, streams: DynamoDBStreamsClient) => { const shardIteratorCopy = shardIterator; try { - const data = await streams.getRecords({ ShardIterator: shardIteratorCopy }).promise(); + const data = await streams.send(new GetRecordsCommand({ ShardIterator: shardIteratorCopy })); return { data: data, shardIterator: shardIteratorCopy }; } catch (error) { printer.info('Re-Trying with a new shard'); const latestShardIterator = await getLatestShardIterator(streamArn, streams); - const data = await streams.getRecords({ ShardIterator: latestShardIterator }).promise(); + const data = await streams.send(new GetRecordsCommand({ ShardIterator: latestShardIterator })); return { data: data, shardIterator: latestShardIterator }; } }; @@ -129,7 +135,7 @@ export const getStreamRecords = async (shardIterator: string, streamArn: string, export const pollDDBStreamAndInvokeLambda = async ( context: $TSContext, streamArn: string, - streams: DynamoDBStreams, + streams: DynamoDBStreamsClient, lambdaTrigger: LambdaTrigger, ) => { let shardIterator = await getLatestShardIterator(streamArn, streams); @@ -151,15 +157,17 @@ export const pollDDBStreamAndInvokeLambda = async ( } }; -export const getDDBStreamsClient = (localDynamoDBEndpoint: Endpoint): DynamoDBStreams => { +export const getDDBStreamsClient = (localDynamoDBEndpoint: string): DynamoDBStreamsClient => { const MOCK_REGION = 'us-fake-1'; const MOCK_ACCESS_KEY = 'fake'; const MOCK_SECRET_ACCESS_KEY = 'fake'; - return new DynamoDBStreams({ + return new DynamoDBStreamsClient({ endpoint: localDynamoDBEndpoint, region: MOCK_REGION, - accessKeyId: MOCK_ACCESS_KEY, - secretAccessKey: MOCK_SECRET_ACCESS_KEY, + credentials: { + accessKeyId: MOCK_ACCESS_KEY, + secretAccessKey: MOCK_SECRET_ACCESS_KEY, + }, }); }; diff --git a/yarn.lock b/yarn.lock index 4e29c95dea3..add9ef83c0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -905,6 +905,7 @@ __metadata: "@aws-amplify/graphql-transformer-interfaces": ^3.12.0 "@aws-amplify/graphql-transformer-migrator": ^2.2.32 "@aws-sdk/client-dynamodb": ^3.624.0 + "@aws-sdk/client-dynamodb-streams": ^3.624.0 "@hapi/topo": ^5.0.0 "@types/detect-port": ^1.3.0 "@types/jest": ^29.0.0 @@ -918,10 +919,8 @@ __metadata: amplify-storage-simulator: 1.11.7 aws-appsync: ^4.1.4 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 - aws-sdk-mock: ^6.2.0 axios: ^1.11.0 chokidar: ^3.5.3 constructs: ^10.0.5 @@ -2455,6 +2454,53 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-dynamodb-streams@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/client-dynamodb-streams@npm:3.891.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.890.0 + "@aws-sdk/credential-provider-node": 3.891.0 + "@aws-sdk/middleware-host-header": 3.891.0 + "@aws-sdk/middleware-logger": 3.891.0 + "@aws-sdk/middleware-recursion-detection": 3.891.0 + "@aws-sdk/middleware-user-agent": 3.891.0 + "@aws-sdk/region-config-resolver": 3.890.0 + "@aws-sdk/types": 3.887.0 + "@aws-sdk/util-endpoints": 3.891.0 + "@aws-sdk/util-user-agent-browser": 3.887.0 + "@aws-sdk/util-user-agent-node": 3.891.0 + "@smithy/config-resolver": ^4.2.2 + "@smithy/core": ^3.11.0 + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/hash-node": ^4.1.1 + "@smithy/invalid-dependency": ^4.1.1 + "@smithy/middleware-content-length": ^4.1.1 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-retry": ^4.2.3 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/smithy-client": ^4.6.2 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-body-length-node": ^4.1.0 + "@smithy/util-defaults-mode-browser": ^4.1.2 + "@smithy/util-defaults-mode-node": ^4.1.2 + "@smithy/util-endpoints": ^3.1.2 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-retry": ^4.1.2 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 0f3a2af784560e3fa0f4864635c984df22959c27de6af718ad2f2538970911ad0b0f713695c288d9412772da8009e4446cc2047084ad8f29c6c3ed64f17a73aa + languageName: node + linkType: hard + "@aws-sdk/client-dynamodb@npm:3.624.0": version: 3.624.0 resolution: "@aws-sdk/client-dynamodb@npm:3.624.0" @@ -14763,17 +14809,6 @@ __metadata: languageName: node linkType: hard -"aws-sdk-mock@npm:^6.2.0": - version: 6.2.0 - resolution: "aws-sdk-mock@npm:6.2.0" - dependencies: - aws-sdk: ^2.1231.0 - neotraverse: ^0.6.15 - sinon: ^18.0.1 - checksum: a8ef205ecc806225f5b7cc6a09864d73d23add434dc42213c2aa3bd9285741651cf56c8b9f6be5619c405cfd07c3caa64a2351ff597ace0c96b4ba30ac6c811a - languageName: node - linkType: hard - "aws-sdk@npm:^2.1464.0": version: 2.1464.0 resolution: "aws-sdk@npm:2.1464.0" @@ -25499,13 +25534,6 @@ __metadata: languageName: node linkType: hard -"neotraverse@npm:^0.6.15": - version: 0.6.18 - resolution: "neotraverse@npm:0.6.18" - checksum: 46f4c53cbbdc53671150916b544a9f46e27781f8003985237507542190173bec131168d89b846535f9c34c0a2a7debb1ab3a4f7a93d08218e2c194a363708ffa - languageName: node - linkType: hard - "netmask@npm:^2.0.2": version: 2.0.2 resolution: "netmask@npm:2.0.2" From 85f572e553e861e45f7fdedde1c9d282136c5607 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 19 Sep 2025 15:48:11 -0400 Subject: [PATCH 09/51] fix: mock tests and dynamodb sim --- .../__tests__/dynamodb-simulator/dynamodb-simulator.test.ts | 2 +- packages/amplify-util-mock/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts index 4a9d3d1483f..46facc54cfd 100644 --- a/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts @@ -73,7 +73,7 @@ describe('emulator operations', () => { const dynamo = ddbSimulator.getClient(emu); const tables = await dynamo.send(new ListTablesCommand()); - expect(tables.TableNames).toEqual(undefined); + expect(tables.TableNames).toEqual([]); }); it('should preserve state between restarts with dbPath', async () => { diff --git a/packages/amplify-util-mock/package.json b/packages/amplify-util-mock/package.json index 3904b5b91fa..204a774d29a 100644 --- a/packages/amplify-util-mock/package.json +++ b/packages/amplify-util-mock/package.json @@ -38,6 +38,8 @@ "@aws-amplify/amplify-opensearch-simulator": "1.7.20", "@aws-amplify/amplify-prompts": "2.8.7", "@aws-amplify/amplify-provider-awscloudformation": "8.11.9", + "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/client-dynamodb-streams": "^3.624.0", "@hapi/topo": "^5.0.0", "amplify-codegen": "^4.10.3", "amplify-dynamodb-simulator": "2.9.24", @@ -70,8 +72,6 @@ "@aws-amplify/graphql-transformer-core": "^2.11.1", "@aws-amplify/graphql-transformer-interfaces": "^3.12.0", "@aws-amplify/graphql-transformer-migrator": "^2.2.32", - "@aws-sdk/client-dynamodb": "^3.624.0", - "@aws-sdk/client-dynamodb-streams": "^3.624.0", "@types/detect-port": "^1.3.0", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.149", From 35b9d57e6e31c4680a0debd929c72b1b144c944c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 19 Sep 2025 16:01:46 -0400 Subject: [PATCH 10/51] fix: dynamoDb creds --- .../src/data-loader/dynamo-db/index.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index ba5851b6c64..32a74dc1f86 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -29,12 +29,17 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private tableName: string; constructor(private ddbConfig: DynamoDBLoaderConfig) { - const { tableName, endpoint } = ddbConfig.config; + const { tableName, endpoint, credentials } = ddbConfig.config; if (!tableName || !endpoint) { throw new Error(`Invalid DynamoDBConfig ${JSON.stringify(ddbConfig, null, 4)}`); } this.tableName = tableName; - this.client = new DynamoDBClient({ ...ddbConfig.config, ...ddbConfig.options }); + this.client = new DynamoDBClient({ + endpoint, + region: ddbConfig.config.region, + credentials, + ...ddbConfig.options, + }); } async load(payload): Promise { From 0dcd1dd0024ba85e3006076dc2a50186fe439851 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 22 Sep 2025 13:39:41 -0400 Subject: [PATCH 11/51] fix: update cred resolution --- packages/amplify-util-mock/src/utils/dynamo-db/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts index 74eb670f195..2475550b43c 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts @@ -45,9 +45,9 @@ export function configureDDBDataSource(config, ddbConfig) { ...d.config, endpoint: ddbConfig.endpoint, region: ddbConfig.region, - accessKeyId: ddbConfig.accessKeyId, - secretAccessKey: ddbConfig.secretAccessKey, - sessionToken: ddbConfig.sessionToken || process.env.AWS_SESSION_TOKEN, + accessKeyId: ddbConfig.credentials?.accessKeyId, + secretAccessKey: ddbConfig.credentials?.secretAccessKey, + sessionToken: ddbConfig.credentials?.sessionToken || process.env.AWS_SESSION_TOKEN, }, }; }), From 04364606e4866865b09f3c283b2742566e0b2099 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 22 Sep 2025 16:44:36 -0400 Subject: [PATCH 12/51] fix: switch from null to undefined --- .../src/data-loader/dynamo-db/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 32a74dc1f86..c6efa4b49cf 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -132,9 +132,9 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { attributeValues, condition: { // we only provide limited support for condition update expressions. - expression = null, - expressionNames = null, - expressionValues = null, + expression = undefined, + expressionNames = undefined, + expressionValues = undefined, } = {}, } = payload; await this.client.send( @@ -215,9 +215,9 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { key, condition: { // we only provide limited support for condition update expressions. - expression = null, - expressionNames = null, - expressionValues = null, + expression = undefined, + expressionNames = undefined, + expressionValues = undefined, } = {}, } = payload; const { Attributes: deleted } = await this.client.send( From 8971021bddf0f17592c74fa81c12e67ff5384061 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 24 Sep 2025 15:41:06 -0400 Subject: [PATCH 13/51] fix: adjust creds again --- packages/amplify-util-mock/src/utils/dynamo-db/index.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts index 2475550b43c..7db297291de 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts @@ -45,9 +45,11 @@ export function configureDDBDataSource(config, ddbConfig) { ...d.config, endpoint: ddbConfig.endpoint, region: ddbConfig.region, - accessKeyId: ddbConfig.credentials?.accessKeyId, - secretAccessKey: ddbConfig.credentials?.secretAccessKey, - sessionToken: ddbConfig.credentials?.sessionToken || process.env.AWS_SESSION_TOKEN, + credentials: { + accessKeyId: ddbConfig.credentials?.accessKeyId, + secretAccessKey: ddbConfig.credentials?.secretAccessKey, + sessionToken: ddbConfig.credentials?.sessionToken || process.env.AWS_SESSION_TOKEN, + }, }, }; }), From 8de60b0c8fae8397d1df656e6c1f1ea1774f14ed Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 26 Sep 2025 10:36:49 -0400 Subject: [PATCH 14/51] fix: resolve credentials --- packages/amplify-util-mock/src/__e2e__/utils/index.ts | 4 ++-- packages/amplify-util-mock/src/api/api.ts | 6 +++--- packages/amplify-util-mock/src/utils/dynamo-db/index.ts | 9 +++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/amplify-util-mock/src/__e2e__/utils/index.ts b/packages/amplify-util-mock/src/__e2e__/utils/index.ts index 668f20cd0cb..3dcb0b28969 100644 --- a/packages/amplify-util-mock/src/__e2e__/utils/index.ts +++ b/packages/amplify-util-mock/src/__e2e__/utils/index.ts @@ -52,7 +52,7 @@ export async function deploy( if (client) { await createAndUpdateTable(client, config); - config = configureDDBDataSource(config, client.config); + config = await configureDDBDataSource(config, client.config); } await configureLambdaDataSource(config); if (opensearchURL) { @@ -72,7 +72,7 @@ export async function reDeploy( if (client) { await createAndUpdateTable(client, config); - config = configureDDBDataSource(config, client.config); + config = await configureDDBDataSource(config, client.config); } await configureLambdaDataSource(config); simulator?.reload(config); diff --git a/packages/amplify-util-mock/src/api/api.ts b/packages/amplify-util-mock/src/api/api.ts index 4091cd744bb..e40003bdd13 100644 --- a/packages/amplify-util-mock/src/api/api.ts +++ b/packages/amplify-util-mock/src/api/api.ts @@ -151,7 +151,7 @@ export class APITest { const { transformerOutput } = await runTransformer(context); let config: any = processAppSyncResources(transformerOutput, parameters); config = await this.ensureDDBTables(config); - config = this.configureDDBDataSource(config); + config = await this.configureDDBDataSource(config); this.transformerResult = await this.configureLambdaDataSource(context, config); this.transformerResult = await this.configureOpensearchDataSource(this.transformerResult); this.userOverriddenSlots = transformerOutput.userOverriddenSlots; @@ -375,9 +375,9 @@ export class APITest { }); } - private configureDDBDataSource(config) { + private async configureDDBDataSource(config) { const ddbConfig = this.ddbClient.config; - return configureDDBDataSource(config, ddbConfig); + return await configureDDBDataSource(config, ddbConfig); } public async getAppSyncAPI(context) { const currentMeta = await getAmplifyMeta(context); diff --git a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts index 7db297291de..c8a837c0dd6 100644 --- a/packages/amplify-util-mock/src/utils/dynamo-db/index.ts +++ b/packages/amplify-util-mock/src/utils/dynamo-db/index.ts @@ -32,7 +32,8 @@ export async function createAndUpdateTable(dynamoDbClient: DynamoDBClient, confi return config; } -export function configureDDBDataSource(config, ddbConfig) { +export async function configureDDBDataSource(config, ddbConfig) { + const creds = await ddbConfig.credentials(); return { ...config, dataSources: config.dataSources.map((d) => { @@ -46,9 +47,9 @@ export function configureDDBDataSource(config, ddbConfig) { endpoint: ddbConfig.endpoint, region: ddbConfig.region, credentials: { - accessKeyId: ddbConfig.credentials?.accessKeyId, - secretAccessKey: ddbConfig.credentials?.secretAccessKey, - sessionToken: ddbConfig.credentials?.sessionToken || process.env.AWS_SESSION_TOKEN, + accessKeyId: creds.accessKeyId, + secretAccessKey: creds.secretAccessKey, + sessionToken: creds.sessionToken || process.env.AWS_SESSION_TOKEN, }, }, }; From fea82b631295b063cbbf6979b937abde2848a61c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 26 Sep 2025 11:40:48 -0400 Subject: [PATCH 15/51] fix: marshall objects --- .../src/data-loader/dynamo-db/index.ts | 30 +++++++++---------- .../src/data-loader/dynamo-db/utils/index.ts | 9 +++++- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index c6efa4b49cf..dc8c68afd9f 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -8,7 +8,7 @@ import { QueryCommand, ScanCommand, } from '@aws-sdk/client-dynamodb'; -import { unmarshall, nullIfEmpty } from './utils'; +import { unmarshall, marshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -117,7 +117,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const result = await this.client.send( new GetItemCommand({ TableName: this.tableName, - Key: payload.key, + Key: marshall(payload.key), ConsistentRead: consistentRead, }), ); @@ -140,13 +140,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { await this.client.send( new PutItemCommand({ TableName: this.tableName, - Item: { + Item: marshall({ ...attributeValues, ...key, - }, + }), ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues, + ExpressionAttributeValues: marshall(expressionValues), }), ); @@ -161,7 +161,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, - ExpressionAttributeValues: nullIfEmpty({ + ExpressionAttributeValues: marshall({ ...(filter.expressionValues || {}), ...(keyCondition.expressionValues || {}), }), @@ -169,7 +169,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(filter.expressionNames || {}), ...(keyCondition.expressionNames || {}), }), - ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : null, + ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -193,7 +193,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const { key, update = {}, condition = {} } = payload; const params: any = { TableName: this.tableName, - Key: key, + Key: marshall(key), UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', @@ -201,7 +201,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(condition.expressionNames || {}), ...(update.expressionNames || {}), }), - ExpressionAttributeValues: nullIfEmpty({ + ExpressionAttributeValues: marshall({ ...(condition.expressionValues || {}), ...(update.expressionValues || {}), }), @@ -223,11 +223,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const { Attributes: deleted } = await this.client.send( new DeleteItemCommand({ TableName: this.tableName, - Key: key, + Key: marshall(key), ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues, + ExpressionAttributeValues: marshall(expressionValues), }), ); @@ -239,7 +239,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const params = { TableName: this.tableName, - ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : null, + ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -253,9 +253,9 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ExpressionAttributeNames: nullIfEmpty({ ...(filter.expressionNames || undefined), }), - ExpressionAttributeValues: { - ...(filter.expressionValues || undefined), - }, + ExpressionAttributeValues: marshall({ + ...(filter.expressionValues || {}), + }), }); } const { diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index 822d3587cb9..2f9c5b88847 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -1,9 +1,16 @@ -import { unmarshall as awsUnmarshall } from '@aws-sdk/util-dynamodb'; +import { unmarshall as awsUnmarshall, marshall as awsMarshall } from '@aws-sdk/util-dynamodb'; export function nullIfEmpty(obj: object): object | null { return Object.keys(obj).length === 0 ? null : obj; } +export function marshall(obj: object) { + if (!obj || Object.keys(obj).length === 0) { + return undefined; + } + return awsMarshall(obj); +} + export function unmarshall(raw, isRaw = true) { const content = isRaw ? awsUnmarshall(raw) : raw; // Because of the funky set type used in the aws-sdk, we need to further unwrap From 058029c581fddcdbe3c3fb58f3f752083b949867 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 26 Sep 2025 14:02:05 -0400 Subject: [PATCH 16/51] chore: try checking if type is marshalled --- .../src/data-loader/dynamo-db/index.ts | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index dc8c68afd9f..bc8b1b822d8 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -117,7 +117,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const result = await this.client.send( new GetItemCommand({ TableName: this.tableName, - Key: marshall(payload.key), + Key: this.isAlreadyTyped(payload.key) ? payload.key : marshall(payload.key), ConsistentRead: consistentRead, }), ); @@ -126,6 +126,14 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return unmarshall(result.Item); } + private isAlreadyTyped(obj): boolean { + return ( + obj && + typeof obj === 'object' && + Object.values(obj).some((val) => val && typeof val === 'object' && ('S' in val || 'N' in val || 'B' in val)) + ); + } + private async putItem(payload): Promise { const { key, @@ -137,16 +145,18 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = undefined, } = {}, } = payload; + + const itemData = { ...attributeValues, ...key }; + const item = this.isAlreadyTyped(itemData) ? itemData : marshall(itemData); + const typedExpressionValues = this.isAlreadyTyped(expressionValues) ? expressionValues : marshall(expressionValues); + await this.client.send( new PutItemCommand({ TableName: this.tableName, - Item: marshall({ - ...attributeValues, - ...key, - }), + Item: item, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: marshall(expressionValues), + ExpressionAttributeValues: typedExpressionValues, }), ); @@ -157,14 +167,19 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async query({ query: keyCondition, filter, index, nextToken, limit, scanIndexForward = true, consistentRead = false, select }) { keyCondition = keyCondition || { expression: null }; filter = filter || { expression: null }; + + const combinedExpressionValues = { + ...(filter.expressionValues || {}), + ...(keyCondition.expressionValues || {}), + }; + const params = { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, - ExpressionAttributeValues: marshall({ - ...(filter.expressionValues || {}), - ...(keyCondition.expressionValues || {}), - }), + ExpressionAttributeValues: this.isAlreadyTyped(combinedExpressionValues) + ? combinedExpressionValues + : marshall(combinedExpressionValues), ExpressionAttributeNames: nullIfEmpty({ ...(filter.expressionNames || {}), ...(keyCondition.expressionNames || {}), @@ -191,9 +206,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; + + const combinedExpressionValues = { + ...(condition.expressionValues || {}), + ...(update.expressionValues || {}), + }; + const params: any = { TableName: this.tableName, - Key: marshall(key), + Key: this.isAlreadyTyped(key) ? key : marshall(key), UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', @@ -201,10 +222,9 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(condition.expressionNames || {}), ...(update.expressionNames || {}), }), - ExpressionAttributeValues: marshall({ - ...(condition.expressionValues || {}), - ...(update.expressionValues || {}), - }), + ExpressionAttributeValues: this.isAlreadyTyped(combinedExpressionValues) + ? combinedExpressionValues + : marshall(combinedExpressionValues), }; const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); return unmarshall(updated); From f30585ce2a40287715e0af0275d15064afdeaa87 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Tue, 30 Sep 2025 13:41:17 -0400 Subject: [PATCH 17/51] chore: adjustments --- .../src/data-loader/dynamo-db/index.ts | 83 ++++++++----------- .../src/data-loader/dynamo-db/utils/index.ts | 3 +- .../pullAndInit/amplifyConsoleOperations.ts | 2 +- packages/amplify-util-mock/src/api/api.ts | 2 +- 4 files changed, 38 insertions(+), 52 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index bc8b1b822d8..cdddd6ba838 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -4,9 +4,14 @@ import { GetItemCommand, PutItemCommand, UpdateItemCommand, + UpdateItemCommandInput, DeleteItemCommand, QueryCommand, + QueryInput, ScanCommand, + ScanCommandInput, + Select, + ReturnValue, } from '@aws-sdk/client-dynamodb'; import { unmarshall, marshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; @@ -29,15 +34,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private tableName: string; constructor(private ddbConfig: DynamoDBLoaderConfig) { - const { tableName, endpoint, credentials } = ddbConfig.config; + const { tableName, endpoint } = ddbConfig.config; if (!tableName || !endpoint) { throw new Error(`Invalid DynamoDBConfig ${JSON.stringify(ddbConfig, null, 4)}`); } this.tableName = tableName; this.client = new DynamoDBClient({ - endpoint, - region: ddbConfig.config.region, - credentials, + ...ddbConfig.config, ...ddbConfig.options, }); } @@ -86,7 +89,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { new DeleteItemCommand({ TableName: this.tableName, Key: { id: item.id }, - ReturnValues: 'ALL_OLD', + ReturnValues: 'ALL_OLD' as ReturnValue, }), ); } @@ -117,7 +120,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const result = await this.client.send( new GetItemCommand({ TableName: this.tableName, - Key: this.isAlreadyTyped(payload.key) ? payload.key : marshall(payload.key), + Key: payload.key as Record, ConsistentRead: consistentRead, }), ); @@ -126,14 +129,6 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return unmarshall(result.Item); } - private isAlreadyTyped(obj): boolean { - return ( - obj && - typeof obj === 'object' && - Object.values(obj).some((val) => val && typeof val === 'object' && ('S' in val || 'N' in val || 'B' in val)) - ); - } - private async putItem(payload): Promise { const { key, @@ -146,56 +141,50 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = {}, } = payload; - const itemData = { ...attributeValues, ...key }; - const item = this.isAlreadyTyped(itemData) ? itemData : marshall(itemData); - const typedExpressionValues = this.isAlreadyTyped(expressionValues) ? expressionValues : marshall(expressionValues); - await this.client.send( new PutItemCommand({ TableName: this.tableName, - Item: item, + Item: { + ...key, + ...attributeValues, + } as Record, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: typedExpressionValues, + ExpressionAttributeValues: expressionValues as Record, }), ); // put does not return us anything useful so we need to fetch the object. - return this.getItem({ key, consistentRead: true }); } private async query({ query: keyCondition, filter, index, nextToken, limit, scanIndexForward = true, consistentRead = false, select }) { keyCondition = keyCondition || { expression: null }; filter = filter || { expression: null }; - const combinedExpressionValues = { - ...(filter.expressionValues || {}), - ...(keyCondition.expressionValues || {}), - }; - const params = { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, - ExpressionAttributeValues: this.isAlreadyTyped(combinedExpressionValues) - ? combinedExpressionValues - : marshall(combinedExpressionValues), + ExpressionAttributeValues: nullIfEmpty({ + ...(filter.expressionValues || undefined), + ...(keyCondition.expressionValues || undefined), + } as Record), ExpressionAttributeNames: nullIfEmpty({ - ...(filter.expressionNames || {}), - ...(keyCondition.expressionNames || {}), + ...(filter.expressionNames || undefined), + ...(keyCondition.expressionNames || undefined), }), - ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, + ExclusiveStartKey: nextToken, IndexName: index, Limit: limit, ConsistentRead: consistentRead, ScanIndexForward: scanIndexForward, - Select: select || 'ALL_ATTRIBUTES', + Select: select || ('ALL_ATTRIBUTES' as Select), }; const { Items: items, ScannedCount: scannedCount, LastEvaluatedKey: resultNextToken = null, - } = await this.client.send(new QueryCommand(params as any)); + } = await this.client.send(new QueryCommand(params as QueryInput)); return { items: items.map((item) => unmarshall(item)), @@ -207,24 +196,20 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; - const combinedExpressionValues = { - ...(condition.expressionValues || {}), - ...(update.expressionValues || {}), - }; - - const params: any = { + const params: UpdateItemCommandInput = { TableName: this.tableName, - Key: this.isAlreadyTyped(key) ? key : marshall(key), + Key: key, UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', ExpressionAttributeNames: nullIfEmpty({ ...(condition.expressionNames || {}), ...(update.expressionNames || {}), - }), - ExpressionAttributeValues: this.isAlreadyTyped(combinedExpressionValues) - ? combinedExpressionValues - : marshall(combinedExpressionValues), + } as Record), + ExpressionAttributeValues: nullIfEmpty({ + ...(condition.expressionValues || {}), + ...(update.expressionValues || {}), + } as Record), }; const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); return unmarshall(updated); @@ -243,11 +228,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const { Attributes: deleted } = await this.client.send( new DeleteItemCommand({ TableName: this.tableName, - Key: marshall(key), + Key: key as Record, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: marshall(expressionValues), + ExpressionAttributeValues: expressionValues as Record, }), ); @@ -257,7 +242,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async scan(payload) { const { filter, index, limit, consistentRead = false, nextToken, select, totalSegments, segment } = payload; - const params = { + const params: ScanCommandInput = { TableName: this.tableName, ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, IndexName: index, @@ -275,7 +260,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { }), ExpressionAttributeValues: marshall({ ...(filter.expressionValues || {}), - }), + } as Record), }); } const { diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index 2f9c5b88847..a716c2dc576 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -1,6 +1,7 @@ import { unmarshall as awsUnmarshall, marshall as awsMarshall } from '@aws-sdk/util-dynamodb'; +import { AttributeValue } from '@aws-sdk/client-dynamodb'; -export function nullIfEmpty(obj: object): object | null { +export function nullIfEmpty>(obj: T): T | null { return Object.keys(obj).length === 0 ? null : obj; } diff --git a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts index 283c7b07519..44fdf215194 100644 --- a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts +++ b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts @@ -40,7 +40,7 @@ export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFor } } -async function PaginatedDeleteProjects(amplifyClient: AmplifyClient, token?: any) { +async function PaginatedDeleteProjects(amplifyClient: AmplifyClient, token?: string) { const sequential = require('promise-sequential'); const maxResults = 25; const listAppsResult = await amplifyClient.send( diff --git a/packages/amplify-util-mock/src/api/api.ts b/packages/amplify-util-mock/src/api/api.ts index e40003bdd13..66f84b9de9c 100644 --- a/packages/amplify-util-mock/src/api/api.ts +++ b/packages/amplify-util-mock/src/api/api.ts @@ -94,7 +94,7 @@ export class APITest { await this.generateCode(context, appSyncConfig); context.print.info(`AppSync Mock endpoint is running at ${this.appSyncSimulator.url}`); - context.print.info(`GraphiQL IDE is available for local testing at ${this.appSyncSimulator.localhostUrl}`); + context.print.info(`GraphQL IDE is available for local testing at ${this.appSyncSimulator.localhostUrl}`); await this.startDDBListeners(context, appSyncConfig, false); } catch (e) { const errMessage = 'Failed to start API Mocking.'; From 7529161fb0a876a094705c91325216870275446e Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 09:33:13 -0400 Subject: [PATCH 18/51] fix: swap dynamoClients --- .../amplify-appsync-simulator/package.json | 1 + .../src/data-loader/dynamo-db/index.ts | 111 +++--- .../src/data-loader/dynamo-db/utils/index.ts | 5 +- yarn.lock | 361 ++++++++++++++++++ 4 files changed, 421 insertions(+), 57 deletions(-) diff --git a/packages/amplify-appsync-simulator/package.json b/packages/amplify-appsync-simulator/package.json index 5409c4e8c5e..352df4227f6 100644 --- a/packages/amplify-appsync-simulator/package.json +++ b/packages/amplify-appsync-simulator/package.json @@ -33,6 +33,7 @@ "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-prompts": "2.8.7", "@aws-sdk/client-dynamodb": "^3.624.0", + "@aws-sdk/lib-dynamodb": "^3.624.0", "@aws-sdk/util-dynamodb": "^3.624.0", "@graphql-tools/schema": "^8.3.1", "@graphql-tools/utils": "^8.5.1", diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index cdddd6ba838..69e712210bf 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -1,19 +1,14 @@ +import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { - AttributeValue, - DynamoDBClient, - GetItemCommand, - PutItemCommand, - UpdateItemCommand, - UpdateItemCommandInput, - DeleteItemCommand, + DynamoDBDocumentClient, + GetCommand, + PutCommand, + UpdateCommand, + DeleteCommand, QueryCommand, - QueryInput, ScanCommand, - ScanCommandInput, - Select, - ReturnValue, -} from '@aws-sdk/client-dynamodb'; -import { unmarshall, marshall, nullIfEmpty } from './utils'; + UpdateCommandInput, +} from '@aws-sdk/lib-dynamodb'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -30,7 +25,7 @@ type DynamoDBLoaderConfig = { options: object; }; export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { - private client: DynamoDBClient; + private client: DynamoDBDocumentClient; private tableName: string; constructor(private ddbConfig: DynamoDBLoaderConfig) { @@ -39,10 +34,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { throw new Error(`Invalid DynamoDBConfig ${JSON.stringify(ddbConfig, null, 4)}`); } this.tableName = tableName; - this.client = new DynamoDBClient({ + const ddbClient = new DynamoDBClient({ ...ddbConfig.config, ...ddbConfig.options, }); + this.client = DynamoDBDocumentClient.from(ddbClient); } async load(payload): Promise { @@ -86,10 +82,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const items = await this.getAllItems(); for await (const item of items) { await this.client.send( - new DeleteItemCommand({ + new DeleteCommand({ TableName: this.tableName, Key: { id: item.id }, - ReturnValues: 'ALL_OLD' as ReturnValue, + ReturnValues: 'ALL_OLD', }), ); } @@ -99,7 +95,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return [this.tableName]; } // Gets all the records from the DynamoDB local table - private async getAllItems(): Promise> | null> { + private async getAllItems(): Promise> | null> { let items = []; let data = await this.client.send(new ScanCommand({ TableName: this.tableName })); items = [...items, ...data.Items]; @@ -118,15 +114,14 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async getItem(payload: any): Promise { const { consistentRead = false } = payload; const result = await this.client.send( - new GetItemCommand({ + new GetCommand({ TableName: this.tableName, - Key: payload.key as Record, + Key: payload.key, ConsistentRead: consistentRead, }), ); - if (!result.Item) return null; - return unmarshall(result.Item); + return result.Item || null; } private async putItem(payload): Promise { @@ -142,15 +137,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = payload; await this.client.send( - new PutItemCommand({ + new PutCommand({ TableName: this.tableName, Item: { ...key, ...attributeValues, - } as Record, + }, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues as Record, + ExpressionAttributeValues: expressionValues, }), ); @@ -165,29 +160,34 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, - ExpressionAttributeValues: nullIfEmpty({ - ...(filter.expressionValues || undefined), - ...(keyCondition.expressionValues || undefined), - } as Record), - ExpressionAttributeNames: nullIfEmpty({ - ...(filter.expressionNames || undefined), - ...(keyCondition.expressionNames || undefined), - }), + ExpressionAttributeValues: { + ...(filter.expressionValues || {}), + ...(keyCondition.expressionValues || {}), + }, + ExpressionAttributeNames: { + ...(filter.expressionNames || {}), + ...(keyCondition.expressionNames || {}), + }, ExclusiveStartKey: nextToken, IndexName: index, Limit: limit, ConsistentRead: consistentRead, ScanIndexForward: scanIndexForward, - Select: select || ('ALL_ATTRIBUTES' as Select), + Select: select || 'ALL_ATTRIBUTES', }; + + // Remove empty objects + if (Object.keys(params.ExpressionAttributeValues).length === 0) delete params.ExpressionAttributeValues; + if (Object.keys(params.ExpressionAttributeNames).length === 0) delete params.ExpressionAttributeNames; + const { Items: items, ScannedCount: scannedCount, LastEvaluatedKey: resultNextToken = null, - } = await this.client.send(new QueryCommand(params as QueryInput)); + } = await this.client.send(new QueryCommand(params)); return { - items: items.map((item) => unmarshall(item)), + items: items || [], scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; @@ -196,23 +196,24 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; - const params: UpdateItemCommandInput = { + const params: UpdateCommandInput = { TableName: this.tableName, Key: key, UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', - ExpressionAttributeNames: nullIfEmpty({ + ExpressionAttributeNames: { ...(condition.expressionNames || {}), ...(update.expressionNames || {}), - } as Record), - ExpressionAttributeValues: nullIfEmpty({ + }, + ExpressionAttributeValues: { ...(condition.expressionValues || {}), ...(update.expressionValues || {}), - } as Record), + }, }; - const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); - return unmarshall(updated); + + const { Attributes: updated } = await this.client.send(new UpdateCommand(params)); + return updated; } private async deleteItem(payload) { @@ -226,25 +227,25 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = {}, } = payload; const { Attributes: deleted } = await this.client.send( - new DeleteItemCommand({ + new DeleteCommand({ TableName: this.tableName, - Key: key as Record, + Key: key, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues as Record, + ExpressionAttributeValues: expressionValues, }), ); - return unmarshall(deleted); + return deleted; } private async scan(payload) { const { filter, index, limit, consistentRead = false, nextToken, select, totalSegments, segment } = payload; - const params: ScanCommandInput = { + const params = { TableName: this.tableName, - ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, + ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : undefined, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -252,17 +253,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { Segment: segment, TotalSegments: totalSegments, }; + if (filter) { Object.assign(params, { FilterExpression: filter.expression, - ExpressionAttributeNames: nullIfEmpty({ - ...(filter.expressionNames || undefined), - }), - ExpressionAttributeValues: marshall({ - ...(filter.expressionValues || {}), - } as Record), + ExpressionAttributeNames: filter.expressionNames, + ExpressionAttributeValues: filter.expressionValues, }); } + const { Items: items, ScannedCount: scannedCount, @@ -270,7 +269,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = await this.client.send(new ScanCommand(params)); return { - items: items.map((item) => unmarshall(item)), + items: items || [], scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index a716c2dc576..d9ea83b86a5 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -9,7 +9,10 @@ export function marshall(obj: object) { if (!obj || Object.keys(obj).length === 0) { return undefined; } - return awsMarshall(obj); + return awsMarshall(obj, { + removeUndefinedValues: true, + convertEmptyValues: true, + }); } export function unmarshall(raw, isRaw = true) { diff --git a/yarn.lock b/yarn.lock index add9ef83c0f..2701f458671 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,6 +109,7 @@ __metadata: "@aws-amplify/amplify-graphiql-explorer": 2.6.3 "@aws-amplify/amplify-prompts": 2.8.7 "@aws-sdk/client-dynamodb": ^3.624.0 + "@aws-sdk/lib-dynamodb": ^3.624.0 "@aws-sdk/util-dynamodb": ^3.624.0 "@graphql-tools/schema": ^8.3.1 "@graphql-tools/utils": ^8.5.1 @@ -4005,6 +4006,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/core@npm:3.899.0": + version: 3.899.0 + resolution: "@aws-sdk/core@npm:3.899.0" + dependencies: + "@aws-sdk/types": 3.893.0 + "@aws-sdk/xml-builder": 3.894.0 + "@smithy/core": ^3.13.0 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/property-provider": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/signature-v4": ^5.2.1 + "@smithy/smithy-client": ^4.6.5 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 6a883a9db615bc19b15fac3e29757b3478cc03e6b29195639bae4d535d817c4029d00075ff6b4b42acd44c58b0183a8700c9abd12a9e72edcc7131c6b35458d5 + 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" @@ -4794,6 +4816,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/lib-dynamodb@npm:^3.624.0": + version: 3.899.0 + resolution: "@aws-sdk/lib-dynamodb@npm:3.899.0" + dependencies: + "@aws-sdk/core": 3.899.0 + "@aws-sdk/util-dynamodb": 3.899.0 + "@smithy/core": ^3.13.0 + "@smithy/smithy-client": ^4.6.5 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.899.0 + checksum: 984e2913dcb32a01d0e1e83fe22d7aee7ca88f14814f8a72c5a61422ba2d867c354f4ac7f3f9f962343eb88a64e22801970017984b169e00e83b56a229b0cec9 + languageName: node + linkType: hard + "@aws-sdk/lib-storage@npm:^3.25.0": version: 3.624.0 resolution: "@aws-sdk/lib-storage@npm:3.624.0" @@ -5897,6 +5935,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:3.893.0": + version: 3.893.0 + resolution: "@aws-sdk/types@npm:3.893.0" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: d613fe5f8499a80ed5bb80c72e3f654782ef50d42461d9624875eb44db2daadd4b472f683b51f7497475f4c9028c9320014d973ec6880daf93615925643b0242 + 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" @@ -6088,6 +6136,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-dynamodb@npm:3.899.0": + version: 3.899.0 + resolution: "@aws-sdk/util-dynamodb@npm:3.899.0" + dependencies: + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.899.0 + checksum: 6343ed71ff64981d6ada9d873f1917ee69bae3c37ab3dbfd2d49c3c5fdc792f7bcccfa042c62cb7e7e480a150f15c8618e62f4b57a36c6b284697f75a65a22a2 + languageName: node + linkType: hard + "@aws-sdk/util-dynamodb@npm:^3.624.0": version: 3.891.0 resolution: "@aws-sdk/util-dynamodb@npm:3.891.0" @@ -6438,6 +6497,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:3.894.0": + version: 3.894.0 + resolution: "@aws-sdk/xml-builder@npm:3.894.0" + dependencies: + "@smithy/types": ^4.5.0 + fast-xml-parser: 5.2.5 + tslib: ^2.6.2 + checksum: c3ca8ce529757c53bff57a617acb75b9e32a64eec3ad97a8f81d3c0da98902cff89ca10ec9f6fb84541b9f1ccb897aa75704bd7577f21c5b418cd07f256b7628 + languageName: node + linkType: hard + "@aws/lambda-invoke-store@npm:^0.0.1": version: 0.0.1 resolution: "@aws/lambda-invoke-store@npm:0.0.1" @@ -10525,6 +10595,16 @@ __metadata: languageName: node linkType: hard +"@smithy/abort-controller@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/abort-controller@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: de11e4491f3042f9d3738c0bfccdcbcfa01468a90ff745ec59a26c405772f590e675f3fa7e4cfcde9165891348bb31ee434290717e8aaa90e1c131668cdcf008 + 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" @@ -10624,6 +10704,24 @@ __metadata: languageName: node linkType: hard +"@smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0": + version: 3.14.0 + resolution: "@smithy/core@npm:3.14.0" + dependencies: + "@smithy/middleware-serde": ^4.2.0 + "@smithy/protocol-http": ^5.3.0 + "@smithy/types": ^4.6.0 + "@smithy/util-base64": ^4.2.0 + "@smithy/util-body-length-browser": ^4.2.0 + "@smithy/util-middleware": ^4.2.0 + "@smithy/util-stream": ^4.4.0 + "@smithy/util-utf8": ^4.2.0 + "@smithy/uuid": ^1.1.0 + tslib: ^2.6.2 + checksum: 44cbc3bed4e33d8bafb367cb9205e4bb529de75f068a8f3805895874925bdb056b360e3dc11bccece5c3d2b0fcc902cfdaad8ea8ed0100be727252f7ec273228 + 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" @@ -10799,6 +10897,19 @@ __metadata: languageName: node linkType: hard +"@smithy/fetch-http-handler@npm:^5.3.0": + version: 5.3.0 + resolution: "@smithy/fetch-http-handler@npm:5.3.0" + dependencies: + "@smithy/protocol-http": ^5.3.0 + "@smithy/querystring-builder": ^4.2.0 + "@smithy/types": ^4.6.0 + "@smithy/util-base64": ^4.2.0 + tslib: ^2.6.2 + checksum: cd4a02981ab35510872ae6a2bf7dfbe485109ede3dd0b0bf56042fb6f4c896fcf555e580a525ef56cd7d1b68a1b53b66c8df4a593c9e5a21d0996d030fb10f82 + 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" @@ -10916,6 +11027,15 @@ __metadata: languageName: node linkType: hard +"@smithy/is-array-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/is-array-buffer@npm:4.2.0" + dependencies: + tslib: ^2.6.2 + checksum: 8e3e21cff5929d627bbf4a9beded28bd54555cfd37772226290964af6950cc10d700776a2ce7553f34ddf88a2e7e3d4681de58c94e9805592d901fc0f32cb597 + languageName: node + linkType: hard + "@smithy/md5-js@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/md5-js@npm:3.0.8" @@ -10992,6 +11112,22 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-endpoint@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/middleware-endpoint@npm:4.3.0" + dependencies: + "@smithy/core": ^3.14.0 + "@smithy/middleware-serde": ^4.2.0 + "@smithy/node-config-provider": ^4.3.0 + "@smithy/shared-ini-file-loader": ^4.3.0 + "@smithy/types": ^4.6.0 + "@smithy/url-parser": ^4.2.0 + "@smithy/util-middleware": ^4.2.0 + tslib: ^2.6.2 + checksum: 81877411bb98888704066dc847428c070f53cfb591e2e689e1a8b894a0a3cd74562553955ae5527ca32e8cea7309cbe995ad20976247909704c93898047ebdad + languageName: node + linkType: hard + "@smithy/middleware-retry@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/middleware-retry@npm:3.0.25" @@ -11048,6 +11184,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-serde@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/middleware-serde@npm:4.2.0" + dependencies: + "@smithy/protocol-http": ^5.3.0 + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: f43d5b438aca7184c7bf43c3136ec90f14c8e3936a4624158cb27f160ae18fd8647a34c0e9f3d37e8c89e7c8711748dfe93ec388da8e0f227e01e0c5e669de30 + 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" @@ -11068,6 +11215,16 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-stack@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/middleware-stack@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 37886fb6da8dfda4c09f2cca268214397de05009835095d773b463aa815670e9cdd8460c19bb7c6024dc0f1104baa0db3d0b9623ac30ceafd8b1a734054b53d7 + 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" @@ -11092,6 +11249,18 @@ __metadata: languageName: node linkType: hard +"@smithy/node-config-provider@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/node-config-provider@npm:4.3.0" + dependencies: + "@smithy/property-provider": ^4.2.0 + "@smithy/shared-ini-file-loader": ^4.3.0 + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: e67e3b4d281947cd7bfe358a4a40349f52c4761ec4903c4392e27ee6816eb3b0ba3d1e9d1c196ff2f28ee3ae4701945d0dfd234203aa93bc30b46146070b7216 + 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" @@ -11118,6 +11287,19 @@ __metadata: languageName: node linkType: hard +"@smithy/node-http-handler@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/node-http-handler@npm:4.3.0" + dependencies: + "@smithy/abort-controller": ^4.2.0 + "@smithy/protocol-http": ^5.3.0 + "@smithy/querystring-builder": ^4.2.0 + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 30752ee8bd3d426847221417db3742e8e976615de8277e345af58899845e0e35438e4921056849f9d505a20af0f7512cb39276b68d0da5446d0b275f038bdeaf + 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" @@ -11138,6 +11320,16 @@ __metadata: languageName: node linkType: hard +"@smithy/property-provider@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/property-provider@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 8ea9ccc9d3e67895c7002a3f5ab2f3f8b3432213eff3e5b3e4d81845273903de706e6c46e815b39e00c2fc5bf76a341d99e396cb9dc0c9cdc5981a35c83991a1 + 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" @@ -11158,6 +11350,16 @@ __metadata: languageName: node linkType: hard +"@smithy/protocol-http@npm:^5.3.0": + version: 5.3.0 + resolution: "@smithy/protocol-http@npm:5.3.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 718f1729c6b44a0d493ed4d815e9b6037fd50a87d9f7ac6070d53c083f11d1e460c6edc5997b2d8c8138559d15e2a79c1bd26534357c55c32bc5d2aaae625d3a + 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" @@ -11180,6 +11382,17 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-builder@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/querystring-builder@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + "@smithy/util-uri-escape": ^4.2.0 + tslib: ^2.6.2 + checksum: 01eb2e947130c1d88e67da65032e88911f6d2f4fa99f56555370fa765e63c629273e06537d5c5160f882b64abbf524168a8b510dc5de6ac2e161a53e914d7ef7 + languageName: node + linkType: hard + "@smithy/querystring-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-parser@npm:3.0.8" @@ -11200,6 +11413,16 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/querystring-parser@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 9d50446af317bd5231514151a8a00d808db985543a2c5aa755b5b3bf1c7ce0290a652dbebb577709d2a7fa51279ad162e5551e780e5b8360eeda4cd88beaa828 + 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" @@ -11238,6 +11461,16 @@ __metadata: languageName: node linkType: hard +"@smithy/shared-ini-file-loader@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/shared-ini-file-loader@npm:4.3.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 73d39e470acea3b635532065987f4aab72b3af73840d3d92154429f4273f0d2d3269e852da2420dd6a7d2a2fc69c38cfd6a9802a4b67002b830e9babe53fde0d + languageName: node + linkType: hard + "@smithy/signature-v4@npm:^4.1.0": version: 4.2.1 resolution: "@smithy/signature-v4@npm:4.2.1" @@ -11300,6 +11533,21 @@ __metadata: languageName: node linkType: hard +"@smithy/smithy-client@npm:^4.6.5": + version: 4.7.0 + resolution: "@smithy/smithy-client@npm:4.7.0" + dependencies: + "@smithy/core": ^3.14.0 + "@smithy/middleware-endpoint": ^4.3.0 + "@smithy/middleware-stack": ^4.2.0 + "@smithy/protocol-http": ^5.3.0 + "@smithy/types": ^4.6.0 + "@smithy/util-stream": ^4.4.0 + tslib: ^2.6.2 + checksum: f94fa42a96a52fea0fdc6417477b65f7c31a63641d641d6f11e5679d9917cc40f0ff43cfbab8f9abbf5edfa31b5ffa25c354b70b2c71b4e5f04efccfe20c4063 + languageName: node + linkType: hard + "@smithy/types@npm:^3.3.0, @smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0, @smithy/types@npm:^3.7.2": version: 3.7.2 resolution: "@smithy/types@npm:3.7.2" @@ -11318,6 +11566,15 @@ __metadata: languageName: node linkType: hard +"@smithy/types@npm:^4.6.0": + version: 4.6.0 + resolution: "@smithy/types@npm:4.6.0" + dependencies: + tslib: ^2.6.2 + checksum: 7a791fa2ad4a4407875076088b6438a6d328af9675705e64fba046c1ca84dbbdd0b9e398f4c45f5c6bc20a8b312aec0e5e69dd9114c5f7bd0a01ef23a646c6cd + 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" @@ -11340,6 +11597,17 @@ __metadata: languageName: node linkType: hard +"@smithy/url-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/url-parser@npm:4.2.0" + dependencies: + "@smithy/querystring-parser": ^4.2.0 + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: 3e76168d2eb972e07a70cf9a4e1a45faf1915474bce399e3c1836dec9794b744e804f4c5bc0b0fd1f5f6582fbb08c716072225b5bbe7aab59d9b3a026b1a7a18 + languageName: node + linkType: hard + "@smithy/util-base64@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-base64@npm:3.0.0" @@ -11362,6 +11630,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-base64@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-base64@npm:4.2.0" + dependencies: + "@smithy/util-buffer-from": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 + tslib: ^2.6.2 + checksum: 6b11dd6c782a419a7a85b908e0311eab4f853ae9d60da5f2c2e42614f983858052a2075b71bd51ed15ec89a54b7d53f1e52e97e3a055a6e6de82d2cc1fd9aeb3 + 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" @@ -11380,6 +11659,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-body-length-browser@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-body-length-browser@npm:4.2.0" + dependencies: + tslib: ^2.6.2 + checksum: 15553c249088d59406c6917c19ed19810c7dbcc0967c44e5f3fbb2cc870c004b35f388c082b77f370a2c440a69ec7e8336c7a066af904812a66944dd5cb4c8cc + 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" @@ -11428,6 +11716,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-buffer-from@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-buffer-from@npm:4.2.0" + dependencies: + "@smithy/is-array-buffer": ^4.2.0 + tslib: ^2.6.2 + checksum: 4842d5607240c11400db30762ef6cb4def8d13e3474c5a901a4e2a1783198f5b163ab6011cf24a7f0acbba9a4d7cc79db1d811dc8aa9da446448e52773223997 + 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" @@ -11542,6 +11840,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-hex-encoding@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-hex-encoding@npm:4.2.0" + dependencies: + tslib: ^2.6.2 + checksum: aaa94a69f03d14d3f28125cc915ca421065735e2d05d7305f0958a50021b2fce4fc68a248328e6b5b612dbaa49e471d481ff513bf89554f659f0a49573e97312 + 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" @@ -11562,6 +11869,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-middleware@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-middleware@npm:4.2.0" + dependencies: + "@smithy/types": ^4.6.0 + tslib: ^2.6.2 + checksum: db64843017fed2fcda503af98b47f5c5d8e36d537ea24e5d12063a1865aa52f6ffb2ae0757c89f5734bcae2f5b3fa5e6a592eac9e8fb35f87dd84e644fd8396b + 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" @@ -11616,6 +11933,22 @@ __metadata: languageName: node linkType: hard +"@smithy/util-stream@npm:^4.4.0": + version: 4.4.0 + resolution: "@smithy/util-stream@npm:4.4.0" + dependencies: + "@smithy/fetch-http-handler": ^5.3.0 + "@smithy/node-http-handler": ^4.3.0 + "@smithy/types": ^4.6.0 + "@smithy/util-base64": ^4.2.0 + "@smithy/util-buffer-from": ^4.2.0 + "@smithy/util-hex-encoding": ^4.2.0 + "@smithy/util-utf8": ^4.2.0 + tslib: ^2.6.2 + checksum: 6328011045d4d4ed8e2bc07a07559ad64a593971c886a6699bd590bbda1cbb65fe8413f8a08de66837fbf5a2d87c60f4a3885aa5b48a884f3f50d5aaefae4128 + 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" @@ -11634,6 +11967,15 @@ __metadata: languageName: node linkType: hard +"@smithy/util-uri-escape@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-uri-escape@npm:4.2.0" + dependencies: + tslib: ^2.6.2 + checksum: 1933e8d939dc52e1ee5e7d2397f4c208a9eac0283397a19ee72078d04db997ebe3ad39709b56aac586ffce10d1cf5ab17dfc068ea6ab030098fc06fe3532e085 + languageName: node + linkType: hard + "@smithy/util-utf8@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-utf8@npm:2.0.0" @@ -11664,6 +12006,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-utf8@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-utf8@npm:4.2.0" + dependencies: + "@smithy/util-buffer-from": ^4.2.0 + tslib: ^2.6.2 + checksum: 689a1f2295d52bec0dde7215a075d79ef32ad8b146cb610a529b2cab747d96978401fd31469c225e31f3042830c54403e64d39b28033df013c8de27a84b405a2 + languageName: node + linkType: hard + "@smithy/util-waiter@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/util-waiter@npm:3.1.7" @@ -11686,6 +12038,15 @@ __metadata: languageName: node linkType: hard +"@smithy/uuid@npm:^1.1.0": + version: 1.1.0 + resolution: "@smithy/uuid@npm:1.1.0" + dependencies: + tslib: ^2.6.2 + checksum: f8a8bfcc0e241457636884e778e261d45d8a3aaad533775111170cac36ac666275b59ec6d86d3d5b8d470ff4b864202d2a1a188b3c0e0ed0c86a0b693acf1ecf + 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" From deec9b64f8f8b2a830d95dd867072e9908c01a1c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 09:41:21 -0400 Subject: [PATCH 19/51] chore: dedupe --- yarn.lock | 346 ++++-------------------------------------------------- 1 file changed, 26 insertions(+), 320 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2701f458671..a4537d8c13a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5925,7 +5925,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.887.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": +"@aws-sdk/types@npm:3.887.0": version: 3.887.0 resolution: "@aws-sdk/types@npm:3.887.0" dependencies: @@ -5935,7 +5935,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.893.0": +"@aws-sdk/types@npm:3.893.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.893.0 resolution: "@aws-sdk/types@npm:3.893.0" dependencies: @@ -6136,7 +6136,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-dynamodb@npm:3.899.0": +"@aws-sdk/util-dynamodb@npm:3.899.0, @aws-sdk/util-dynamodb@npm:^3.624.0": version: 3.899.0 resolution: "@aws-sdk/util-dynamodb@npm:3.899.0" dependencies: @@ -6147,17 +6147,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-dynamodb@npm:^3.624.0": - version: 3.891.0 - resolution: "@aws-sdk/util-dynamodb@npm:3.891.0" - dependencies: - tslib: ^2.6.2 - peerDependencies: - "@aws-sdk/client-dynamodb": ^3.891.0 - checksum: 0ce33995341973286e89b6af3c750949828fc84e808f9bcd62e978ab8c752611a786e9ceb5f77952a8cd8c7bac626ab97e46ba6d2ca570f9b07314993582a7d4 - 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" @@ -10585,17 +10574,7 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/abort-controller@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: f50ee8e76dab55df7af7247c5dac88209702b9e0a775a5d98472d67c607b6f624c3789ac75974c8b6fa452e1a4f9f72e5749dbea5b57f14d7ca137929e36f0ee - languageName: node - linkType: hard - -"@smithy/abort-controller@npm:^4.2.0": +"@smithy/abort-controller@npm:^4.1.1, @smithy/abort-controller@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/abort-controller@npm:4.2.0" dependencies: @@ -10685,26 +10664,7 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.5.3": - version: 3.11.0 - resolution: "@smithy/core@npm:3.11.0" - dependencies: - "@smithy/middleware-serde": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-body-length-browser": ^4.1.0 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-stream": ^4.3.1 - "@smithy/util-utf8": ^4.1.0 - "@types/uuid": ^9.0.1 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 290d088cc7a14b38c96943577d6bfde1b0c47588493c0b18dfacc98affb02a3d067f9b57d71a838bd79b46c3a7a10458f445eada37934bf308c1e21ae02b4b7d - languageName: node - linkType: hard - -"@smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0": +"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0, @smithy/core@npm:^3.5.3": version: 3.14.0 resolution: "@smithy/core@npm:3.14.0" dependencies: @@ -10884,20 +10844,7 @@ __metadata: languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1": - version: 5.2.1 - resolution: "@smithy/fetch-http-handler@npm:5.2.1" - dependencies: - "@smithy/protocol-http": ^5.2.1 - "@smithy/querystring-builder": ^4.1.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - tslib: ^2.6.2 - checksum: c4a6a1a67f84361045bd10fef470ec6cda8691f549a455f734cfd3de05ccefc300973188e55578ae379b936f7e3f842971447386a3d8ec728f7df9c2f1c58fc2 - languageName: node - linkType: hard - -"@smithy/fetch-http-handler@npm:^5.3.0": +"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1, @smithy/fetch-http-handler@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/fetch-http-handler@npm:5.3.0" dependencies: @@ -11018,16 +10965,7 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/is-array-buffer@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: 399af810a9329c033d1816c492b17343d2ff956d32a358f327da6af0e4ad3c4640a1ef8dcd5f4d0f7d85ef19cf6909038f1a6539c938372dd33996d8f102bb9a - languageName: node - linkType: hard - -"@smithy/is-array-buffer@npm:^4.2.0": +"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0, @smithy/is-array-buffer@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/is-array-buffer@npm:4.2.0" dependencies: @@ -11096,23 +11034,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/middleware-endpoint@npm:4.2.2" - dependencies: - "@smithy/core": ^3.11.0 - "@smithy/middleware-serde": ^4.1.1 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/shared-ini-file-loader": ^4.2.0 - "@smithy/types": ^4.5.0 - "@smithy/url-parser": ^4.1.1 - "@smithy/util-middleware": ^4.1.1 - tslib: ^2.6.2 - checksum: 1c720187426c10fff6eb750cd0148047cfb03c97dbfd2f0bfc4a1d9ada2bb1dc480627cfdeef04cb911d4b44545ccac3119ee7da25f22b05b07aad1c404d5ca4 - languageName: node - linkType: hard - -"@smithy/middleware-endpoint@npm:^4.3.0": +"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2, @smithy/middleware-endpoint@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/middleware-endpoint@npm:4.3.0" dependencies: @@ -11173,18 +11095,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/middleware-serde@npm:4.1.1" - dependencies: - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 69c0cf035da2ccbdf2838f50a1fafb0f8e6fb286b820e0aa91be7bdc6dd102f51ce3b295e68cdf9e7441dfc3160a3d3cabac99d98a8f0a75675ecf0f1e09d439 - languageName: node - linkType: hard - -"@smithy/middleware-serde@npm:^4.2.0": +"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1, @smithy/middleware-serde@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-serde@npm:4.2.0" dependencies: @@ -11205,17 +11116,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/middleware-stack@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 8ee554c30e6802f6adcaf673e4d216cd8f56e13a9ef5d644ec94f0b553c3b62b451a8156fd49645cc1f5eedd09234a107edc42faff779416a4a43a215e370007 - languageName: node - linkType: hard - -"@smithy/middleware-stack@npm:^4.2.0": +"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1, @smithy/middleware-stack@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-stack@npm:4.2.0" dependencies: @@ -11237,19 +11138,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/node-config-provider@npm:4.2.2" - dependencies: - "@smithy/property-provider": ^4.1.1 - "@smithy/shared-ini-file-loader": ^4.2.0 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 9170728f606f1e250236c1265bee9811e1062e3b929339eafc5a8d5229e9fbb4c94e1b8cdcd644b0a8c855370b649c85a0aca5b47d132ad505ce32ba8a51e230 - languageName: node - linkType: hard - -"@smithy/node-config-provider@npm:^4.3.0": +"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2, @smithy/node-config-provider@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-config-provider@npm:4.3.0" dependencies: @@ -11274,20 +11163,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1": - version: 4.2.1 - resolution: "@smithy/node-http-handler@npm:4.2.1" - dependencies: - "@smithy/abort-controller": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/querystring-builder": ^4.1.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 7536923c62b0bbbade8335b25368d02b4840cd381aba9dbdadb472fb501576d7b3b73121069356b022e9da3ec5d27711a00ec7786d31ba15089abdce582121cc - languageName: node - linkType: hard - -"@smithy/node-http-handler@npm:^4.3.0": +"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1, @smithy/node-http-handler@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-http-handler@npm:4.3.0" dependencies: @@ -11310,17 +11186,7 @@ __metadata: languageName: node linkType: hard -"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/property-provider@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 5aa28b7e6cc23baf3605aa3be8a33ae4943635e698e0de773e8056f5ad06494f370f23cd3c4d083245d6fe411c25c38a76887d38a36d5daf075e36e6e6e3864f - languageName: node - linkType: hard - -"@smithy/property-provider@npm:^4.2.0": +"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1, @smithy/property-provider@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/property-provider@npm:4.2.0" dependencies: @@ -11340,17 +11206,7 @@ __metadata: languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1": - version: 5.2.1 - resolution: "@smithy/protocol-http@npm:5.2.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: b27df0a94f8e0bab1e8310da82c3048e6d397a3b52f8413c4f19bb9c13d11afcdf7424293cb8d8d3e867b07ff8c5f3c8d0fbdd7d07a8328a39721eb202336d2b - languageName: node - linkType: hard - -"@smithy/protocol-http@npm:^5.3.0": +"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1, @smithy/protocol-http@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/protocol-http@npm:5.3.0" dependencies: @@ -11371,17 +11227,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-builder@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/querystring-builder@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - "@smithy/util-uri-escape": ^4.1.0 - tslib: ^2.6.2 - checksum: 15d41888eae29f57dbf9d2c8caa449d19ebb760b83958a0fe2cf4858948bb6e0466c176a207b868d8af7785e8f6688b87ada4e364ec6fd729ab6bffbd64b92d8 - languageName: node - linkType: hard - "@smithy/querystring-builder@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/querystring-builder@npm:4.2.0" @@ -11403,16 +11248,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-parser@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/querystring-parser@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 6bf8672aca07826af16625b41f20332fdfdc39861124e026ee929e4652f638edc7107d347a2fe7feb0c2e6f2c98d149d2d383cecaab46a48a990f36333e8f016 - languageName: node - linkType: hard - "@smithy/querystring-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/querystring-parser@npm:4.2.0" @@ -11451,17 +11286,7 @@ __metadata: languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/shared-ini-file-loader@npm:4.2.0" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 36b0ee727a7c07c617db986ff34c55ffc5068074ccd01cf1650bbef299c909b72d3f3a703c42f45b31d4ebfe698ec32036eeb57c27a1281de000543bcfe1ac9f - languageName: node - linkType: hard - -"@smithy/shared-ini-file-loader@npm:^4.3.0": +"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0, @smithy/shared-ini-file-loader@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/shared-ini-file-loader@npm:4.3.0" dependencies: @@ -11518,22 +11343,7 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2": - version: 4.6.2 - resolution: "@smithy/smithy-client@npm:4.6.2" - dependencies: - "@smithy/core": ^3.11.0 - "@smithy/middleware-endpoint": ^4.2.2 - "@smithy/middleware-stack": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-stream": ^4.3.1 - tslib: ^2.6.2 - checksum: 69393eb48120b0d3a49f0a216504a9e3a8360cf20777bb44ba0dcfacc7f45c21883a3a7cded3c53d818fbf518afe513b0b25dbf7c8ed9ac4fca772f090d3155b - languageName: node - linkType: hard - -"@smithy/smithy-client@npm:^4.6.5": +"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2, @smithy/smithy-client@npm:^4.6.5": version: 4.7.0 resolution: "@smithy/smithy-client@npm:4.7.0" dependencies: @@ -11557,16 +11367,7 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0": - version: 4.5.0 - resolution: "@smithy/types@npm:4.5.0" - dependencies: - tslib: ^2.6.2 - checksum: 7c765c9316893ab9e6575ba40e3d1569d43d7d1edd1110b505e190a4aa378a89e407b6f92de7bf0f22342ce05228ff0f1d37b14781e41c60c429fc22c8e5bae9 - languageName: node - linkType: hard - -"@smithy/types@npm:^4.6.0": +"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0, @smithy/types@npm:^4.6.0": version: 4.6.0 resolution: "@smithy/types@npm:4.6.0" dependencies: @@ -11586,18 +11387,7 @@ __metadata: languageName: node linkType: hard -"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/url-parser@npm:4.1.1" - dependencies: - "@smithy/querystring-parser": ^4.1.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 1f9e19d5d1e1a4874cf2f61df014715dc3685be385356758d3aed1a6b020b074af22961b12ae651faad74ed0460a102156471543031e74c726770820ede6f31c - languageName: node - linkType: hard - -"@smithy/url-parser@npm:^4.2.0": +"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1, @smithy/url-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/url-parser@npm:4.2.0" dependencies: @@ -11619,18 +11409,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-base64@npm:4.1.0" - dependencies: - "@smithy/util-buffer-from": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: e2275e4a09c245b8a0c1c6ead4418333d037f6cbc29a01881b56fb5676ad46839058bbdb3f9f357898c8000feccac9344ee66c9c36e17dd321bda84a93f2c36f - languageName: node - linkType: hard - -"@smithy/util-base64@npm:^4.2.0": +"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0, @smithy/util-base64@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-base64@npm:4.2.0" dependencies: @@ -11650,16 +11429,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-body-length-browser@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: e86c39696dca4ce4b58e393fb85263e31ee046d88fdbd0bd1ee121f5101faca5fc945a7da17432aa39e86c178c80ac183568edb3b7df323f1134172dc36192c6 - languageName: node - linkType: hard - -"@smithy/util-body-length-browser@npm:^4.2.0": +"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0, @smithy/util-body-length-browser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-body-length-browser@npm:4.2.0" dependencies: @@ -11706,17 +11476,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-buffer-from@npm:4.1.0" - dependencies: - "@smithy/is-array-buffer": ^4.1.0 - tslib: ^2.6.2 - checksum: f19457df277e7125ffbf106c26c70ffbc550956afceede4e2c2eb13a32f6f304f9e3b7a37f4c717df3c5ce97f8b759ee59ceed0e3f649f236bbaf2bfe8f266ef - languageName: node - linkType: hard - -"@smithy/util-buffer-from@npm:^4.2.0": +"@smithy/util-buffer-from@npm:^4.1.0, @smithy/util-buffer-from@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-buffer-from@npm:4.2.0" dependencies: @@ -11831,16 +11591,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-hex-encoding@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: eefaa537612afd13e497353a1bd55f3d6f977cdc52360f91fcb3b83b68d6cdd9b9fc16ab82561375b509ed8d5735c47b263c4e64e96471d1662d4c7a8c88449d - languageName: node - linkType: hard - -"@smithy/util-hex-encoding@npm:^4.2.0": +"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0, @smithy/util-hex-encoding@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-hex-encoding@npm:4.2.0" dependencies: @@ -11859,17 +11610,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/util-middleware@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 47bee56b2fbf9fbe3c4be4e1daac247fea889848d43120c64895529bb92ef43b25cf07213792d1646622356a1572b91cc48b0976c39667a9020edfa5ec58d093 - languageName: node - linkType: hard - -"@smithy/util-middleware@npm:^4.2.0": +"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1, @smithy/util-middleware@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-middleware@npm:4.2.0" dependencies: @@ -11917,23 +11658,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1": - version: 4.3.1 - resolution: "@smithy/util-stream@npm:4.3.1" - dependencies: - "@smithy/fetch-http-handler": ^5.2.1 - "@smithy/node-http-handler": ^4.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-buffer-from": ^4.1.0 - "@smithy/util-hex-encoding": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: 7fd8fde8b011fe3535799d9a60195fe8e1229c6976b76d3bf930dbb9d27204754acbf082816cdacaa00e77857ab9e4b673c331c6626aba7ef242cdb7e143b028 - languageName: node - linkType: hard - -"@smithy/util-stream@npm:^4.4.0": +"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1, @smithy/util-stream@npm:^4.4.0": version: 4.4.0 resolution: "@smithy/util-stream@npm:4.4.0" dependencies: @@ -11958,16 +11683,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-uri-escape@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: 3ff56036ce93226b05e68d34c1691e51cdd82ac5f2ba635701ba76a36a2b384ce945bfe2d9c4992f7b500387a6fe1de4d5d0825cd7c73fa10165678d443d3acc - languageName: node - linkType: hard - -"@smithy/util-uri-escape@npm:^4.2.0": +"@smithy/util-uri-escape@npm:^4.1.0, @smithy/util-uri-escape@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-uri-escape@npm:4.2.0" dependencies: @@ -11996,17 +11712,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-utf8@npm:4.1.0" - dependencies: - "@smithy/util-buffer-from": ^4.1.0 - tslib: ^2.6.2 - checksum: 4331c056b005647701609c42609c3bf0848fdaa01134d891327820c32cfcf7410d8bce1c15d534e5c75af79ea4527c3ca33bccfc104e19a94475fbfe125ecb86 - languageName: node - linkType: hard - -"@smithy/util-utf8@npm:^4.2.0": +"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0, @smithy/util-utf8@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-utf8@npm:4.2.0" dependencies: From b80909d478a7d34563e4a6370c05135c43d8ad38 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 10:22:19 -0400 Subject: [PATCH 20/51] fix: unmarshall --- .../src/data-loader/dynamo-db/index.ts | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 69e712210bf..303d3632cbb 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -9,6 +9,7 @@ import { ScanCommand, UpdateCommandInput, } from '@aws-sdk/lib-dynamodb'; +import { unmarshall } from '@aws-sdk/util-dynamodb'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -113,10 +114,12 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async getItem(payload: any): Promise { const { consistentRead = false } = payload; + const unmarshalledKey = payload.key ? unmarshall(payload.key) : {}; + const result = await this.client.send( new GetCommand({ TableName: this.tableName, - Key: payload.key, + Key: unmarshalledKey, ConsistentRead: consistentRead, }), ); @@ -135,13 +138,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = undefined, } = {}, } = payload; + const unmarshalledKey = key ? unmarshall(key) : {}; + const unmarshalledAttributeValues = attributeValues ? unmarshall(attributeValues) : {}; await this.client.send( new PutCommand({ TableName: this.tableName, Item: { - ...key, - ...attributeValues, + ...unmarshalledKey, + ...unmarshalledAttributeValues, }, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, @@ -150,25 +155,28 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ); // put does not return us anything useful so we need to fetch the object. - return this.getItem({ key, consistentRead: true }); + return this.getItem({ key: unmarshalledKey, consistentRead: true }); } private async query({ query: keyCondition, filter, index, nextToken, limit, scanIndexForward = true, consistentRead = false, select }) { keyCondition = keyCondition || { expression: null }; filter = filter || { expression: null }; + const unmarshalledFilterExpressionValues = filter.expressionValues ? unmarshall(filter.expressionValues) : {}; + const unmarshalledKeyConditionExpressionValues = keyCondition.expressionValues ? unmarshall(keyCondition.expressionValues) : {}; + const unmarshalledNextToken = nextToken ? unmarshall(nextToken) : undefined; const params = { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, ExpressionAttributeValues: { - ...(filter.expressionValues || {}), - ...(keyCondition.expressionValues || {}), + ...unmarshalledFilterExpressionValues, + ...unmarshalledKeyConditionExpressionValues, }, ExpressionAttributeNames: { ...(filter.expressionNames || {}), ...(keyCondition.expressionNames || {}), }, - ExclusiveStartKey: nextToken, + ExclusiveStartKey: unmarshalledNextToken, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -195,10 +203,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; + const unmarshalledKey = key ? unmarshall(key) : {}; + const unmarshalledUpdateExpressionValues = update.expressionValues ? unmarshall(update.expressionValues) : {}; + const unmarshalledConditionExpressionValues = condition.expressionValues ? unmarshall(condition.expressionValues) : {}; const params: UpdateCommandInput = { TableName: this.tableName, - Key: key, + Key: unmarshalledKey, UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', @@ -207,8 +218,8 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(update.expressionNames || {}), }, ExpressionAttributeValues: { - ...(condition.expressionValues || {}), - ...(update.expressionValues || {}), + ...unmarshalledConditionExpressionValues, + ...unmarshalledUpdateExpressionValues, }, }; @@ -226,14 +237,17 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = undefined, } = {}, } = payload; + const unmarshalledKey = key ? unmarshall(key) : {}; + const unmarshalledExpressionValues = expressionValues ? unmarshall(expressionValues) : undefined; + const { Attributes: deleted } = await this.client.send( new DeleteCommand({ TableName: this.tableName, - Key: key, + Key: unmarshalledKey, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues, + ExpressionAttributeValues: unmarshalledExpressionValues, }), ); @@ -255,10 +269,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { }; if (filter) { + const unmarshalledFilterExpressionValues = filter.expressionValues ? unmarshall(filter.expressionValues) : undefined; Object.assign(params, { FilterExpression: filter.expression, ExpressionAttributeNames: filter.expressionNames, - ExpressionAttributeValues: filter.expressionValues, + ExpressionAttributeValues: unmarshalledFilterExpressionValues, }); } From 206f1e1a6643ed2c5cd5623eaa140b928d48b9f6 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 11:07:27 -0400 Subject: [PATCH 21/51] Revert "fix: unmarshall" This reverts commit b80909d478a7d34563e4a6370c05135c43d8ad38. --- .../src/data-loader/dynamo-db/index.ts | 41 ++++++------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 303d3632cbb..69e712210bf 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -9,7 +9,6 @@ import { ScanCommand, UpdateCommandInput, } from '@aws-sdk/lib-dynamodb'; -import { unmarshall } from '@aws-sdk/util-dynamodb'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -114,12 +113,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async getItem(payload: any): Promise { const { consistentRead = false } = payload; - const unmarshalledKey = payload.key ? unmarshall(payload.key) : {}; - const result = await this.client.send( new GetCommand({ TableName: this.tableName, - Key: unmarshalledKey, + Key: payload.key, ConsistentRead: consistentRead, }), ); @@ -138,15 +135,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = undefined, } = {}, } = payload; - const unmarshalledKey = key ? unmarshall(key) : {}; - const unmarshalledAttributeValues = attributeValues ? unmarshall(attributeValues) : {}; await this.client.send( new PutCommand({ TableName: this.tableName, Item: { - ...unmarshalledKey, - ...unmarshalledAttributeValues, + ...key, + ...attributeValues, }, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, @@ -155,28 +150,25 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ); // put does not return us anything useful so we need to fetch the object. - return this.getItem({ key: unmarshalledKey, consistentRead: true }); + return this.getItem({ key, consistentRead: true }); } private async query({ query: keyCondition, filter, index, nextToken, limit, scanIndexForward = true, consistentRead = false, select }) { keyCondition = keyCondition || { expression: null }; filter = filter || { expression: null }; - const unmarshalledFilterExpressionValues = filter.expressionValues ? unmarshall(filter.expressionValues) : {}; - const unmarshalledKeyConditionExpressionValues = keyCondition.expressionValues ? unmarshall(keyCondition.expressionValues) : {}; - const unmarshalledNextToken = nextToken ? unmarshall(nextToken) : undefined; const params = { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, ExpressionAttributeValues: { - ...unmarshalledFilterExpressionValues, - ...unmarshalledKeyConditionExpressionValues, + ...(filter.expressionValues || {}), + ...(keyCondition.expressionValues || {}), }, ExpressionAttributeNames: { ...(filter.expressionNames || {}), ...(keyCondition.expressionNames || {}), }, - ExclusiveStartKey: unmarshalledNextToken, + ExclusiveStartKey: nextToken, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -203,13 +195,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; - const unmarshalledKey = key ? unmarshall(key) : {}; - const unmarshalledUpdateExpressionValues = update.expressionValues ? unmarshall(update.expressionValues) : {}; - const unmarshalledConditionExpressionValues = condition.expressionValues ? unmarshall(condition.expressionValues) : {}; const params: UpdateCommandInput = { TableName: this.tableName, - Key: unmarshalledKey, + Key: key, UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', @@ -218,8 +207,8 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(update.expressionNames || {}), }, ExpressionAttributeValues: { - ...unmarshalledConditionExpressionValues, - ...unmarshalledUpdateExpressionValues, + ...(condition.expressionValues || {}), + ...(update.expressionValues || {}), }, }; @@ -237,17 +226,14 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { expressionValues = undefined, } = {}, } = payload; - const unmarshalledKey = key ? unmarshall(key) : {}; - const unmarshalledExpressionValues = expressionValues ? unmarshall(expressionValues) : undefined; - const { Attributes: deleted } = await this.client.send( new DeleteCommand({ TableName: this.tableName, - Key: unmarshalledKey, + Key: key, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: unmarshalledExpressionValues, + ExpressionAttributeValues: expressionValues, }), ); @@ -269,11 +255,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { }; if (filter) { - const unmarshalledFilterExpressionValues = filter.expressionValues ? unmarshall(filter.expressionValues) : undefined; Object.assign(params, { FilterExpression: filter.expression, ExpressionAttributeNames: filter.expressionNames, - ExpressionAttributeValues: unmarshalledFilterExpressionValues, + ExpressionAttributeValues: filter.expressionValues, }); } From 41629d1b27e792bda9e0773a85484f3a94190d15 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 11:07:30 -0400 Subject: [PATCH 22/51] Revert "chore: dedupe" This reverts commit deec9b64f8f8b2a830d95dd867072e9908c01a1c. --- yarn.lock | 346 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 320 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index a4537d8c13a..2701f458671 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5925,7 +5925,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.887.0": +"@aws-sdk/types@npm:3.887.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.887.0 resolution: "@aws-sdk/types@npm:3.887.0" dependencies: @@ -5935,7 +5935,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.893.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": +"@aws-sdk/types@npm:3.893.0": version: 3.893.0 resolution: "@aws-sdk/types@npm:3.893.0" dependencies: @@ -6136,7 +6136,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-dynamodb@npm:3.899.0, @aws-sdk/util-dynamodb@npm:^3.624.0": +"@aws-sdk/util-dynamodb@npm:3.899.0": version: 3.899.0 resolution: "@aws-sdk/util-dynamodb@npm:3.899.0" dependencies: @@ -6147,6 +6147,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-dynamodb@npm:^3.624.0": + version: 3.891.0 + resolution: "@aws-sdk/util-dynamodb@npm:3.891.0" + dependencies: + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-dynamodb": ^3.891.0 + checksum: 0ce33995341973286e89b6af3c750949828fc84e808f9bcd62e978ab8c752611a786e9ceb5f77952a8cd8c7bac626ab97e46ba6d2ca570f9b07314993582a7d4 + 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" @@ -10574,7 +10585,17 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.1.1, @smithy/abort-controller@npm:^4.2.0": +"@smithy/abort-controller@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/abort-controller@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: f50ee8e76dab55df7af7247c5dac88209702b9e0a775a5d98472d67c607b6f624c3789ac75974c8b6fa452e1a4f9f72e5749dbea5b57f14d7ca137929e36f0ee + languageName: node + linkType: hard + +"@smithy/abort-controller@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/abort-controller@npm:4.2.0" dependencies: @@ -10664,7 +10685,26 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0, @smithy/core@npm:^3.5.3": +"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.5.3": + version: 3.11.0 + resolution: "@smithy/core@npm:3.11.0" + dependencies: + "@smithy/middleware-serde": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-body-length-browser": ^4.1.0 + "@smithy/util-middleware": ^4.1.1 + "@smithy/util-stream": ^4.3.1 + "@smithy/util-utf8": ^4.1.0 + "@types/uuid": ^9.0.1 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 290d088cc7a14b38c96943577d6bfde1b0c47588493c0b18dfacc98affb02a3d067f9b57d71a838bd79b46c3a7a10458f445eada37934bf308c1e21ae02b4b7d + languageName: node + linkType: hard + +"@smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0": version: 3.14.0 resolution: "@smithy/core@npm:3.14.0" dependencies: @@ -10844,7 +10884,20 @@ __metadata: languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1, @smithy/fetch-http-handler@npm:^5.3.0": +"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1": + version: 5.2.1 + resolution: "@smithy/fetch-http-handler@npm:5.2.1" + dependencies: + "@smithy/protocol-http": ^5.2.1 + "@smithy/querystring-builder": ^4.1.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + tslib: ^2.6.2 + checksum: c4a6a1a67f84361045bd10fef470ec6cda8691f549a455f734cfd3de05ccefc300973188e55578ae379b936f7e3f842971447386a3d8ec728f7df9c2f1c58fc2 + languageName: node + linkType: hard + +"@smithy/fetch-http-handler@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/fetch-http-handler@npm:5.3.0" dependencies: @@ -10965,7 +11018,16 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0, @smithy/is-array-buffer@npm:^4.2.0": +"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/is-array-buffer@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 399af810a9329c033d1816c492b17343d2ff956d32a358f327da6af0e4ad3c4640a1ef8dcd5f4d0f7d85ef19cf6909038f1a6539c938372dd33996d8f102bb9a + languageName: node + linkType: hard + +"@smithy/is-array-buffer@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/is-array-buffer@npm:4.2.0" dependencies: @@ -11034,7 +11096,23 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2, @smithy/middleware-endpoint@npm:^4.3.0": +"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2": + version: 4.2.2 + resolution: "@smithy/middleware-endpoint@npm:4.2.2" + dependencies: + "@smithy/core": ^3.11.0 + "@smithy/middleware-serde": ^4.1.1 + "@smithy/node-config-provider": ^4.2.2 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + "@smithy/url-parser": ^4.1.1 + "@smithy/util-middleware": ^4.1.1 + tslib: ^2.6.2 + checksum: 1c720187426c10fff6eb750cd0148047cfb03c97dbfd2f0bfc4a1d9ada2bb1dc480627cfdeef04cb911d4b44545ccac3119ee7da25f22b05b07aad1c404d5ca4 + languageName: node + linkType: hard + +"@smithy/middleware-endpoint@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/middleware-endpoint@npm:4.3.0" dependencies: @@ -11095,7 +11173,18 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1, @smithy/middleware-serde@npm:^4.2.0": +"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/middleware-serde@npm:4.1.1" + dependencies: + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 69c0cf035da2ccbdf2838f50a1fafb0f8e6fb286b820e0aa91be7bdc6dd102f51ce3b295e68cdf9e7441dfc3160a3d3cabac99d98a8f0a75675ecf0f1e09d439 + languageName: node + linkType: hard + +"@smithy/middleware-serde@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-serde@npm:4.2.0" dependencies: @@ -11116,7 +11205,17 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1, @smithy/middleware-stack@npm:^4.2.0": +"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/middleware-stack@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 8ee554c30e6802f6adcaf673e4d216cd8f56e13a9ef5d644ec94f0b553c3b62b451a8156fd49645cc1f5eedd09234a107edc42faff779416a4a43a215e370007 + languageName: node + linkType: hard + +"@smithy/middleware-stack@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-stack@npm:4.2.0" dependencies: @@ -11138,7 +11237,19 @@ __metadata: languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2, @smithy/node-config-provider@npm:^4.3.0": +"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2": + version: 4.2.2 + resolution: "@smithy/node-config-provider@npm:4.2.2" + dependencies: + "@smithy/property-provider": ^4.1.1 + "@smithy/shared-ini-file-loader": ^4.2.0 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 9170728f606f1e250236c1265bee9811e1062e3b929339eafc5a8d5229e9fbb4c94e1b8cdcd644b0a8c855370b649c85a0aca5b47d132ad505ce32ba8a51e230 + languageName: node + linkType: hard + +"@smithy/node-config-provider@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-config-provider@npm:4.3.0" dependencies: @@ -11163,7 +11274,20 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1, @smithy/node-http-handler@npm:^4.3.0": +"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1": + version: 4.2.1 + resolution: "@smithy/node-http-handler@npm:4.2.1" + dependencies: + "@smithy/abort-controller": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/querystring-builder": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 7536923c62b0bbbade8335b25368d02b4840cd381aba9dbdadb472fb501576d7b3b73121069356b022e9da3ec5d27711a00ec7786d31ba15089abdce582121cc + languageName: node + linkType: hard + +"@smithy/node-http-handler@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-http-handler@npm:4.3.0" dependencies: @@ -11186,7 +11310,17 @@ __metadata: languageName: node linkType: hard -"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1, @smithy/property-provider@npm:^4.2.0": +"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/property-provider@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 5aa28b7e6cc23baf3605aa3be8a33ae4943635e698e0de773e8056f5ad06494f370f23cd3c4d083245d6fe411c25c38a76887d38a36d5daf075e36e6e6e3864f + languageName: node + linkType: hard + +"@smithy/property-provider@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/property-provider@npm:4.2.0" dependencies: @@ -11206,7 +11340,17 @@ __metadata: languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1, @smithy/protocol-http@npm:^5.3.0": +"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1": + version: 5.2.1 + resolution: "@smithy/protocol-http@npm:5.2.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: b27df0a94f8e0bab1e8310da82c3048e6d397a3b52f8413c4f19bb9c13d11afcdf7424293cb8d8d3e867b07ff8c5f3c8d0fbdd7d07a8328a39721eb202336d2b + languageName: node + linkType: hard + +"@smithy/protocol-http@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/protocol-http@npm:5.3.0" dependencies: @@ -11227,6 +11371,17 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-builder@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/querystring-builder@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + "@smithy/util-uri-escape": ^4.1.0 + tslib: ^2.6.2 + checksum: 15d41888eae29f57dbf9d2c8caa449d19ebb760b83958a0fe2cf4858948bb6e0466c176a207b868d8af7785e8f6688b87ada4e364ec6fd729ab6bffbd64b92d8 + languageName: node + linkType: hard + "@smithy/querystring-builder@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/querystring-builder@npm:4.2.0" @@ -11248,6 +11403,16 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-parser@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/querystring-parser@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 6bf8672aca07826af16625b41f20332fdfdc39861124e026ee929e4652f638edc7107d347a2fe7feb0c2e6f2c98d149d2d383cecaab46a48a990f36333e8f016 + languageName: node + linkType: hard + "@smithy/querystring-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/querystring-parser@npm:4.2.0" @@ -11286,7 +11451,17 @@ __metadata: languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0, @smithy/shared-ini-file-loader@npm:^4.3.0": +"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/shared-ini-file-loader@npm:4.2.0" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 36b0ee727a7c07c617db986ff34c55ffc5068074ccd01cf1650bbef299c909b72d3f3a703c42f45b31d4ebfe698ec32036eeb57c27a1281de000543bcfe1ac9f + languageName: node + linkType: hard + +"@smithy/shared-ini-file-loader@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/shared-ini-file-loader@npm:4.3.0" dependencies: @@ -11343,7 +11518,22 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2, @smithy/smithy-client@npm:^4.6.5": +"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2": + version: 4.6.2 + resolution: "@smithy/smithy-client@npm:4.6.2" + dependencies: + "@smithy/core": ^3.11.0 + "@smithy/middleware-endpoint": ^4.2.2 + "@smithy/middleware-stack": ^4.1.1 + "@smithy/protocol-http": ^5.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-stream": ^4.3.1 + tslib: ^2.6.2 + checksum: 69393eb48120b0d3a49f0a216504a9e3a8360cf20777bb44ba0dcfacc7f45c21883a3a7cded3c53d818fbf518afe513b0b25dbf7c8ed9ac4fca772f090d3155b + languageName: node + linkType: hard + +"@smithy/smithy-client@npm:^4.6.5": version: 4.7.0 resolution: "@smithy/smithy-client@npm:4.7.0" dependencies: @@ -11367,7 +11557,16 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0, @smithy/types@npm:^4.6.0": +"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0": + version: 4.5.0 + resolution: "@smithy/types@npm:4.5.0" + dependencies: + tslib: ^2.6.2 + checksum: 7c765c9316893ab9e6575ba40e3d1569d43d7d1edd1110b505e190a4aa378a89e407b6f92de7bf0f22342ce05228ff0f1d37b14781e41c60c429fc22c8e5bae9 + languageName: node + linkType: hard + +"@smithy/types@npm:^4.6.0": version: 4.6.0 resolution: "@smithy/types@npm:4.6.0" dependencies: @@ -11387,7 +11586,18 @@ __metadata: languageName: node linkType: hard -"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1, @smithy/url-parser@npm:^4.2.0": +"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/url-parser@npm:4.1.1" + dependencies: + "@smithy/querystring-parser": ^4.1.1 + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 1f9e19d5d1e1a4874cf2f61df014715dc3685be385356758d3aed1a6b020b074af22961b12ae651faad74ed0460a102156471543031e74c726770820ede6f31c + languageName: node + linkType: hard + +"@smithy/url-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/url-parser@npm:4.2.0" dependencies: @@ -11409,7 +11619,18 @@ __metadata: languageName: node linkType: hard -"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0, @smithy/util-base64@npm:^4.2.0": +"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-base64@npm:4.1.0" + dependencies: + "@smithy/util-buffer-from": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: e2275e4a09c245b8a0c1c6ead4418333d037f6cbc29a01881b56fb5676ad46839058bbdb3f9f357898c8000feccac9344ee66c9c36e17dd321bda84a93f2c36f + languageName: node + linkType: hard + +"@smithy/util-base64@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-base64@npm:4.2.0" dependencies: @@ -11429,7 +11650,16 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0, @smithy/util-body-length-browser@npm:^4.2.0": +"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-body-length-browser@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: e86c39696dca4ce4b58e393fb85263e31ee046d88fdbd0bd1ee121f5101faca5fc945a7da17432aa39e86c178c80ac183568edb3b7df323f1134172dc36192c6 + languageName: node + linkType: hard + +"@smithy/util-body-length-browser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-body-length-browser@npm:4.2.0" dependencies: @@ -11476,7 +11706,17 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.1.0, @smithy/util-buffer-from@npm:^4.2.0": +"@smithy/util-buffer-from@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-buffer-from@npm:4.1.0" + dependencies: + "@smithy/is-array-buffer": ^4.1.0 + tslib: ^2.6.2 + checksum: f19457df277e7125ffbf106c26c70ffbc550956afceede4e2c2eb13a32f6f304f9e3b7a37f4c717df3c5ce97f8b759ee59ceed0e3f649f236bbaf2bfe8f266ef + languageName: node + linkType: hard + +"@smithy/util-buffer-from@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-buffer-from@npm:4.2.0" dependencies: @@ -11591,7 +11831,16 @@ __metadata: languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0, @smithy/util-hex-encoding@npm:^4.2.0": +"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-hex-encoding@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: eefaa537612afd13e497353a1bd55f3d6f977cdc52360f91fcb3b83b68d6cdd9b9fc16ab82561375b509ed8d5735c47b263c4e64e96471d1662d4c7a8c88449d + languageName: node + linkType: hard + +"@smithy/util-hex-encoding@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-hex-encoding@npm:4.2.0" dependencies: @@ -11610,7 +11859,17 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1, @smithy/util-middleware@npm:^4.2.0": +"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/util-middleware@npm:4.1.1" + dependencies: + "@smithy/types": ^4.5.0 + tslib: ^2.6.2 + checksum: 47bee56b2fbf9fbe3c4be4e1daac247fea889848d43120c64895529bb92ef43b25cf07213792d1646622356a1572b91cc48b0976c39667a9020edfa5ec58d093 + languageName: node + linkType: hard + +"@smithy/util-middleware@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-middleware@npm:4.2.0" dependencies: @@ -11658,7 +11917,23 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1, @smithy/util-stream@npm:^4.4.0": +"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1": + version: 4.3.1 + resolution: "@smithy/util-stream@npm:4.3.1" + dependencies: + "@smithy/fetch-http-handler": ^5.2.1 + "@smithy/node-http-handler": ^4.2.1 + "@smithy/types": ^4.5.0 + "@smithy/util-base64": ^4.1.0 + "@smithy/util-buffer-from": ^4.1.0 + "@smithy/util-hex-encoding": ^4.1.0 + "@smithy/util-utf8": ^4.1.0 + tslib: ^2.6.2 + checksum: 7fd8fde8b011fe3535799d9a60195fe8e1229c6976b76d3bf930dbb9d27204754acbf082816cdacaa00e77857ab9e4b673c331c6626aba7ef242cdb7e143b028 + languageName: node + linkType: hard + +"@smithy/util-stream@npm:^4.4.0": version: 4.4.0 resolution: "@smithy/util-stream@npm:4.4.0" dependencies: @@ -11683,7 +11958,16 @@ __metadata: languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.1.0, @smithy/util-uri-escape@npm:^4.2.0": +"@smithy/util-uri-escape@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-uri-escape@npm:4.1.0" + dependencies: + tslib: ^2.6.2 + checksum: 3ff56036ce93226b05e68d34c1691e51cdd82ac5f2ba635701ba76a36a2b384ce945bfe2d9c4992f7b500387a6fe1de4d5d0825cd7c73fa10165678d443d3acc + languageName: node + linkType: hard + +"@smithy/util-uri-escape@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-uri-escape@npm:4.2.0" dependencies: @@ -11712,7 +11996,17 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0, @smithy/util-utf8@npm:^4.2.0": +"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0": + version: 4.1.0 + resolution: "@smithy/util-utf8@npm:4.1.0" + dependencies: + "@smithy/util-buffer-from": ^4.1.0 + tslib: ^2.6.2 + checksum: 4331c056b005647701609c42609c3bf0848fdaa01134d891327820c32cfcf7410d8bce1c15d534e5c75af79ea4527c3ca33bccfc104e19a94475fbfe125ecb86 + languageName: node + linkType: hard + +"@smithy/util-utf8@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-utf8@npm:4.2.0" dependencies: From 39f7a9f7eb95cb82bdd8a6d1ffe1488b6e556af2 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 1 Oct 2025 11:07:34 -0400 Subject: [PATCH 23/51] Revert "fix: swap dynamoClients" This reverts commit 7529161fb0a876a094705c91325216870275446e. --- .../amplify-appsync-simulator/package.json | 1 - .../src/data-loader/dynamo-db/index.ts | 111 +++--- .../src/data-loader/dynamo-db/utils/index.ts | 5 +- yarn.lock | 361 ------------------ 4 files changed, 57 insertions(+), 421 deletions(-) diff --git a/packages/amplify-appsync-simulator/package.json b/packages/amplify-appsync-simulator/package.json index 352df4227f6..5409c4e8c5e 100644 --- a/packages/amplify-appsync-simulator/package.json +++ b/packages/amplify-appsync-simulator/package.json @@ -33,7 +33,6 @@ "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-prompts": "2.8.7", "@aws-sdk/client-dynamodb": "^3.624.0", - "@aws-sdk/lib-dynamodb": "^3.624.0", "@aws-sdk/util-dynamodb": "^3.624.0", "@graphql-tools/schema": "^8.3.1", "@graphql-tools/utils": "^8.5.1", diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 69e712210bf..cdddd6ba838 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -1,14 +1,19 @@ -import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { - DynamoDBDocumentClient, - GetCommand, - PutCommand, - UpdateCommand, - DeleteCommand, + AttributeValue, + DynamoDBClient, + GetItemCommand, + PutItemCommand, + UpdateItemCommand, + UpdateItemCommandInput, + DeleteItemCommand, QueryCommand, + QueryInput, ScanCommand, - UpdateCommandInput, -} from '@aws-sdk/lib-dynamodb'; + ScanCommandInput, + Select, + ReturnValue, +} from '@aws-sdk/client-dynamodb'; +import { unmarshall, marshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -25,7 +30,7 @@ type DynamoDBLoaderConfig = { options: object; }; export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { - private client: DynamoDBDocumentClient; + private client: DynamoDBClient; private tableName: string; constructor(private ddbConfig: DynamoDBLoaderConfig) { @@ -34,11 +39,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { throw new Error(`Invalid DynamoDBConfig ${JSON.stringify(ddbConfig, null, 4)}`); } this.tableName = tableName; - const ddbClient = new DynamoDBClient({ + this.client = new DynamoDBClient({ ...ddbConfig.config, ...ddbConfig.options, }); - this.client = DynamoDBDocumentClient.from(ddbClient); } async load(payload): Promise { @@ -82,10 +86,10 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { const items = await this.getAllItems(); for await (const item of items) { await this.client.send( - new DeleteCommand({ + new DeleteItemCommand({ TableName: this.tableName, Key: { id: item.id }, - ReturnValues: 'ALL_OLD', + ReturnValues: 'ALL_OLD' as ReturnValue, }), ); } @@ -95,7 +99,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return [this.tableName]; } // Gets all the records from the DynamoDB local table - private async getAllItems(): Promise> | null> { + private async getAllItems(): Promise> | null> { let items = []; let data = await this.client.send(new ScanCommand({ TableName: this.tableName })); items = [...items, ...data.Items]; @@ -114,14 +118,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async getItem(payload: any): Promise { const { consistentRead = false } = payload; const result = await this.client.send( - new GetCommand({ + new GetItemCommand({ TableName: this.tableName, - Key: payload.key, + Key: payload.key as Record, ConsistentRead: consistentRead, }), ); - return result.Item || null; + if (!result.Item) return null; + return unmarshall(result.Item); } private async putItem(payload): Promise { @@ -137,15 +142,15 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = payload; await this.client.send( - new PutCommand({ + new PutItemCommand({ TableName: this.tableName, Item: { ...key, ...attributeValues, - }, + } as Record, ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues, + ExpressionAttributeValues: expressionValues as Record, }), ); @@ -160,34 +165,29 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { TableName: this.tableName, KeyConditionExpression: keyCondition.expression, FilterExpression: filter.expression, - ExpressionAttributeValues: { - ...(filter.expressionValues || {}), - ...(keyCondition.expressionValues || {}), - }, - ExpressionAttributeNames: { - ...(filter.expressionNames || {}), - ...(keyCondition.expressionNames || {}), - }, + ExpressionAttributeValues: nullIfEmpty({ + ...(filter.expressionValues || undefined), + ...(keyCondition.expressionValues || undefined), + } as Record), + ExpressionAttributeNames: nullIfEmpty({ + ...(filter.expressionNames || undefined), + ...(keyCondition.expressionNames || undefined), + }), ExclusiveStartKey: nextToken, IndexName: index, Limit: limit, ConsistentRead: consistentRead, ScanIndexForward: scanIndexForward, - Select: select || 'ALL_ATTRIBUTES', + Select: select || ('ALL_ATTRIBUTES' as Select), }; - - // Remove empty objects - if (Object.keys(params.ExpressionAttributeValues).length === 0) delete params.ExpressionAttributeValues; - if (Object.keys(params.ExpressionAttributeNames).length === 0) delete params.ExpressionAttributeNames; - const { Items: items, ScannedCount: scannedCount, LastEvaluatedKey: resultNextToken = null, - } = await this.client.send(new QueryCommand(params)); + } = await this.client.send(new QueryCommand(params as QueryInput)); return { - items: items || [], + items: items.map((item) => unmarshall(item)), scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; @@ -196,24 +196,23 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async updateItem(payload) { const { key, update = {}, condition = {} } = payload; - const params: UpdateCommandInput = { + const params: UpdateItemCommandInput = { TableName: this.tableName, Key: key, UpdateExpression: update.expression, ConditionExpression: condition.expression, ReturnValues: 'ALL_NEW', - ExpressionAttributeNames: { + ExpressionAttributeNames: nullIfEmpty({ ...(condition.expressionNames || {}), ...(update.expressionNames || {}), - }, - ExpressionAttributeValues: { + } as Record), + ExpressionAttributeValues: nullIfEmpty({ ...(condition.expressionValues || {}), ...(update.expressionValues || {}), - }, + } as Record), }; - - const { Attributes: updated } = await this.client.send(new UpdateCommand(params)); - return updated; + const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); + return unmarshall(updated); } private async deleteItem(payload) { @@ -227,25 +226,25 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = {}, } = payload; const { Attributes: deleted } = await this.client.send( - new DeleteCommand({ + new DeleteItemCommand({ TableName: this.tableName, - Key: key, + Key: key as Record, ReturnValues: 'ALL_OLD', ConditionExpression: expression, ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues, + ExpressionAttributeValues: expressionValues as Record, }), ); - return deleted; + return unmarshall(deleted); } private async scan(payload) { const { filter, index, limit, consistentRead = false, nextToken, select, totalSegments, segment } = payload; - const params = { + const params: ScanCommandInput = { TableName: this.tableName, - ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : undefined, + ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -253,15 +252,17 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { Segment: segment, TotalSegments: totalSegments, }; - if (filter) { Object.assign(params, { FilterExpression: filter.expression, - ExpressionAttributeNames: filter.expressionNames, - ExpressionAttributeValues: filter.expressionValues, + ExpressionAttributeNames: nullIfEmpty({ + ...(filter.expressionNames || undefined), + }), + ExpressionAttributeValues: marshall({ + ...(filter.expressionValues || {}), + } as Record), }); } - const { Items: items, ScannedCount: scannedCount, @@ -269,7 +270,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = await this.client.send(new ScanCommand(params)); return { - items: items || [], + items: items.map((item) => unmarshall(item)), scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index d9ea83b86a5..a716c2dc576 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -9,10 +9,7 @@ export function marshall(obj: object) { if (!obj || Object.keys(obj).length === 0) { return undefined; } - return awsMarshall(obj, { - removeUndefinedValues: true, - convertEmptyValues: true, - }); + return awsMarshall(obj); } export function unmarshall(raw, isRaw = true) { diff --git a/yarn.lock b/yarn.lock index 2701f458671..add9ef83c0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,7 +109,6 @@ __metadata: "@aws-amplify/amplify-graphiql-explorer": 2.6.3 "@aws-amplify/amplify-prompts": 2.8.7 "@aws-sdk/client-dynamodb": ^3.624.0 - "@aws-sdk/lib-dynamodb": ^3.624.0 "@aws-sdk/util-dynamodb": ^3.624.0 "@graphql-tools/schema": ^8.3.1 "@graphql-tools/utils": ^8.5.1 @@ -4006,27 +4005,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/core@npm:3.899.0": - version: 3.899.0 - resolution: "@aws-sdk/core@npm:3.899.0" - dependencies: - "@aws-sdk/types": 3.893.0 - "@aws-sdk/xml-builder": 3.894.0 - "@smithy/core": ^3.13.0 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/property-provider": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/signature-v4": ^5.2.1 - "@smithy/smithy-client": ^4.6.5 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: 6a883a9db615bc19b15fac3e29757b3478cc03e6b29195639bae4d535d817c4029d00075ff6b4b42acd44c58b0183a8700c9abd12a9e72edcc7131c6b35458d5 - 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" @@ -4816,22 +4794,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/lib-dynamodb@npm:^3.624.0": - version: 3.899.0 - resolution: "@aws-sdk/lib-dynamodb@npm:3.899.0" - dependencies: - "@aws-sdk/core": 3.899.0 - "@aws-sdk/util-dynamodb": 3.899.0 - "@smithy/core": ^3.13.0 - "@smithy/smithy-client": ^4.6.5 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - peerDependencies: - "@aws-sdk/client-dynamodb": ^3.899.0 - checksum: 984e2913dcb32a01d0e1e83fe22d7aee7ca88f14814f8a72c5a61422ba2d867c354f4ac7f3f9f962343eb88a64e22801970017984b169e00e83b56a229b0cec9 - languageName: node - linkType: hard - "@aws-sdk/lib-storage@npm:^3.25.0": version: 3.624.0 resolution: "@aws-sdk/lib-storage@npm:3.624.0" @@ -5935,16 +5897,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.893.0": - version: 3.893.0 - resolution: "@aws-sdk/types@npm:3.893.0" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: d613fe5f8499a80ed5bb80c72e3f654782ef50d42461d9624875eb44db2daadd4b472f683b51f7497475f4c9028c9320014d973ec6880daf93615925643b0242 - 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" @@ -6136,17 +6088,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-dynamodb@npm:3.899.0": - version: 3.899.0 - resolution: "@aws-sdk/util-dynamodb@npm:3.899.0" - dependencies: - tslib: ^2.6.2 - peerDependencies: - "@aws-sdk/client-dynamodb": ^3.899.0 - checksum: 6343ed71ff64981d6ada9d873f1917ee69bae3c37ab3dbfd2d49c3c5fdc792f7bcccfa042c62cb7e7e480a150f15c8618e62f4b57a36c6b284697f75a65a22a2 - languageName: node - linkType: hard - "@aws-sdk/util-dynamodb@npm:^3.624.0": version: 3.891.0 resolution: "@aws-sdk/util-dynamodb@npm:3.891.0" @@ -6497,17 +6438,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/xml-builder@npm:3.894.0": - version: 3.894.0 - resolution: "@aws-sdk/xml-builder@npm:3.894.0" - dependencies: - "@smithy/types": ^4.5.0 - fast-xml-parser: 5.2.5 - tslib: ^2.6.2 - checksum: c3ca8ce529757c53bff57a617acb75b9e32a64eec3ad97a8f81d3c0da98902cff89ca10ec9f6fb84541b9f1ccb897aa75704bd7577f21c5b418cd07f256b7628 - languageName: node - linkType: hard - "@aws/lambda-invoke-store@npm:^0.0.1": version: 0.0.1 resolution: "@aws/lambda-invoke-store@npm:0.0.1" @@ -10595,16 +10525,6 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/abort-controller@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: de11e4491f3042f9d3738c0bfccdcbcfa01468a90ff745ec59a26c405772f590e675f3fa7e4cfcde9165891348bb31ee434290717e8aaa90e1c131668cdcf008 - 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" @@ -10704,24 +10624,6 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.13.0, @smithy/core@npm:^3.14.0": - version: 3.14.0 - resolution: "@smithy/core@npm:3.14.0" - dependencies: - "@smithy/middleware-serde": ^4.2.0 - "@smithy/protocol-http": ^5.3.0 - "@smithy/types": ^4.6.0 - "@smithy/util-base64": ^4.2.0 - "@smithy/util-body-length-browser": ^4.2.0 - "@smithy/util-middleware": ^4.2.0 - "@smithy/util-stream": ^4.4.0 - "@smithy/util-utf8": ^4.2.0 - "@smithy/uuid": ^1.1.0 - tslib: ^2.6.2 - checksum: 44cbc3bed4e33d8bafb367cb9205e4bb529de75f068a8f3805895874925bdb056b360e3dc11bccece5c3d2b0fcc902cfdaad8ea8ed0100be727252f7ec273228 - 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" @@ -10897,19 +10799,6 @@ __metadata: languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.3.0": - version: 5.3.0 - resolution: "@smithy/fetch-http-handler@npm:5.3.0" - dependencies: - "@smithy/protocol-http": ^5.3.0 - "@smithy/querystring-builder": ^4.2.0 - "@smithy/types": ^4.6.0 - "@smithy/util-base64": ^4.2.0 - tslib: ^2.6.2 - checksum: cd4a02981ab35510872ae6a2bf7dfbe485109ede3dd0b0bf56042fb6f4c896fcf555e580a525ef56cd7d1b68a1b53b66c8df4a593c9e5a21d0996d030fb10f82 - 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" @@ -11027,15 +10916,6 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/is-array-buffer@npm:4.2.0" - dependencies: - tslib: ^2.6.2 - checksum: 8e3e21cff5929d627bbf4a9beded28bd54555cfd37772226290964af6950cc10d700776a2ce7553f34ddf88a2e7e3d4681de58c94e9805592d901fc0f32cb597 - languageName: node - linkType: hard - "@smithy/md5-js@npm:^3.0.3": version: 3.0.8 resolution: "@smithy/md5-js@npm:3.0.8" @@ -11112,22 +10992,6 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.3.0": - version: 4.3.0 - resolution: "@smithy/middleware-endpoint@npm:4.3.0" - dependencies: - "@smithy/core": ^3.14.0 - "@smithy/middleware-serde": ^4.2.0 - "@smithy/node-config-provider": ^4.3.0 - "@smithy/shared-ini-file-loader": ^4.3.0 - "@smithy/types": ^4.6.0 - "@smithy/url-parser": ^4.2.0 - "@smithy/util-middleware": ^4.2.0 - tslib: ^2.6.2 - checksum: 81877411bb98888704066dc847428c070f53cfb591e2e689e1a8b894a0a3cd74562553955ae5527ca32e8cea7309cbe995ad20976247909704c93898047ebdad - languageName: node - linkType: hard - "@smithy/middleware-retry@npm:^3.0.14": version: 3.0.25 resolution: "@smithy/middleware-retry@npm:3.0.25" @@ -11184,17 +11048,6 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/middleware-serde@npm:4.2.0" - dependencies: - "@smithy/protocol-http": ^5.3.0 - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: f43d5b438aca7184c7bf43c3136ec90f14c8e3936a4624158cb27f160ae18fd8647a34c0e9f3d37e8c89e7c8711748dfe93ec388da8e0f227e01e0c5e669de30 - 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" @@ -11215,16 +11068,6 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/middleware-stack@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 37886fb6da8dfda4c09f2cca268214397de05009835095d773b463aa815670e9cdd8460c19bb7c6024dc0f1104baa0db3d0b9623ac30ceafd8b1a734054b53d7 - 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" @@ -11249,18 +11092,6 @@ __metadata: languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.3.0": - version: 4.3.0 - resolution: "@smithy/node-config-provider@npm:4.3.0" - dependencies: - "@smithy/property-provider": ^4.2.0 - "@smithy/shared-ini-file-loader": ^4.3.0 - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: e67e3b4d281947cd7bfe358a4a40349f52c4761ec4903c4392e27ee6816eb3b0ba3d1e9d1c196ff2f28ee3ae4701945d0dfd234203aa93bc30b46146070b7216 - 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" @@ -11287,19 +11118,6 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.3.0": - version: 4.3.0 - resolution: "@smithy/node-http-handler@npm:4.3.0" - dependencies: - "@smithy/abort-controller": ^4.2.0 - "@smithy/protocol-http": ^5.3.0 - "@smithy/querystring-builder": ^4.2.0 - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 30752ee8bd3d426847221417db3742e8e976615de8277e345af58899845e0e35438e4921056849f9d505a20af0f7512cb39276b68d0da5446d0b275f038bdeaf - 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" @@ -11320,16 +11138,6 @@ __metadata: languageName: node linkType: hard -"@smithy/property-provider@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/property-provider@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 8ea9ccc9d3e67895c7002a3f5ab2f3f8b3432213eff3e5b3e4d81845273903de706e6c46e815b39e00c2fc5bf76a341d99e396cb9dc0c9cdc5981a35c83991a1 - 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" @@ -11350,16 +11158,6 @@ __metadata: languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.3.0": - version: 5.3.0 - resolution: "@smithy/protocol-http@npm:5.3.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 718f1729c6b44a0d493ed4d815e9b6037fd50a87d9f7ac6070d53c083f11d1e460c6edc5997b2d8c8138559d15e2a79c1bd26534357c55c32bc5d2aaae625d3a - 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" @@ -11382,17 +11180,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-builder@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/querystring-builder@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - "@smithy/util-uri-escape": ^4.2.0 - tslib: ^2.6.2 - checksum: 01eb2e947130c1d88e67da65032e88911f6d2f4fa99f56555370fa765e63c629273e06537d5c5160f882b64abbf524168a8b510dc5de6ac2e161a53e914d7ef7 - languageName: node - linkType: hard - "@smithy/querystring-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-parser@npm:3.0.8" @@ -11413,16 +11200,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/querystring-parser@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 9d50446af317bd5231514151a8a00d808db985543a2c5aa755b5b3bf1c7ce0290a652dbebb577709d2a7fa51279ad162e5551e780e5b8360eeda4cd88beaa828 - 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" @@ -11461,16 +11238,6 @@ __metadata: languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.3.0": - version: 4.3.0 - resolution: "@smithy/shared-ini-file-loader@npm:4.3.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 73d39e470acea3b635532065987f4aab72b3af73840d3d92154429f4273f0d2d3269e852da2420dd6a7d2a2fc69c38cfd6a9802a4b67002b830e9babe53fde0d - languageName: node - linkType: hard - "@smithy/signature-v4@npm:^4.1.0": version: 4.2.1 resolution: "@smithy/signature-v4@npm:4.2.1" @@ -11533,21 +11300,6 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.6.5": - version: 4.7.0 - resolution: "@smithy/smithy-client@npm:4.7.0" - dependencies: - "@smithy/core": ^3.14.0 - "@smithy/middleware-endpoint": ^4.3.0 - "@smithy/middleware-stack": ^4.2.0 - "@smithy/protocol-http": ^5.3.0 - "@smithy/types": ^4.6.0 - "@smithy/util-stream": ^4.4.0 - tslib: ^2.6.2 - checksum: f94fa42a96a52fea0fdc6417477b65f7c31a63641d641d6f11e5679d9917cc40f0ff43cfbab8f9abbf5edfa31b5ffa25c354b70b2c71b4e5f04efccfe20c4063 - languageName: node - linkType: hard - "@smithy/types@npm:^3.3.0, @smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0, @smithy/types@npm:^3.7.2": version: 3.7.2 resolution: "@smithy/types@npm:3.7.2" @@ -11566,15 +11318,6 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^4.6.0": - version: 4.6.0 - resolution: "@smithy/types@npm:4.6.0" - dependencies: - tslib: ^2.6.2 - checksum: 7a791fa2ad4a4407875076088b6438a6d328af9675705e64fba046c1ca84dbbdd0b9e398f4c45f5c6bc20a8b312aec0e5e69dd9114c5f7bd0a01ef23a646c6cd - 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" @@ -11597,17 +11340,6 @@ __metadata: languageName: node linkType: hard -"@smithy/url-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/url-parser@npm:4.2.0" - dependencies: - "@smithy/querystring-parser": ^4.2.0 - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: 3e76168d2eb972e07a70cf9a4e1a45faf1915474bce399e3c1836dec9794b744e804f4c5bc0b0fd1f5f6582fbb08c716072225b5bbe7aab59d9b3a026b1a7a18 - languageName: node - linkType: hard - "@smithy/util-base64@npm:^3.0.0": version: 3.0.0 resolution: "@smithy/util-base64@npm:3.0.0" @@ -11630,17 +11362,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-base64@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-base64@npm:4.2.0" - dependencies: - "@smithy/util-buffer-from": ^4.2.0 - "@smithy/util-utf8": ^4.2.0 - tslib: ^2.6.2 - checksum: 6b11dd6c782a419a7a85b908e0311eab4f853ae9d60da5f2c2e42614f983858052a2075b71bd51ed15ec89a54b7d53f1e52e97e3a055a6e6de82d2cc1fd9aeb3 - 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" @@ -11659,15 +11380,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-body-length-browser@npm:4.2.0" - dependencies: - tslib: ^2.6.2 - checksum: 15553c249088d59406c6917c19ed19810c7dbcc0967c44e5f3fbb2cc870c004b35f388c082b77f370a2c440a69ec7e8336c7a066af904812a66944dd5cb4c8cc - 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" @@ -11716,16 +11428,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-buffer-from@npm:4.2.0" - dependencies: - "@smithy/is-array-buffer": ^4.2.0 - tslib: ^2.6.2 - checksum: 4842d5607240c11400db30762ef6cb4def8d13e3474c5a901a4e2a1783198f5b163ab6011cf24a7f0acbba9a4d7cc79db1d811dc8aa9da446448e52773223997 - 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" @@ -11840,15 +11542,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-hex-encoding@npm:4.2.0" - dependencies: - tslib: ^2.6.2 - checksum: aaa94a69f03d14d3f28125cc915ca421065735e2d05d7305f0958a50021b2fce4fc68a248328e6b5b612dbaa49e471d481ff513bf89554f659f0a49573e97312 - 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" @@ -11869,16 +11562,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-middleware@npm:4.2.0" - dependencies: - "@smithy/types": ^4.6.0 - tslib: ^2.6.2 - checksum: db64843017fed2fcda503af98b47f5c5d8e36d537ea24e5d12063a1865aa52f6ffb2ae0757c89f5734bcae2f5b3fa5e6a592eac9e8fb35f87dd84e644fd8396b - 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" @@ -11933,22 +11616,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^4.4.0": - version: 4.4.0 - resolution: "@smithy/util-stream@npm:4.4.0" - dependencies: - "@smithy/fetch-http-handler": ^5.3.0 - "@smithy/node-http-handler": ^4.3.0 - "@smithy/types": ^4.6.0 - "@smithy/util-base64": ^4.2.0 - "@smithy/util-buffer-from": ^4.2.0 - "@smithy/util-hex-encoding": ^4.2.0 - "@smithy/util-utf8": ^4.2.0 - tslib: ^2.6.2 - checksum: 6328011045d4d4ed8e2bc07a07559ad64a593971c886a6699bd590bbda1cbb65fe8413f8a08de66837fbf5a2d87c60f4a3885aa5b48a884f3f50d5aaefae4128 - 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" @@ -11967,15 +11634,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-uri-escape@npm:4.2.0" - dependencies: - tslib: ^2.6.2 - checksum: 1933e8d939dc52e1ee5e7d2397f4c208a9eac0283397a19ee72078d04db997ebe3ad39709b56aac586ffce10d1cf5ab17dfc068ea6ab030098fc06fe3532e085 - languageName: node - linkType: hard - "@smithy/util-utf8@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-utf8@npm:2.0.0" @@ -12006,16 +11664,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-utf8@npm:4.2.0" - dependencies: - "@smithy/util-buffer-from": ^4.2.0 - tslib: ^2.6.2 - checksum: 689a1f2295d52bec0dde7215a075d79ef32ad8b146cb610a529b2cab747d96978401fd31469c225e31f3042830c54403e64d39b28033df013c8de27a84b405a2 - languageName: node - linkType: hard - "@smithy/util-waiter@npm:^3.1.2": version: 3.1.7 resolution: "@smithy/util-waiter@npm:3.1.7" @@ -12038,15 +11686,6 @@ __metadata: languageName: node linkType: hard -"@smithy/uuid@npm:^1.1.0": - version: 1.1.0 - resolution: "@smithy/uuid@npm:1.1.0" - dependencies: - tslib: ^2.6.2 - checksum: f8a8bfcc0e241457636884e778e261d45d8a3aaad533775111170cac36ac666275b59ec6d86d3d5b8d470ff4b864202d2a1a188b3c0e0ed0c86a0b693acf1ecf - 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" From 21c94afbfcc75fdb40df89b92359adceedcf2dab Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 2 Oct 2025 09:30:42 -0400 Subject: [PATCH 24/51] chore: alter marshalling --- .../src/velocity/util/dynamodb-utils.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index 703fe21861d..00d025167f3 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -4,7 +4,10 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { - return marshall(toJSON(value)); + return marshall(toJSON(value), { + removeUndefinedValues: true, + convertEmptyValues: true, + }); }, $toSet(values, fn = (value) => value) { return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); From ce7cf357c7e460e9a493f38483f372d7586fb184 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 2 Oct 2025 14:26:09 -0400 Subject: [PATCH 25/51] chore: debugging --- .../src/data-loader/dynamo-db/index.ts | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index cdddd6ba838..32a9e29f744 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -12,6 +12,7 @@ import { ScanCommandInput, Select, ReturnValue, + PutItemCommandInput, } from '@aws-sdk/client-dynamodb'; import { unmarshall, marshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; @@ -141,18 +142,19 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = {}, } = payload; - await this.client.send( - new PutItemCommand({ - TableName: this.tableName, - Item: { - ...key, - ...attributeValues, - } as Record, - ConditionExpression: expression, - ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues as Record, - }), - ); + const params = { + TableName: this.tableName, + Item: { + ...key, + ...attributeValues, + } as Record, + ConditionExpression: expression, + ExpressionAttributeNames: expressionNames, + ExpressionAttributeValues: expressionValues as Record, + }; + console.log(params); + + await this.client.send(new PutItemCommand(params)); // put does not return us anything useful so we need to fetch the object. return this.getItem({ key, consistentRead: true }); From 994d0651bb88a9baf7776ded80b50ec01ce1b6c4 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 2 Oct 2025 15:17:07 -0400 Subject: [PATCH 26/51] chore: debugging --- .../src/velocity/util/dynamodb-utils.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index 00d025167f3..83a8a0b85d9 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -65,9 +65,15 @@ export const dynamodbUtils = { return JSON.stringify(this.toNull()); }, toList(value) { - return this.toDynamoDB(value); + console.log('Making a list...'); + console.log(value); + const output = this.toDynamoDB(value); + console.log(output); + return output; }, toListJson(value) { + console.log('Stringify my list...'); + console.log(value); return JSON.stringify(this.toList(value)); }, toMap(value) { From eee1aa18267a22b57745e0b6f197a917a73a3b0f Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 2 Oct 2025 15:42:17 -0400 Subject: [PATCH 27/51] chore: debugging --- .../src/velocity/util/dynamodb-utils.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index 83a8a0b85d9..d1f9fab30c6 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -10,7 +10,11 @@ export const dynamodbUtils = { }); }, $toSet(values, fn = (value) => value) { - return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); + console.log('Making...something...'); + console.log(values); + const output = this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); + console.log(output); + return output; }, toDynamoDBJson(value) { return JSON.stringify(this.toDynamoDB(value)); @@ -65,15 +69,9 @@ export const dynamodbUtils = { return JSON.stringify(this.toNull()); }, toList(value) { - console.log('Making a list...'); - console.log(value); - const output = this.toDynamoDB(value); - console.log(output); - return output; + return this.toDynamoDB(value); }, toListJson(value) { - console.log('Stringify my list...'); - console.log(value); return JSON.stringify(this.toList(value)); }, toMap(value) { From 323006e3d26643f626d7261726fd50c259bdf62e Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 09:16:10 -0400 Subject: [PATCH 28/51] chore: debugging --- .../src/velocity/util/dynamodb-utils.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index d1f9fab30c6..bea4ec94bc3 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -4,17 +4,15 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { + console.log('marshalling...'); + console.log(value); return marshall(toJSON(value), { removeUndefinedValues: true, convertEmptyValues: true, }); }, $toSet(values, fn = (value) => value) { - console.log('Making...something...'); - console.log(values); - const output = this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); - console.log(output); - return output; + return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); }, toDynamoDBJson(value) { return JSON.stringify(this.toDynamoDB(value)); From c14bb74a34c1ea8a20cee8bdcc12c669353ae0eb Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 09:39:54 -0400 Subject: [PATCH 29/51] chore: debugging... --- .../src/data-loader/dynamo-db/index.ts | 1 - .../src/velocity/util/dynamodb-utils.ts | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 32a9e29f744..918d277bf40 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -12,7 +12,6 @@ import { ScanCommandInput, Select, ReturnValue, - PutItemCommandInput, } from '@aws-sdk/client-dynamodb'; import { unmarshall, marshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index bea4ec94bc3..e9b9fb467b5 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -5,11 +5,13 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { console.log('marshalling...'); - console.log(value); - return marshall(toJSON(value), { + console.log(toJSON(value)); + const output = marshall(toJSON(value), { removeUndefinedValues: true, convertEmptyValues: true, }); + console.log(output); + return output; }, $toSet(values, fn = (value) => value) { return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); From 832e4f8999edac8a9f4485454e56614bbe1d1b27 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 10:17:26 -0400 Subject: [PATCH 30/51] fix: json values --- .../src/velocity/value-mapper/to-json.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts b/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts index 6a46d08cf58..a943176a8f6 100644 --- a/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts +++ b/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts @@ -2,5 +2,5 @@ export function toJSON(value) { if (typeof value === 'object' && value != null && 'toJSON' in value) { return value.toJSON(); } - return value; + return JSON.parse(JSON.stringify(value)); } From 312e8c9e4b798e48d0bd19c3affd05ee5fc6fb50 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 10:40:34 -0400 Subject: [PATCH 31/51] chore: debugging --- .../src/velocity/util/dynamodb-utils.ts | 4 ++-- .../src/velocity/value-mapper/to-json.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index e9b9fb467b5..d39d78cd71a 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -5,8 +5,8 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { console.log('marshalling...'); - console.log(toJSON(value)); - const output = marshall(toJSON(value), { + const input = Array.isArray(value) ? value : toJSON(value); + const output = marshall(input, { removeUndefinedValues: true, convertEmptyValues: true, }); diff --git a/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts b/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts index a943176a8f6..6a46d08cf58 100644 --- a/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts +++ b/packages/amplify-appsync-simulator/src/velocity/value-mapper/to-json.ts @@ -2,5 +2,5 @@ export function toJSON(value) { if (typeof value === 'object' && value != null && 'toJSON' in value) { return value.toJSON(); } - return JSON.parse(JSON.stringify(value)); + return value; } From 4d94f89d6b54c507debb8414ad85835461f56212 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 11:25:43 -0400 Subject: [PATCH 32/51] chore: trying something --- .../src/velocity/util/dynamodb-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index d39d78cd71a..a0d3ee75f77 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -5,7 +5,7 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { console.log('marshalling...'); - const input = Array.isArray(value) ? value : toJSON(value); + const input = Array.isArray({ value }) ? value : toJSON(value); const output = marshall(input, { removeUndefinedValues: true, convertEmptyValues: true, From bf84a44ad73f3295e44f8ab5ac3286fc6560d462 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 11:52:43 -0400 Subject: [PATCH 33/51] fix: special array handling --- .../src/velocity/util/dynamodb-utils.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index a0d3ee75f77..bcd2eb724a3 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -4,14 +4,13 @@ import { toJSON } from '../value-mapper/to-json'; export const dynamodbUtils = { toDynamoDB(value: any) { - console.log('marshalling...'); - const input = Array.isArray({ value }) ? value : toJSON(value); - const output = marshall(input, { + if (Array.isArray(value)) { + return { L: marshall(toJSON(value)) }; + } + return marshall(toJSON(value), { removeUndefinedValues: true, convertEmptyValues: true, }); - console.log(output); - return output; }, $toSet(values, fn = (value) => value) { return this.toDynamoDB(new Set([].concat(values).map((value) => fn(value)))); From ad2c6b4bea5246d7617ce06db6cfe3a3adc5d935 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 12:29:31 -0400 Subject: [PATCH 34/51] chore: debugging --- .../src/data-loader/dynamo-db/index.ts | 25 +++++++++---------- .../dynamo-db-model-transformer.e2e.test.ts | 1 + .../src/__e2e__/key-transformer.e2e.test.ts | 1 + .../model-auth-transformer.e2e.test.ts | 1 + 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 918d277bf40..cdddd6ba838 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -141,19 +141,18 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = {}, } = payload; - const params = { - TableName: this.tableName, - Item: { - ...key, - ...attributeValues, - } as Record, - ConditionExpression: expression, - ExpressionAttributeNames: expressionNames, - ExpressionAttributeValues: expressionValues as Record, - }; - console.log(params); - - await this.client.send(new PutItemCommand(params)); + await this.client.send( + new PutItemCommand({ + TableName: this.tableName, + Item: { + ...key, + ...attributeValues, + } as Record, + ConditionExpression: expression, + ExpressionAttributeNames: expressionNames, + ExpressionAttributeValues: expressionValues as Record, + }), + ); // put does not return us anything useful so we need to fetch the object. return this.getItem({ key, consistentRead: true }); diff --git a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts index f2e6f113903..0d81bb18b5d 100644 --- a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts @@ -12,6 +12,7 @@ let server; jest.setTimeout(2000000); beforeAll(async () => { + process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; const validSchema = ` type Post @model { diff --git a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts index d2e7e7294fd..dda7aa4e8fe 100644 --- a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts @@ -14,6 +14,7 @@ let dbPath = null; let server; beforeAll(async () => { + process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; const validSchema = ` type Order @model @key(fields: ["customerEmail", "createdAt"]) { customerEmail: String! diff --git a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts index c142d4b7bd8..9eaf2c7037d 100644 --- a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts @@ -45,6 +45,7 @@ const PARTICIPANT_GROUP_NAME = 'Participant'; const WATCHER_GROUP_NAME = 'Watcher'; beforeAll(async () => { + process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; // Create a stack for the post model with auth enabled. const validSchema = ` type Post @model @auth(rules: [{ allow: owner }]) { From 38af22e29221020cd95072c43475a400eb6a641c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 13:31:31 -0400 Subject: [PATCH 35/51] chore: debugging --- .../src/__e2e__/dynamo-db-model-transformer.e2e.test.ts | 7 +++++++ .../src/__e2e__/key-transformer.e2e.test.ts | 1 + .../src/__e2e__/model-auth-transformer.e2e.test.ts | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts index 0d81bb18b5d..f2e27c60bd6 100644 --- a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts @@ -153,6 +153,7 @@ test('Test createAuthor mutation', async () => { expect(response.data.createAuthor.entityMetadata.isActive).toEqual(true); } catch (e) { logDebug(e); + console.log(e); // fail expect(e).toBeUndefined(); } @@ -476,6 +477,7 @@ test('Test listPosts query with filter', async () => { } catch (e) { logDebug(e); // fail + console.log(e); expect(e).toBeUndefined(); } }); @@ -643,6 +645,7 @@ test('Test enum filters List', async () => { }); } catch (e) { logDebug(e); + console.log(e); // fail expect(e).toBeUndefined(); } @@ -687,6 +690,7 @@ test('Test createPost mutation with non-model types', async () => { }, }, ); + console.log(response); expect(response.data.createPost.id).toBeDefined(); expect(response.data.createPost.title).toEqual('Check that metadata exists'); expect(response.data.createPost.createdAt).toBeDefined(); @@ -697,6 +701,7 @@ test('Test createPost mutation with non-model types', async () => { expect(response.data.createPost.appearsIn).toEqual(['NEWHOPE']); } catch (e) { logDebug(e); + console.log(e); // fail expect(e).toBeUndefined(); } @@ -755,6 +760,7 @@ test('Test updatePost mutation with non-model types', async () => { }, }, ); + console.log(updateResponse); expect(updateResponse.data.updatePost.title).toEqual('Add some metadata'); expect(updateResponse.data.updatePost.metadata).toBeDefined(); expect(updateResponse.data.updatePost.metadata.tags.published).toEqual(true); @@ -762,6 +768,7 @@ test('Test updatePost mutation with non-model types', async () => { expect(updateResponse.data.updatePost.appearsIn).toEqual(['NEWHOPE', 'EMPIRE']); } catch (e) { logDebug(e); + console.log(e); // fail expect(e).toBeUndefined(); } diff --git a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts index dda7aa4e8fe..d859a210b70 100644 --- a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts @@ -117,6 +117,7 @@ test('Test next token with key', async () => { const items2 = await itemsByStatus(status, { beginsWith: '2019' }, 2, itemsNextToken); expect(items2.data).toBeDefined(); // get last two values + console.log(items); expect(items2.data.itemsByStatus.items).toHaveLength(2); expect(items2.data.itemsByStatus.items).toEqual( expect.arrayContaining([ diff --git a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts index 9eaf2c7037d..1adba052e4d 100644 --- a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts @@ -563,6 +563,7 @@ test('Test listPosts query when authorized', async () => { {}, ); logDebug(JSON.stringify(listResponse, null, 4)); + console.log(listResponse); expect(listResponse.data.listPosts.items.length).toEqual(1); const listResponseAccess = await GRAPHQL_CLIENT_1_ACCESS.query( @@ -815,6 +816,7 @@ test(`Test listSalaries w/ Admin group protection authorized`, async () => { } } `); + console.log(req2); expect(req2.data.listSalaries.items.length).toEqual(1); expect(req2.data.listSalaries.items[0].id).toEqual(req.data.createSalary.id); expect(req2.data.listSalaries.items[0].wage).toEqual(101); @@ -2387,6 +2389,8 @@ test(`Test createTestIdentity as admin.`, async () => { ); const relevantPost = listResponse.data.listTestIdentities.items.find((p) => p.id === getReq.data.getTestIdentity.id); logDebug(JSON.stringify(listResponse, null, 4)); + console.log(listResponse); + console.log(relevantPost); expect(relevantPost).toBeTruthy(); expect(relevantPost.title).toEqual('Test title update'); expect(relevantPost.owner.slice(0, 19)).toEqual('https://cognito-idp'); From 1ae2ebe77a6af2fc1ffff4113f4798491e0fd1f2 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 15:21:32 -0400 Subject: [PATCH 36/51] chore: debugging --- .../src/data-loader/dynamo-db/index.ts | 4 +- .../dynamo-db-model-transformer.e2e.test.ts | 408 +++++++++--------- 2 files changed, 206 insertions(+), 206 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index cdddd6ba838..9870b81e9da 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -187,7 +187,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = await this.client.send(new QueryCommand(params as QueryInput)); return { - items: items.map((item) => unmarshall(item)), + items: (items || []).map((item) => unmarshall(item)), scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; @@ -270,7 +270,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { } = await this.client.send(new ScanCommand(params)); return { - items: items.map((item) => unmarshall(item)), + items: (items || []).map((item) => unmarshall(item)), scannedCount, nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; diff --git a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts index f2e27c60bd6..c7b5bbb8756 100644 --- a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts @@ -126,9 +126,9 @@ afterEach(async () => { * Test queries below */ test('Test createAuthor mutation', async () => { - try { - const response = await GRAPHQL_CLIENT.query( - `mutation($input: CreateAuthorInput!) { + //try { + const response = await GRAPHQL_CLIENT.query( + `mutation($input: CreateAuthorInput!) { createAuthor(input: $input) { id name @@ -137,32 +137,32 @@ test('Test createAuthor mutation', async () => { } } }`, - { - input: { - name: 'Jeff B', - entityMetadata: { - isActive: true, - }, + { + input: { + name: 'Jeff B', + entityMetadata: { + isActive: true, }, }, - ); - logDebug(response); - expect(response.data.createAuthor.id).toBeDefined(); - expect(response.data.createAuthor.name).toEqual('Jeff B'); - expect(response.data.createAuthor.entityMetadata).toBeDefined(); - expect(response.data.createAuthor.entityMetadata.isActive).toEqual(true); - } catch (e) { - logDebug(e); - console.log(e); - // fail - expect(e).toBeUndefined(); - } + }, + ); + logDebug(response); + expect(response.data.createAuthor.id).toBeDefined(); + expect(response.data.createAuthor.name).toEqual('Jeff B'); + expect(response.data.createAuthor.entityMetadata).toBeDefined(); + expect(response.data.createAuthor.entityMetadata.isActive).toEqual(true); + // } catch (e) { + // logDebug(e); + // console.log(e); + // // fail + // expect(e).toBeUndefined(); + // } }); test('Test createPost mutation', async () => { - try { - const response = await GRAPHQL_CLIENT.query( - `mutation { + // try { + const response = await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Hello, World!" }) { id title @@ -170,17 +170,17 @@ test('Test createPost mutation', async () => { updatedAt } }`, - {}, - ); - expect(response.data.createPost.id).toBeDefined(); - expect(response.data.createPost.title).toEqual('Hello, World!'); - expect(response.data.createPost.createdAt).toBeDefined(); - expect(response.data.createPost.updatedAt).toBeDefined(); - } catch (e) { - logDebug(e); - // fail - expect(e).toBeUndefined(); - } + {}, + ); + expect(response.data.createPost.id).toBeDefined(); + expect(response.data.createPost.title).toEqual('Hello, World!'); + expect(response.data.createPost.createdAt).toBeDefined(); + expect(response.data.createPost.updatedAt).toBeDefined(); + // } catch (e) { + // logDebug(e); + // // fail + // expect(e).toBeUndefined(); + // } }); test('Test query on get query with null field', async () => { @@ -440,9 +440,9 @@ test('Test listPosts query', async () => { }); test('Test listPosts query with filter', async () => { - try { - const createResponse = await GRAPHQL_CLIENT.query( - `mutation { + // try { + const createResponse = await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Test List with filter" }) { id title @@ -450,12 +450,12 @@ test('Test listPosts query with filter', async () => { updatedAt } }`, - {}, - ); - expect(createResponse.data.createPost.id).toBeDefined(); - expect(createResponse.data.createPost.title).toEqual('Test List with filter'); - const listWithFilterResponse = await GRAPHQL_CLIENT.query( - `query { + {}, + ); + expect(createResponse.data.createPost.id).toBeDefined(); + expect(createResponse.data.createPost.title).toEqual('Test List with filter'); + const listWithFilterResponse = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { title: { contains: "List with filter" @@ -467,25 +467,25 @@ test('Test listPosts query with filter', async () => { } } }`, - {}, - ); - logDebug(JSON.stringify(listWithFilterResponse, null, 4)); - expect(listWithFilterResponse.data.listPosts.items).toBeDefined(); - const items = listWithFilterResponse.data.listPosts.items; - expect(items.length).toEqual(1); - expect(items[0].title).toEqual('Test List with filter'); - } catch (e) { - logDebug(e); - // fail - console.log(e); - expect(e).toBeUndefined(); - } + {}, + ); + logDebug(JSON.stringify(listWithFilterResponse, null, 4)); + expect(listWithFilterResponse.data.listPosts.items).toBeDefined(); + const items = listWithFilterResponse.data.listPosts.items; + expect(items.length).toEqual(1); + expect(items[0].title).toEqual('Test List with filter'); + // } catch (e) { + // logDebug(e); + // // fail + // console.log(e); + // expect(e).toBeUndefined(); + // } }); test('Test enum filters List', async () => { - try { - await GRAPHQL_CLIENT.query( - `mutation { + // try { + await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Appears in New Hope", appearsIn: [NEWHOPE], episode: NEWHOPE }) { id title @@ -493,10 +493,10 @@ test('Test enum filters List', async () => { updatedAt } }`, - {}, - ); - await GRAPHQL_CLIENT.query( - `mutation { + {}, + ); + await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Appears in Jedi", appearsIn: [JEDI], episode: JEDI }) { id title @@ -504,10 +504,10 @@ test('Test enum filters List', async () => { updatedAt } }`, - {}, - ); - await GRAPHQL_CLIENT.query( - `mutation { + {}, + ); + await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Appears in Empire", appearsIn: [EMPIRE], episode: EMPIRE }) { id title @@ -515,11 +515,11 @@ test('Test enum filters List', async () => { updatedAt } }`, - {}, - ); + {}, + ); - await GRAPHQL_CLIENT.query( - `mutation { + await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Appears in Empire & JEDI", appearsIn: [EMPIRE, JEDI] }) { id title @@ -527,12 +527,12 @@ test('Test enum filters List', async () => { updatedAt } }`, - {}, - ); + {}, + ); - // filter list of enums - const appearsInWithFilterResponseJedi = await GRAPHQL_CLIENT.query( - `query { + // filter list of enums + const appearsInWithFilterResponseJedi = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { appearsIn: {eq: [JEDI]}}) { items { title @@ -541,16 +541,16 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - expect(appearsInWithFilterResponseJedi.data.listPosts.items).toBeDefined(); - const items = appearsInWithFilterResponseJedi.data.listPosts.items; - logDebug(items); - expect(items.length).toEqual(1); - expect(items[0].title).toEqual('Appears in Jedi'); + {}, + ); + expect(appearsInWithFilterResponseJedi.data.listPosts.items).toBeDefined(); + const items = appearsInWithFilterResponseJedi.data.listPosts.items; + logDebug(items); + expect(items.length).toEqual(1); + expect(items[0].title).toEqual('Appears in Jedi'); - const appearsInWithFilterResponseNonJedi = await GRAPHQL_CLIENT.query( - `query { + const appearsInWithFilterResponseNonJedi = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { appearsIn: {ne: [JEDI]}}) { items { title @@ -559,18 +559,18 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - logDebug(JSON.stringify(appearsInWithFilterResponseNonJedi)); - expect(appearsInWithFilterResponseNonJedi.data.listPosts.items).toBeDefined(); - const appearsInNonJediItems = appearsInWithFilterResponseNonJedi.data.listPosts.items; - expect(appearsInNonJediItems.length).toEqual(3); - appearsInNonJediItems.forEach((item) => { - expect(['Appears in Empire & JEDI', 'Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); - }); + {}, + ); + logDebug(JSON.stringify(appearsInWithFilterResponseNonJedi)); + expect(appearsInWithFilterResponseNonJedi.data.listPosts.items).toBeDefined(); + const appearsInNonJediItems = appearsInWithFilterResponseNonJedi.data.listPosts.items; + expect(appearsInNonJediItems.length).toEqual(3); + appearsInNonJediItems.forEach((item) => { + expect(['Appears in Empire & JEDI', 'Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); + }); - const appearsInContainingJedi = await GRAPHQL_CLIENT.query( - `query { + const appearsInContainingJedi = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { appearsIn: {contains: JEDI }}) { items { title @@ -579,17 +579,17 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - expect(appearsInContainingJedi.data.listPosts.items).toBeDefined(); - const appearsInWithJediItems = appearsInContainingJedi.data.listPosts.items; - expect(appearsInWithJediItems.length).toEqual(2); - appearsInWithJediItems.forEach((item) => { - expect(['Appears in Empire & JEDI', 'Appears in Jedi'].includes(item.title)).toBeTruthy(); - }); + {}, + ); + expect(appearsInContainingJedi.data.listPosts.items).toBeDefined(); + const appearsInWithJediItems = appearsInContainingJedi.data.listPosts.items; + expect(appearsInWithJediItems.length).toEqual(2); + appearsInWithJediItems.forEach((item) => { + expect(['Appears in Empire & JEDI', 'Appears in Jedi'].includes(item.title)).toBeTruthy(); + }); - const appearsInNotContainingJedi = await GRAPHQL_CLIENT.query( - `query { + const appearsInNotContainingJedi = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { appearsIn: {notContains: JEDI }}) { items { title @@ -598,18 +598,18 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - expect(appearsInNotContainingJedi.data.listPosts.items).toBeDefined(); - const appearsInWithNonJediItems = appearsInNotContainingJedi.data.listPosts.items; - expect(appearsInWithNonJediItems.length).toEqual(2); - appearsInWithNonJediItems.forEach((item) => { - expect(['Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); - }); + {}, + ); + expect(appearsInNotContainingJedi.data.listPosts.items).toBeDefined(); + const appearsInWithNonJediItems = appearsInNotContainingJedi.data.listPosts.items; + expect(appearsInWithNonJediItems.length).toEqual(2); + appearsInWithNonJediItems.forEach((item) => { + expect(['Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); + }); - // enum filter - const jediEpisode = await GRAPHQL_CLIENT.query( - `query { + // enum filter + const jediEpisode = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { episode: {eq: JEDI }}) { items { title @@ -618,15 +618,15 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - expect(jediEpisode.data.listPosts.items).toBeDefined(); - const jediEpisodeItems = jediEpisode.data.listPosts.items; - expect(jediEpisodeItems.length).toEqual(1); - expect(jediEpisodeItems[0].title).toEqual('Appears in Jedi'); + {}, + ); + expect(jediEpisode.data.listPosts.items).toBeDefined(); + const jediEpisodeItems = jediEpisode.data.listPosts.items; + expect(jediEpisodeItems.length).toEqual(1); + expect(jediEpisodeItems[0].title).toEqual('Appears in Jedi'); - const nonJediEpisode = await GRAPHQL_CLIENT.query( - `query { + const nonJediEpisode = await GRAPHQL_CLIENT.query( + `query { listPosts(filter: { episode: {ne: JEDI }}) { items { title @@ -635,26 +635,26 @@ test('Test enum filters List', async () => { } } `, - {}, - ); - expect(nonJediEpisode.data.listPosts.items).toBeDefined(); - const nonJediEpisodeItems = nonJediEpisode.data.listPosts.items; - expect(nonJediEpisodeItems.length).toEqual(3); - nonJediEpisodeItems.forEach((item) => { - expect(['Appears in New Hope', 'Appears in Empire', 'Appears in Empire & JEDI'].includes(item.title)).toBeTruthy(); - }); - } catch (e) { - logDebug(e); - console.log(e); - // fail - expect(e).toBeUndefined(); - } + {}, + ); + expect(nonJediEpisode.data.listPosts.items).toBeDefined(); + const nonJediEpisodeItems = nonJediEpisode.data.listPosts.items; + expect(nonJediEpisodeItems.length).toEqual(3); + nonJediEpisodeItems.forEach((item) => { + expect(['Appears in New Hope', 'Appears in Empire', 'Appears in Empire & JEDI'].includes(item.title)).toBeTruthy(); + }); + // } catch (e) { + // logDebug(e); + // console.log(e); + // // fail + // expect(e).toBeUndefined(); + // } }); test('Test createPost mutation with non-model types', async () => { - try { - const response = await GRAPHQL_CLIENT.query( - `mutation CreatePost($input: CreatePostInput!) { + // try { + const response = await GRAPHQL_CLIENT.query( + `mutation CreatePost($input: CreatePostInput!) { createPost(input: $input) { id title @@ -673,44 +673,44 @@ test('Test createPost mutation with non-model types', async () => { appearsIn } }`, - { - input: { - title: 'Check that metadata exists', - metadata: { - tags: { - published: true, - metadata: { - tags: { - published: false, - }, + { + input: { + title: 'Check that metadata exists', + metadata: { + tags: { + published: true, + metadata: { + tags: { + published: false, }, }, }, - appearsIn: ['NEWHOPE'], }, + appearsIn: ['NEWHOPE'], }, - ); - console.log(response); - expect(response.data.createPost.id).toBeDefined(); - expect(response.data.createPost.title).toEqual('Check that metadata exists'); - expect(response.data.createPost.createdAt).toBeDefined(); - expect(response.data.createPost.updatedAt).toBeDefined(); - expect(response.data.createPost.metadata).toBeDefined(); - expect(response.data.createPost.metadata.tags.published).toEqual(true); - expect(response.data.createPost.metadata.tags.metadata.tags.published).toEqual(false); - expect(response.data.createPost.appearsIn).toEqual(['NEWHOPE']); - } catch (e) { - logDebug(e); - console.log(e); - // fail - expect(e).toBeUndefined(); - } + }, + ); + console.log(response); + expect(response.data.createPost.id).toBeDefined(); + expect(response.data.createPost.title).toEqual('Check that metadata exists'); + expect(response.data.createPost.createdAt).toBeDefined(); + expect(response.data.createPost.updatedAt).toBeDefined(); + expect(response.data.createPost.metadata).toBeDefined(); + expect(response.data.createPost.metadata.tags.published).toEqual(true); + expect(response.data.createPost.metadata.tags.metadata.tags.published).toEqual(false); + expect(response.data.createPost.appearsIn).toEqual(['NEWHOPE']); + // } catch (e) { + // logDebug(e); + // console.log(e); + // // fail + // expect(e).toBeUndefined(); + // } }); test('Test updatePost mutation with non-model types', async () => { - try { - const createResponse = await GRAPHQL_CLIENT.query( - `mutation { + // try { + const createResponse = await GRAPHQL_CLIENT.query( + `mutation { createPost(input: { title: "Test Update" }) { id title @@ -718,12 +718,12 @@ test('Test updatePost mutation with non-model types', async () => { updatedAt } }`, - {}, - ); - expect(createResponse.data.createPost.id).toBeDefined(); - expect(createResponse.data.createPost.title).toEqual('Test Update'); - const updateResponse = await GRAPHQL_CLIENT.query( - `mutation UpdatePost($input: UpdatePostInput!) { + {}, + ); + expect(createResponse.data.createPost.id).toBeDefined(); + expect(createResponse.data.createPost.title).toEqual('Test Update'); + const updateResponse = await GRAPHQL_CLIENT.query( + `mutation UpdatePost($input: UpdatePostInput!) { updatePost(input: $input) { id title @@ -742,34 +742,34 @@ test('Test updatePost mutation with non-model types', async () => { appearsIn } }`, - { - input: { - id: createResponse.data.createPost.id, - title: 'Add some metadata', - metadata: { - tags: { - published: true, - metadata: { - tags: { - published: false, - }, + { + input: { + id: createResponse.data.createPost.id, + title: 'Add some metadata', + metadata: { + tags: { + published: true, + metadata: { + tags: { + published: false, }, }, }, - appearsIn: ['NEWHOPE', 'EMPIRE'], }, + appearsIn: ['NEWHOPE', 'EMPIRE'], }, - ); - console.log(updateResponse); - expect(updateResponse.data.updatePost.title).toEqual('Add some metadata'); - expect(updateResponse.data.updatePost.metadata).toBeDefined(); - expect(updateResponse.data.updatePost.metadata.tags.published).toEqual(true); - expect(updateResponse.data.updatePost.metadata.tags.metadata.tags.published).toEqual(false); - expect(updateResponse.data.updatePost.appearsIn).toEqual(['NEWHOPE', 'EMPIRE']); - } catch (e) { - logDebug(e); - console.log(e); - // fail - expect(e).toBeUndefined(); - } + }, + ); + console.log(updateResponse); + expect(updateResponse.data.updatePost.title).toEqual('Add some metadata'); + expect(updateResponse.data.updatePost.metadata).toBeDefined(); + expect(updateResponse.data.updatePost.metadata.tags.published).toEqual(true); + expect(updateResponse.data.updatePost.metadata.tags.metadata.tags.published).toEqual(false); + expect(updateResponse.data.updatePost.appearsIn).toEqual(['NEWHOPE', 'EMPIRE']); + // } catch (e) { + // logDebug(e); + // console.log(e); + // // fail + // expect(e).toBeUndefined(); + // } }); From fa954b0cea14f5867c599e4c3ab118a4d67d846d Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Fri, 3 Oct 2025 16:26:17 -0400 Subject: [PATCH 37/51] fix: malformed nextToken --- .../src/data-loader/dynamo-db/index.ts | 2 +- .../amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 9870b81e9da..b03b96b8b56 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -173,7 +173,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(filter.expressionNames || undefined), ...(keyCondition.expressionNames || undefined), }), - ExclusiveStartKey: nextToken, + ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, diff --git a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts index d859a210b70..717d989b8c2 100644 --- a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts @@ -117,7 +117,7 @@ test('Test next token with key', async () => { const items2 = await itemsByStatus(status, { beginsWith: '2019' }, 2, itemsNextToken); expect(items2.data).toBeDefined(); // get last two values - console.log(items); + console.log(items2); expect(items2.data.itemsByStatus.items).toHaveLength(2); expect(items2.data.itemsByStatus.items).toEqual( expect.arrayContaining([ From 3b1ee9c9f94de1e9c171ca5b12aa8217a5a3ed2c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 09:29:07 -0400 Subject: [PATCH 38/51] chore: debugging --- .../src/data-loader/dynamo-db/index.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index b03b96b8b56..9a0d2d8ed9c 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -210,9 +210,20 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(condition.expressionValues || {}), ...(update.expressionValues || {}), } as Record), + ReturnValuesOnConditionCheckFailure: 'ALL_OLD', }; - const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); - return unmarshall(updated); + + console.log(params); + try { + const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); + return unmarshall(updated); + } catch (err) { + if (err.Item) { + console.log(err.Item); + } + throw err; + } + //return unmarshall(updated); } private async deleteItem(payload) { From 96978a14af448d70a29313eadb57bd9f84e805a2 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 11:26:37 -0400 Subject: [PATCH 39/51] chore: dedupe --- yarn.lock | 617 ++++-------------------------------------------------- 1 file changed, 39 insertions(+), 578 deletions(-) diff --git a/yarn.lock b/yarn.lock index b2066d2cda0..5d36975e7f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2680,7 +2680,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-dynamodb@npm:^3.515.0": +"@aws-sdk/client-dynamodb@npm:^3.515.0, @aws-sdk/client-dynamodb@npm:^3.624.0": version: 3.902.0 resolution: "@aws-sdk/client-dynamodb@npm:3.902.0" dependencies: @@ -2730,57 +2730,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-dynamodb@npm:^3.624.0": - version: 3.891.0 - resolution: "@aws-sdk/client-dynamodb@npm:3.891.0" - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.890.0 - "@aws-sdk/credential-provider-node": 3.891.0 - "@aws-sdk/middleware-endpoint-discovery": 3.891.0 - "@aws-sdk/middleware-host-header": 3.891.0 - "@aws-sdk/middleware-logger": 3.891.0 - "@aws-sdk/middleware-recursion-detection": 3.891.0 - "@aws-sdk/middleware-user-agent": 3.891.0 - "@aws-sdk/region-config-resolver": 3.890.0 - "@aws-sdk/types": 3.887.0 - "@aws-sdk/util-endpoints": 3.891.0 - "@aws-sdk/util-user-agent-browser": 3.887.0 - "@aws-sdk/util-user-agent-node": 3.891.0 - "@smithy/config-resolver": ^4.2.2 - "@smithy/core": ^3.11.0 - "@smithy/fetch-http-handler": ^5.2.1 - "@smithy/hash-node": ^4.1.1 - "@smithy/invalid-dependency": ^4.1.1 - "@smithy/middleware-content-length": ^4.1.1 - "@smithy/middleware-endpoint": ^4.2.2 - "@smithy/middleware-retry": ^4.2.3 - "@smithy/middleware-serde": ^4.1.1 - "@smithy/middleware-stack": ^4.1.1 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/node-http-handler": ^4.2.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/smithy-client": ^4.6.2 - "@smithy/types": ^4.5.0 - "@smithy/url-parser": ^4.1.1 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-body-length-browser": ^4.1.0 - "@smithy/util-body-length-node": ^4.1.0 - "@smithy/util-defaults-mode-browser": ^4.1.2 - "@smithy/util-defaults-mode-node": ^4.1.2 - "@smithy/util-endpoints": ^3.1.2 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-retry": ^4.1.2 - "@smithy/util-utf8": ^4.1.0 - "@smithy/util-waiter": ^4.1.1 - "@types/uuid": ^9.0.1 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 82af81dce0bd4ecbcacdb9072e166282c5d53cf79adeb6d79ee591d90b31ef68b463c11845e41cf88855f94f90074ee43cb849a196f586b215a4a845887856db - 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" @@ -5609,7 +5558,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.864.0, @aws-sdk/credential-provider-node@npm:^3.624.0": +"@aws-sdk/credential-provider-node@npm:3.864.0": version: 3.864.0 resolution: "@aws-sdk/credential-provider-node@npm:3.864.0" dependencies: @@ -5649,7 +5598,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.901.0": +"@aws-sdk/credential-provider-node@npm:3.901.0, @aws-sdk/credential-provider-node@npm:^3.624.0": version: 3.901.0 resolution: "@aws-sdk/credential-provider-node@npm:3.901.0" dependencies: @@ -6117,16 +6066,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/endpoint-cache@npm:3.873.0": - version: 3.873.0 - resolution: "@aws-sdk/endpoint-cache@npm:3.873.0" - dependencies: - mnemonist: 0.38.3 - tslib: ^2.6.2 - checksum: e3e860b0e99dadb51148ddfe6582225de01fdfebf4475a6180d80b4e82326fd7174c72ee9448eb96d6501696330605c4e0718cc470bdf401afd5a79da4d021c1 - languageName: node - linkType: hard - "@aws-sdk/endpoint-cache@npm:3.893.0": version: 3.893.0 resolution: "@aws-sdk/endpoint-cache@npm:3.893.0" @@ -6477,20 +6416,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-endpoint-discovery@npm:3.891.0": - version: 3.891.0 - resolution: "@aws-sdk/middleware-endpoint-discovery@npm:3.891.0" - dependencies: - "@aws-sdk/endpoint-cache": 3.873.0 - "@aws-sdk/types": 3.887.0 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 2bc3bd97fc4c50a7b1b18cdb7380872876dc13e254d6b8e79d2100a6e092db6e2b42364d434be39456809fdcfcd3b77f19ba188cc4e79d1c3f6325fdeea26d82 - languageName: node - linkType: hard - "@aws-sdk/middleware-endpoint-discovery@npm:3.901.0": version: 3.901.0 resolution: "@aws-sdk/middleware-endpoint-discovery@npm:3.901.0" @@ -8129,7 +8054,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.887.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": +"@aws-sdk/types@npm:3.887.0": version: 3.887.0 resolution: "@aws-sdk/types@npm:3.887.0" dependencies: @@ -8139,7 +8064,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.901.0": +"@aws-sdk/types@npm:3.901.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.901.0 resolution: "@aws-sdk/types@npm:3.901.0" dependencies: @@ -13012,16 +12937,6 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/abort-controller@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: f50ee8e76dab55df7af7247c5dac88209702b9e0a775a5d98472d67c607b6f624c3789ac75974c8b6fa452e1a4f9f72e5749dbea5b57f14d7ca137929e36f0ee - 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" @@ -13073,20 +12988,7 @@ __metadata: languageName: node linkType: hard -"@smithy/config-resolver@npm:^4.1.4, @smithy/config-resolver@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/config-resolver@npm:4.2.2" - dependencies: - "@smithy/node-config-provider": ^4.2.2 - "@smithy/types": ^4.5.0 - "@smithy/util-config-provider": ^4.1.0 - "@smithy/util-middleware": ^4.1.1 - tslib: ^2.6.2 - checksum: 3d53cd54424dfaa1e0249c0de987fc10b3c5d48b9807f5ac6d692483d1438210c9058251223f15931bfdacfdbfd4320b754abdaa6a9b1c7e3722b8584d4eb270 - languageName: node - linkType: hard - -"@smithy/config-resolver@npm:^4.1.5, @smithy/config-resolver@npm:^4.3.0": +"@smithy/config-resolver@npm:^4.1.4, @smithy/config-resolver@npm:^4.1.5, @smithy/config-resolver@npm:^4.2.2, @smithy/config-resolver@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/config-resolver@npm:4.3.0" dependencies: @@ -13115,26 +13017,7 @@ __metadata: languageName: node linkType: hard -"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.5.3": - version: 3.11.0 - resolution: "@smithy/core@npm:3.11.0" - dependencies: - "@smithy/middleware-serde": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-body-length-browser": ^4.1.0 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-stream": ^4.3.1 - "@smithy/util-utf8": ^4.1.0 - "@types/uuid": ^9.0.1 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 290d088cc7a14b38c96943577d6bfde1b0c47588493c0b18dfacc98affb02a3d067f9b57d71a838bd79b46c3a7a10458f445eada37934bf308c1e21ae02b4b7d - languageName: node - linkType: hard - -"@smithy/core@npm:^3.14.0, @smithy/core@npm:^3.7.0, @smithy/core@npm:^3.8.0": +"@smithy/core@npm:^3.11.0, @smithy/core@npm:^3.14.0, @smithy/core@npm:^3.5.3, @smithy/core@npm:^3.7.0, @smithy/core@npm:^3.8.0": version: 3.14.0 resolution: "@smithy/core@npm:3.14.0" dependencies: @@ -13165,20 +13048,7 @@ __metadata: languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^4.0.6, @smithy/credential-provider-imds@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/credential-provider-imds@npm:4.1.2" - dependencies: - "@smithy/node-config-provider": ^4.2.2 - "@smithy/property-provider": ^4.1.1 - "@smithy/types": ^4.5.0 - "@smithy/url-parser": ^4.1.1 - tslib: ^2.6.2 - checksum: c1ab5c17ee832edf2135eaf17c90f6fd34af2926bfd35c76312a10172cafbaf730b15d29384e3f3838e1c3b55df111539d4e07fdfc4d11b639f4622d4e067f6b - languageName: node - linkType: hard - -"@smithy/credential-provider-imds@npm:^4.0.7, @smithy/credential-provider-imds@npm:^4.2.0": +"@smithy/credential-provider-imds@npm:^4.0.6, @smithy/credential-provider-imds@npm:^4.0.7, @smithy/credential-provider-imds@npm:^4.1.2, @smithy/credential-provider-imds@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/credential-provider-imds@npm:4.2.0" dependencies: @@ -13327,20 +13197,7 @@ __metadata: languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.2.1": - version: 5.2.1 - resolution: "@smithy/fetch-http-handler@npm:5.2.1" - dependencies: - "@smithy/protocol-http": ^5.2.1 - "@smithy/querystring-builder": ^4.1.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - tslib: ^2.6.2 - checksum: c4a6a1a67f84361045bd10fef470ec6cda8691f549a455f734cfd3de05ccefc300973188e55578ae379b936f7e3f842971447386a3d8ec728f7df9c2f1c58fc2 - languageName: node - linkType: hard - -"@smithy/fetch-http-handler@npm:^5.1.0, @smithy/fetch-http-handler@npm:^5.1.1, @smithy/fetch-http-handler@npm:^5.3.0": +"@smithy/fetch-http-handler@npm:^5.0.4, @smithy/fetch-http-handler@npm:^5.1.0, @smithy/fetch-http-handler@npm:^5.1.1, @smithy/fetch-http-handler@npm:^5.2.1, @smithy/fetch-http-handler@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/fetch-http-handler@npm:5.3.0" dependencies: @@ -13389,19 +13246,7 @@ __metadata: languageName: node linkType: hard -"@smithy/hash-node@npm:^4.0.4, @smithy/hash-node@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/hash-node@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - "@smithy/util-buffer-from": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: aedf905c5fba7c814a697d973ea49c76d529dc9a10675676984a811637623b4f41542d72e53ed0df0a30881ee7fbe77c74bd49bd272e4a034e9d80021b6022a7 - languageName: node - linkType: hard - -"@smithy/hash-node@npm:^4.0.5, @smithy/hash-node@npm:^4.2.0": +"@smithy/hash-node@npm:^4.0.4, @smithy/hash-node@npm:^4.0.5, @smithy/hash-node@npm:^4.1.1, @smithy/hash-node@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/hash-node@npm:4.2.0" dependencies: @@ -13445,17 +13290,7 @@ __metadata: languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^4.0.4, @smithy/invalid-dependency@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/invalid-dependency@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 5700333f00b6a31a97b792fa9a00fadd07b2eafaea01087a6ea212753dba2621a040dfb0d7dc5a1f75bb95cc28fba2e498cdaca43009b142610944c0fcd95a58 - languageName: node - linkType: hard - -"@smithy/invalid-dependency@npm:^4.0.5, @smithy/invalid-dependency@npm:^4.2.0": +"@smithy/invalid-dependency@npm:^4.0.4, @smithy/invalid-dependency@npm:^4.0.5, @smithy/invalid-dependency@npm:^4.1.1, @smithy/invalid-dependency@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/invalid-dependency@npm:4.2.0" dependencies: @@ -13483,16 +13318,7 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/is-array-buffer@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: 399af810a9329c033d1816c492b17343d2ff956d32a358f327da6af0e4ad3c4640a1ef8dcd5f4d0f7d85ef19cf6909038f1a6539c938372dd33996d8f102bb9a - languageName: node - linkType: hard - -"@smithy/is-array-buffer@npm:^4.2.0": +"@smithy/is-array-buffer@npm:^4.0.0, @smithy/is-array-buffer@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/is-array-buffer@npm:4.2.0" dependencies: @@ -13534,18 +13360,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^4.0.4, @smithy/middleware-content-length@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/middleware-content-length@npm:4.1.1" - dependencies: - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: c841e9221f43303103076b3e2d0fb745b75f8caa0ec9cabb0be4fdb2c5a3fe4077391c083b6f8547ccdc58c44f267ee2423430e544bb95484d2b805e6008b8f3 - languageName: node - linkType: hard - -"@smithy/middleware-content-length@npm:^4.0.5, @smithy/middleware-content-length@npm:^4.2.0": +"@smithy/middleware-content-length@npm:^4.0.4, @smithy/middleware-content-length@npm:^4.0.5, @smithy/middleware-content-length@npm:^4.1.1, @smithy/middleware-content-length@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-content-length@npm:4.2.0" dependencies: @@ -13572,23 +13387,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/middleware-endpoint@npm:4.2.2" - dependencies: - "@smithy/core": ^3.11.0 - "@smithy/middleware-serde": ^4.1.1 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/shared-ini-file-loader": ^4.2.0 - "@smithy/types": ^4.5.0 - "@smithy/url-parser": ^4.1.1 - "@smithy/util-middleware": ^4.1.1 - tslib: ^2.6.2 - checksum: 1c720187426c10fff6eb750cd0148047cfb03c97dbfd2f0bfc4a1d9ada2bb1dc480627cfdeef04cb911d4b44545ccac3119ee7da25f22b05b07aad1c404d5ca4 - languageName: node - linkType: hard - -"@smithy/middleware-endpoint@npm:^4.1.14, @smithy/middleware-endpoint@npm:^4.1.15, @smithy/middleware-endpoint@npm:^4.1.18, @smithy/middleware-endpoint@npm:^4.3.0": +"@smithy/middleware-endpoint@npm:^4.1.11, @smithy/middleware-endpoint@npm:^4.1.14, @smithy/middleware-endpoint@npm:^4.1.15, @smithy/middleware-endpoint@npm:^4.1.18, @smithy/middleware-endpoint@npm:^4.2.2, @smithy/middleware-endpoint@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/middleware-endpoint@npm:4.3.0" dependencies: @@ -13621,25 +13420,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-retry@npm:^4.1.12, @smithy/middleware-retry@npm:^4.2.3": - version: 4.2.3 - resolution: "@smithy/middleware-retry@npm:4.2.3" - dependencies: - "@smithy/node-config-provider": ^4.2.2 - "@smithy/protocol-http": ^5.2.1 - "@smithy/service-error-classification": ^4.1.2 - "@smithy/smithy-client": ^4.6.2 - "@smithy/types": ^4.5.0 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-retry": ^4.1.2 - "@types/uuid": ^9.0.1 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: 90701134dc363a7ef6fc10279608e7e8592b56775a4d759f982e4c42692f644acb7ffe7345e2d3e7f10d6d6f8b2b0c6964e948ce137a9622ce08811cd1c1b852 - languageName: node - linkType: hard - -"@smithy/middleware-retry@npm:^4.1.15, @smithy/middleware-retry@npm:^4.1.16, @smithy/middleware-retry@npm:^4.1.19, @smithy/middleware-retry@npm:^4.4.0": +"@smithy/middleware-retry@npm:^4.1.12, @smithy/middleware-retry@npm:^4.1.15, @smithy/middleware-retry@npm:^4.1.16, @smithy/middleware-retry@npm:^4.1.19, @smithy/middleware-retry@npm:^4.2.3, @smithy/middleware-retry@npm:^4.4.0": version: 4.4.0 resolution: "@smithy/middleware-retry@npm:4.4.0" dependencies: @@ -13666,18 +13447,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/middleware-serde@npm:4.1.1" - dependencies: - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 69c0cf035da2ccbdf2838f50a1fafb0f8e6fb286b820e0aa91be7bdc6dd102f51ce3b295e68cdf9e7441dfc3160a3d3cabac99d98a8f0a75675ecf0f1e09d439 - languageName: node - linkType: hard - -"@smithy/middleware-serde@npm:^4.0.9, @smithy/middleware-serde@npm:^4.2.0": +"@smithy/middleware-serde@npm:^4.0.8, @smithy/middleware-serde@npm:^4.0.9, @smithy/middleware-serde@npm:^4.1.1, @smithy/middleware-serde@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-serde@npm:4.2.0" dependencies: @@ -13698,17 +13468,7 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/middleware-stack@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 8ee554c30e6802f6adcaf673e4d216cd8f56e13a9ef5d644ec94f0b553c3b62b451a8156fd49645cc1f5eedd09234a107edc42faff779416a4a43a215e370007 - languageName: node - linkType: hard - -"@smithy/middleware-stack@npm:^4.0.5, @smithy/middleware-stack@npm:^4.2.0": +"@smithy/middleware-stack@npm:^4.0.4, @smithy/middleware-stack@npm:^4.0.5, @smithy/middleware-stack@npm:^4.1.1, @smithy/middleware-stack@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/middleware-stack@npm:4.2.0" dependencies: @@ -13730,19 +13490,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/node-config-provider@npm:4.2.2" - dependencies: - "@smithy/property-provider": ^4.1.1 - "@smithy/shared-ini-file-loader": ^4.2.0 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 9170728f606f1e250236c1265bee9811e1062e3b929339eafc5a8d5229e9fbb4c94e1b8cdcd644b0a8c855370b649c85a0aca5b47d132ad505ce32ba8a51e230 - languageName: node - linkType: hard - -"@smithy/node-config-provider@npm:^4.1.4, @smithy/node-config-provider@npm:^4.3.0": +"@smithy/node-config-provider@npm:^4.1.3, @smithy/node-config-provider@npm:^4.1.4, @smithy/node-config-provider@npm:^4.2.2, @smithy/node-config-provider@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-config-provider@npm:4.3.0" dependencies: @@ -13767,20 +13515,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.2.1": - version: 4.2.1 - resolution: "@smithy/node-http-handler@npm:4.2.1" - dependencies: - "@smithy/abort-controller": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/querystring-builder": ^4.1.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 7536923c62b0bbbade8335b25368d02b4840cd381aba9dbdadb472fb501576d7b3b73121069356b022e9da3ec5d27711a00ec7786d31ba15089abdce582121cc - languageName: node - linkType: hard - -"@smithy/node-http-handler@npm:^4.1.0, @smithy/node-http-handler@npm:^4.1.1, @smithy/node-http-handler@npm:^4.3.0": +"@smithy/node-http-handler@npm:^4.0.6, @smithy/node-http-handler@npm:^4.1.0, @smithy/node-http-handler@npm:^4.1.1, @smithy/node-http-handler@npm:^4.2.1, @smithy/node-http-handler@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/node-http-handler@npm:4.3.0" dependencies: @@ -13803,17 +13538,7 @@ __metadata: languageName: node linkType: hard -"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/property-provider@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 5aa28b7e6cc23baf3605aa3be8a33ae4943635e698e0de773e8056f5ad06494f370f23cd3c4d083245d6fe411c25c38a76887d38a36d5daf075e36e6e6e3864f - languageName: node - linkType: hard - -"@smithy/property-provider@npm:^4.0.5, @smithy/property-provider@npm:^4.2.0": +"@smithy/property-provider@npm:^4.0.4, @smithy/property-provider@npm:^4.0.5, @smithy/property-provider@npm:^4.1.1, @smithy/property-provider@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/property-provider@npm:4.2.0" dependencies: @@ -13833,17 +13558,7 @@ __metadata: languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.2.1": - version: 5.2.1 - resolution: "@smithy/protocol-http@npm:5.2.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: b27df0a94f8e0bab1e8310da82c3048e6d397a3b52f8413c4f19bb9c13d11afcdf7424293cb8d8d3e867b07ff8c5f3c8d0fbdd7d07a8328a39721eb202336d2b - languageName: node - linkType: hard - -"@smithy/protocol-http@npm:^5.1.3, @smithy/protocol-http@npm:^5.3.0": +"@smithy/protocol-http@npm:^5.1.2, @smithy/protocol-http@npm:^5.1.3, @smithy/protocol-http@npm:^5.2.1, @smithy/protocol-http@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/protocol-http@npm:5.3.0" dependencies: @@ -13875,17 +13590,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-builder@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/querystring-builder@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - "@smithy/util-uri-escape": ^4.1.0 - tslib: ^2.6.2 - checksum: 15d41888eae29f57dbf9d2c8caa449d19ebb760b83958a0fe2cf4858948bb6e0466c176a207b868d8af7785e8f6688b87ada4e364ec6fd729ab6bffbd64b92d8 - languageName: node - linkType: hard - "@smithy/querystring-parser@npm:^3.0.8": version: 3.0.8 resolution: "@smithy/querystring-parser@npm:3.0.8" @@ -13896,16 +13600,6 @@ __metadata: languageName: node linkType: hard -"@smithy/querystring-parser@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/querystring-parser@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 6bf8672aca07826af16625b41f20332fdfdc39861124e026ee929e4652f638edc7107d347a2fe7feb0c2e6f2c98d149d2d383cecaab46a48a990f36333e8f016 - languageName: node - linkType: hard - "@smithy/querystring-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/querystring-parser@npm:4.2.0" @@ -13925,15 +13619,6 @@ __metadata: languageName: node linkType: hard -"@smithy/service-error-classification@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/service-error-classification@npm:4.1.2" - dependencies: - "@smithy/types": ^4.5.0 - checksum: f9c3d3d085491e9bc67c0bdb2fe51ba19ada826daf2b9bf7b335f1d37186eedcbf4c33927a1cc266bf8505c39672d4b26a0a133fe7924377866ba5ae4261a0c6 - languageName: node - linkType: hard - "@smithy/service-error-classification@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/service-error-classification@npm:4.2.0" @@ -13953,17 +13638,7 @@ __metadata: languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/shared-ini-file-loader@npm:4.2.0" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 36b0ee727a7c07c617db986ff34c55ffc5068074ccd01cf1650bbef299c909b72d3f3a703c42f45b31d4ebfe698ec32036eeb57c27a1281de000543bcfe1ac9f - languageName: node - linkType: hard - -"@smithy/shared-ini-file-loader@npm:^4.0.5, @smithy/shared-ini-file-loader@npm:^4.3.0": +"@smithy/shared-ini-file-loader@npm:^4.0.4, @smithy/shared-ini-file-loader@npm:^4.0.5, @smithy/shared-ini-file-loader@npm:^4.2.0, @smithy/shared-ini-file-loader@npm:^4.3.0": version: 4.3.0 resolution: "@smithy/shared-ini-file-loader@npm:4.3.0" dependencies: @@ -13989,23 +13664,7 @@ __metadata: languageName: node linkType: hard -"@smithy/signature-v4@npm:^5.1.2, @smithy/signature-v4@npm:^5.2.1": - version: 5.2.1 - resolution: "@smithy/signature-v4@npm:5.2.1" - dependencies: - "@smithy/is-array-buffer": ^4.1.0 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-hex-encoding": ^4.1.0 - "@smithy/util-middleware": ^4.1.1 - "@smithy/util-uri-escape": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: d00cb14155b89016493e90e19d3406f5362d7ec4205cd82a4fba47521f87d88b372e1ebfa34ceb739704f2f21d7a7bbf4da699773f71fab58028d515b932d014 - languageName: node - linkType: hard - -"@smithy/signature-v4@npm:^5.1.3, @smithy/signature-v4@npm:^5.3.0": +"@smithy/signature-v4@npm:^5.1.2, @smithy/signature-v4@npm:^5.1.3, @smithy/signature-v4@npm:^5.2.1, @smithy/signature-v4@npm:^5.3.0": version: 5.3.0 resolution: "@smithy/signature-v4@npm:5.3.0" dependencies: @@ -14036,7 +13695,7 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.10, @smithy/smithy-client@npm:^4.4.6, @smithy/smithy-client@npm:^4.4.7, @smithy/smithy-client@npm:^4.7.0": +"@smithy/smithy-client@npm:^4.4.10, @smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.4.6, @smithy/smithy-client@npm:^4.4.7, @smithy/smithy-client@npm:^4.6.2, @smithy/smithy-client@npm:^4.7.0": version: 4.7.0 resolution: "@smithy/smithy-client@npm:4.7.0" dependencies: @@ -14051,21 +13710,6 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.4.3, @smithy/smithy-client@npm:^4.6.2": - version: 4.6.2 - resolution: "@smithy/smithy-client@npm:4.6.2" - dependencies: - "@smithy/core": ^3.11.0 - "@smithy/middleware-endpoint": ^4.2.2 - "@smithy/middleware-stack": ^4.1.1 - "@smithy/protocol-http": ^5.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-stream": ^4.3.1 - tslib: ^2.6.2 - checksum: 69393eb48120b0d3a49f0a216504a9e3a8360cf20777bb44ba0dcfacc7f45c21883a3a7cded3c53d818fbf518afe513b0b25dbf7c8ed9ac4fca772f090d3155b - languageName: node - linkType: hard - "@smithy/types@npm:^3.3.0, @smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0, @smithy/types@npm:^3.7.2": version: 3.7.2 resolution: "@smithy/types@npm:3.7.2" @@ -14075,16 +13719,7 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.5.0": - version: 4.5.0 - resolution: "@smithy/types@npm:4.5.0" - dependencies: - tslib: ^2.6.2 - checksum: 7c765c9316893ab9e6575ba40e3d1569d43d7d1edd1110b505e190a4aa378a89e407b6f92de7bf0f22342ce05228ff0f1d37b14781e41c60c429fc22c8e5bae9 - languageName: node - linkType: hard - -"@smithy/types@npm:^4.3.2, @smithy/types@npm:^4.6.0": +"@smithy/types@npm:^4.3.1, @smithy/types@npm:^4.3.2, @smithy/types@npm:^4.5.0, @smithy/types@npm:^4.6.0": version: 4.6.0 resolution: "@smithy/types@npm:4.6.0" dependencies: @@ -14104,18 +13739,7 @@ __metadata: languageName: node linkType: hard -"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/url-parser@npm:4.1.1" - dependencies: - "@smithy/querystring-parser": ^4.1.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 1f9e19d5d1e1a4874cf2f61df014715dc3685be385356758d3aed1a6b020b074af22961b12ae651faad74ed0460a102156471543031e74c726770820ede6f31c - languageName: node - linkType: hard - -"@smithy/url-parser@npm:^4.0.5, @smithy/url-parser@npm:^4.2.0": +"@smithy/url-parser@npm:^4.0.4, @smithy/url-parser@npm:^4.0.5, @smithy/url-parser@npm:^4.1.1, @smithy/url-parser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/url-parser@npm:4.2.0" dependencies: @@ -14137,18 +13761,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-base64@npm:4.1.0" - dependencies: - "@smithy/util-buffer-from": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: e2275e4a09c245b8a0c1c6ead4418333d037f6cbc29a01881b56fb5676ad46839058bbdb3f9f357898c8000feccac9344ee66c9c36e17dd321bda84a93f2c36f - languageName: node - linkType: hard - -"@smithy/util-base64@npm:^4.2.0": +"@smithy/util-base64@npm:^4.0.0, @smithy/util-base64@npm:^4.1.0, @smithy/util-base64@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-base64@npm:4.2.0" dependencies: @@ -14168,16 +13781,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-body-length-browser@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: e86c39696dca4ce4b58e393fb85263e31ee046d88fdbd0bd1ee121f5101faca5fc945a7da17432aa39e86c178c80ac183568edb3b7df323f1134172dc36192c6 - languageName: node - linkType: hard - -"@smithy/util-body-length-browser@npm:^4.2.0": +"@smithy/util-body-length-browser@npm:^4.0.0, @smithy/util-body-length-browser@npm:^4.1.0, @smithy/util-body-length-browser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-body-length-browser@npm:4.2.0" dependencies: @@ -14195,16 +13799,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-node@npm:^4.0.0, @smithy/util-body-length-node@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-body-length-node@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: d31fb7be66eb481f865d046b48c07221d25108b07c783f05eff7f165369d2259ca01de7c369f9de95e37e989b1344521bc6d4a6b38b42a7a46375a0c97f38a0b - languageName: node - linkType: hard - -"@smithy/util-body-length-node@npm:^4.2.0": +"@smithy/util-body-length-node@npm:^4.0.0, @smithy/util-body-length-node@npm:^4.1.0, @smithy/util-body-length-node@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-body-length-node@npm:4.2.0" dependencies: @@ -14233,16 +13828,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-buffer-from@npm:4.1.0" - dependencies: - "@smithy/is-array-buffer": ^4.1.0 - tslib: ^2.6.2 - checksum: f19457df277e7125ffbf106c26c70ffbc550956afceede4e2c2eb13a32f6f304f9e3b7a37f4c717df3c5ce97f8b759ee59ceed0e3f649f236bbaf2bfe8f266ef - languageName: node - linkType: hard - "@smithy/util-buffer-from@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-buffer-from@npm:4.2.0" @@ -14262,16 +13847,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-config-provider@npm:^4.0.0, @smithy/util-config-provider@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-config-provider@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: 099add392d9f029dec36d3646af4a63145a13ed8014af11f507bffbdb113fc2bb2bfd71ee157e385320f4c8de4bd48557c98f40878f93022187d3fc3082e6713 - languageName: node - linkType: hard - -"@smithy/util-config-provider@npm:^4.2.0": +"@smithy/util-config-provider@npm:^4.0.0, @smithy/util-config-provider@npm:^4.1.0, @smithy/util-config-provider@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-config-provider@npm:4.2.0" dependencies: @@ -14293,20 +13869,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^4.0.19, @smithy/util-defaults-mode-browser@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/util-defaults-mode-browser@npm:4.1.2" - dependencies: - "@smithy/property-provider": ^4.1.1 - "@smithy/smithy-client": ^4.6.2 - "@smithy/types": ^4.5.0 - bowser: ^2.11.0 - tslib: ^2.6.2 - checksum: d93c24587d7555dac6d5e6e0aacf1493769b1ed2c5e9931bbd3a3e6f78ceae1d76852eb81577409cd4fbf774aa5c3df8dc1768e2a49a6089e57127f382fb6f8e - 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.26, @smithy/util-defaults-mode-browser@npm:^4.2.0": +"@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, @smithy/util-defaults-mode-browser@npm:^4.0.26, @smithy/util-defaults-mode-browser@npm:^4.1.2, @smithy/util-defaults-mode-browser@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-defaults-mode-browser@npm:4.2.0" dependencies: @@ -14334,22 +13897,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^4.0.19, @smithy/util-defaults-mode-node@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/util-defaults-mode-node@npm:4.1.2" - dependencies: - "@smithy/config-resolver": ^4.2.2 - "@smithy/credential-provider-imds": ^4.1.2 - "@smithy/node-config-provider": ^4.2.2 - "@smithy/property-provider": ^4.1.1 - "@smithy/smithy-client": ^4.6.2 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: ccff3039600e8bee569c54786efafad84653e8a8142326eb6ecd36fee7e01f41721d911e357857ecee2ac7acfc87ac33b1f0a164b8bb5f1ecbb6767131a09a2f - 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.26, @smithy/util-defaults-mode-node@npm:^4.2.0": +"@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, @smithy/util-defaults-mode-node@npm:^4.0.26, @smithy/util-defaults-mode-node@npm:^4.1.2, @smithy/util-defaults-mode-node@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-defaults-mode-node@npm:4.2.0" dependencies: @@ -14375,18 +13923,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-endpoints@npm:^3.0.6, @smithy/util-endpoints@npm:^3.1.2": - version: 3.1.2 - resolution: "@smithy/util-endpoints@npm:3.1.2" - dependencies: - "@smithy/node-config-provider": ^4.2.2 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 326511840868b2a1e337dd9bcc746d25c1efe8b9b9a7b15ff439a8e01978821bf6410eb8bf32037c781e48c8286f40e82cc77f8bcbaee3f2b3c242b8af3f52cc - languageName: node - linkType: hard - -"@smithy/util-endpoints@npm:^3.0.7, @smithy/util-endpoints@npm:^3.2.0": +"@smithy/util-endpoints@npm:^3.0.6, @smithy/util-endpoints@npm:^3.0.7, @smithy/util-endpoints@npm:^3.1.2, @smithy/util-endpoints@npm:^3.2.0": version: 3.2.0 resolution: "@smithy/util-endpoints@npm:3.2.0" dependencies: @@ -14406,16 +13943,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-hex-encoding@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: eefaa537612afd13e497353a1bd55f3d6f977cdc52360f91fcb3b83b68d6cdd9b9fc16ab82561375b509ed8d5735c47b263c4e64e96471d1662d4c7a8c88449d - languageName: node - linkType: hard - -"@smithy/util-hex-encoding@npm:^4.2.0": +"@smithy/util-hex-encoding@npm:^4.0.0, @smithy/util-hex-encoding@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-hex-encoding@npm:4.2.0" dependencies: @@ -14434,17 +13962,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/util-middleware@npm:4.1.1" - dependencies: - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 47bee56b2fbf9fbe3c4be4e1daac247fea889848d43120c64895529bb92ef43b25cf07213792d1646622356a1572b91cc48b0976c39667a9020edfa5ec58d093 - languageName: node - linkType: hard - -"@smithy/util-middleware@npm:^4.0.5, @smithy/util-middleware@npm:^4.2.0": +"@smithy/util-middleware@npm:^4.0.4, @smithy/util-middleware@npm:^4.0.5, @smithy/util-middleware@npm:^4.1.1, @smithy/util-middleware@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-middleware@npm:4.2.0" dependencies: @@ -14465,18 +13983,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-retry@npm:^4.0.5, @smithy/util-retry@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/util-retry@npm:4.1.2" - dependencies: - "@smithy/service-error-classification": ^4.1.2 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 7fe664301f67898fcb721d250487763e3e59462027fe7081e4d0126d5a2d2703b053e9bdd6ffc3926dd2e4e5ea4d78590e33d512e1cb195ff21981e43e1ec3e7 - languageName: node - linkType: hard - -"@smithy/util-retry@npm:^4.0.6, @smithy/util-retry@npm:^4.0.7, @smithy/util-retry@npm:^4.2.0": +"@smithy/util-retry@npm:^4.0.5, @smithy/util-retry@npm:^4.0.6, @smithy/util-retry@npm:^4.0.7, @smithy/util-retry@npm:^4.1.2, @smithy/util-retry@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-retry@npm:4.2.0" dependencies: @@ -14503,23 +14010,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.3.1": - version: 4.3.1 - resolution: "@smithy/util-stream@npm:4.3.1" - dependencies: - "@smithy/fetch-http-handler": ^5.2.1 - "@smithy/node-http-handler": ^4.2.1 - "@smithy/types": ^4.5.0 - "@smithy/util-base64": ^4.1.0 - "@smithy/util-buffer-from": ^4.1.0 - "@smithy/util-hex-encoding": ^4.1.0 - "@smithy/util-utf8": ^4.1.0 - tslib: ^2.6.2 - checksum: 7fd8fde8b011fe3535799d9a60195fe8e1229c6976b76d3bf930dbb9d27204754acbf082816cdacaa00e77857ab9e4b673c331c6626aba7ef242cdb7e143b028 - languageName: node - linkType: hard - -"@smithy/util-stream@npm:^4.2.3, @smithy/util-stream@npm:^4.2.4, @smithy/util-stream@npm:^4.4.0": +"@smithy/util-stream@npm:^4.2.2, @smithy/util-stream@npm:^4.2.3, @smithy/util-stream@npm:^4.2.4, @smithy/util-stream@npm:^4.3.1, @smithy/util-stream@npm:^4.4.0": version: 4.4.0 resolution: "@smithy/util-stream@npm:4.4.0" dependencies: @@ -14544,15 +14035,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-uri-escape@npm:4.1.0" - dependencies: - tslib: ^2.6.2 - checksum: 3ff56036ce93226b05e68d34c1691e51cdd82ac5f2ba635701ba76a36a2b384ce945bfe2d9c4992f7b500387a6fe1de4d5d0825cd7c73fa10165678d443d3acc - languageName: node - linkType: hard - "@smithy/util-uri-escape@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-uri-escape@npm:4.2.0" @@ -14582,17 +14064,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/util-utf8@npm:4.1.0" - dependencies: - "@smithy/util-buffer-from": ^4.1.0 - tslib: ^2.6.2 - checksum: 4331c056b005647701609c42609c3bf0848fdaa01134d891327820c32cfcf7410d8bce1c15d534e5c75af79ea4527c3ca33bccfc104e19a94475fbfe125ecb86 - languageName: node - linkType: hard - -"@smithy/util-utf8@npm:^4.2.0": +"@smithy/util-utf8@npm:^4.0.0, @smithy/util-utf8@npm:^4.1.0, @smithy/util-utf8@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-utf8@npm:4.2.0" dependencies: @@ -14613,7 +14085,7 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^4.0.6, @smithy/util-waiter@npm:^4.0.7, @smithy/util-waiter@npm:^4.2.0": +"@smithy/util-waiter@npm:^4.0.6, @smithy/util-waiter@npm:^4.0.7, @smithy/util-waiter@npm:^4.1.1, @smithy/util-waiter@npm:^4.2.0": version: 4.2.0 resolution: "@smithy/util-waiter@npm:4.2.0" dependencies: @@ -14624,17 +14096,6 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^4.1.1": - version: 4.1.1 - resolution: "@smithy/util-waiter@npm:4.1.1" - dependencies: - "@smithy/abort-controller": ^4.1.1 - "@smithy/types": ^4.5.0 - tslib: ^2.6.2 - checksum: 0ecdaa4b8a2036f753e0ad6c2a4f3c98b069b98f16525db9e8219aaceb189e78b46ebcd8829210874cc44a4693f9a83da9eb96315c2ed30f379065b821d6447c - languageName: node - linkType: hard - "@smithy/uuid@npm:^1.1.0": version: 1.1.0 resolution: "@smithy/uuid@npm:1.1.0" From e6900b4d2327083fc06e13188e1263e875e2d67c Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 12:19:33 -0400 Subject: [PATCH 40/51] fix: test isolation --- .../src/__e2e__/model-auth-transformer.e2e.test.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts index 1adba052e4d..1f8b4cadbd9 100644 --- a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts @@ -522,9 +522,10 @@ test('Test deletePost mutation when not authorized', async () => { }); test('Test listPosts query when authorized', async () => { + const uniqueTitle = `testing list ${Date.now()}`; const firstPost = await GRAPHQL_CLIENT_1.query( `mutation { - createPost(input: { title: "testing list" }) { + createPost(input: { title: "${uniqueTitle}" }) { id title createdAt @@ -535,13 +536,13 @@ test('Test listPosts query when authorized', async () => { {}, ); expect(firstPost.data.createPost.id).toBeDefined(); - expect(firstPost.data.createPost.title).toEqual('testing list'); + expect(firstPost.data.createPost.title).toEqual(uniqueTitle); expect(firstPost.data.createPost.createdAt).toBeDefined(); expect(firstPost.data.createPost.updatedAt).toBeDefined(); expect(firstPost.data.createPost.owner).toEqual(USERNAME1); await GRAPHQL_CLIENT_2.query( `mutation { - createPost(input: { title: "testing list" }) { + createPost(input: { title: "${uniqueTitle}" }) { id title createdAt @@ -554,7 +555,7 @@ test('Test listPosts query when authorized', async () => { // There are two posts but only 1 created by me. const listResponse = await GRAPHQL_CLIENT_1.query( `query { - listPosts(filter: { title: { eq: "testing list" } }, limit: 25) { + listPosts(filter: { title: { eq: "${uniqueTitle}" } }, limit: 25) { items { id } @@ -568,7 +569,7 @@ test('Test listPosts query when authorized', async () => { const listResponseAccess = await GRAPHQL_CLIENT_1_ACCESS.query( `query { - listPosts(filter: { title: { eq: "testing list" } }, limit: 25) { + listPosts(filter: { title: { eq: "${uniqueTitle}" } }, limit: 25) { items { id } From 1ac9289eaeedb950775900e4cc4b80dc8ebaca58 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 12:55:57 -0400 Subject: [PATCH 41/51] chore: revert test isolation --- .../src/__e2e__/model-auth-transformer.e2e.test.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts index 1f8b4cadbd9..1adba052e4d 100644 --- a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts @@ -522,10 +522,9 @@ test('Test deletePost mutation when not authorized', async () => { }); test('Test listPosts query when authorized', async () => { - const uniqueTitle = `testing list ${Date.now()}`; const firstPost = await GRAPHQL_CLIENT_1.query( `mutation { - createPost(input: { title: "${uniqueTitle}" }) { + createPost(input: { title: "testing list" }) { id title createdAt @@ -536,13 +535,13 @@ test('Test listPosts query when authorized', async () => { {}, ); expect(firstPost.data.createPost.id).toBeDefined(); - expect(firstPost.data.createPost.title).toEqual(uniqueTitle); + expect(firstPost.data.createPost.title).toEqual('testing list'); expect(firstPost.data.createPost.createdAt).toBeDefined(); expect(firstPost.data.createPost.updatedAt).toBeDefined(); expect(firstPost.data.createPost.owner).toEqual(USERNAME1); await GRAPHQL_CLIENT_2.query( `mutation { - createPost(input: { title: "${uniqueTitle}" }) { + createPost(input: { title: "testing list" }) { id title createdAt @@ -555,7 +554,7 @@ test('Test listPosts query when authorized', async () => { // There are two posts but only 1 created by me. const listResponse = await GRAPHQL_CLIENT_1.query( `query { - listPosts(filter: { title: { eq: "${uniqueTitle}" } }, limit: 25) { + listPosts(filter: { title: { eq: "testing list" } }, limit: 25) { items { id } @@ -569,7 +568,7 @@ test('Test listPosts query when authorized', async () => { const listResponseAccess = await GRAPHQL_CLIENT_1_ACCESS.query( `query { - listPosts(filter: { title: { eq: "${uniqueTitle}" } }, limit: 25) { + listPosts(filter: { title: { eq: "testing list" } }, limit: 25) { items { id } From f4928e651cd9d7116a529fe1955633a85c2a92c5 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 16:03:27 -0400 Subject: [PATCH 42/51] chore: remove non mock changes --- .../amplify-category-function/package.json | 1 + .../utils/updateTopLevelComment.ts | 13 +++--- packages/amplify-cli/package.json | 2 +- packages/amplify-cli/src/commands/logout.ts | 6 +-- .../package.json | 3 +- .../pullAndInit/amplifyConsoleOperations.ts | 45 ++++++++----------- .../package.json | 1 + 7 files changed, 33 insertions(+), 38 deletions(-) diff --git a/packages/amplify-category-function/package.json b/packages/amplify-category-function/package.json index 23d90fa6e66..039a0468dac 100644 --- a/packages/amplify-category-function/package.json +++ b/packages/amplify-category-function/package.json @@ -32,6 +32,7 @@ "@aws-amplify/amplify-prompts": "2.8.7", "@aws-sdk/client-ssm": "^3.624.0", "archiver": "^7.0.1", + "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "cloudform-types": "^4.2.0", "enquirer": "^2.3.6", diff --git a/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts b/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts index a264d674acd..feda8e3843f 100644 --- a/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts +++ b/packages/amplify-category-function/src/provider-utils/awscloudformation/utils/updateTopLevelComment.ts @@ -60,13 +60,14 @@ const secretsUsageFooter = `Parameters will be of the form { Name: 'secretName', const secretsUsageTemplate = (secretNames: string[]) => `${secretsUsageHeader} -const { SSMClient, GetParametersCommand } = require('@aws-sdk/client-ssm'); +const aws = require('aws-sdk'); -const client = new SSMClient(); -const { Parameters } = await client.send(new GetParametersCommand({ - Names: ${JSON.stringify(secretNames)}.map(secretName => process.env[secretName]), - WithDecryption: true, -})); +const { Parameters } = await (new aws.SSM()) + .getParameters({ + Names: ${JSON.stringify(secretNames)}.map(secretName => process.env[secretName]), + WithDecryption: true, + }) + .promise(); ${secretsUsageFooter}`; diff --git a/packages/amplify-cli/package.json b/packages/amplify-cli/package.json index c7c6b03295a..a0d44fe5527 100644 --- a/packages/amplify-cli/package.json +++ b/packages/amplify-cli/package.json @@ -67,7 +67,6 @@ "@aws-amplify/amplify-util-uibuilder": "1.14.20", "@aws-cdk/cloudformation-diff": "~2.68.0", "@aws-sdk/client-amplify": "^3.624.0", - "@aws-sdk/client-cognito-identity-provider": "^3.624.0", "amplify-codegen": "^4.10.3", "amplify-dotnet-function-runtime-provider": "2.1.5", "amplify-go-function-runtime-provider": "2.3.52", @@ -76,6 +75,7 @@ "amplify-nodejs-function-runtime-provider": "2.5.30", "amplify-python-function-runtime-provider": "2.4.52", "aws-cdk-lib": "~2.189.1", + "aws-sdk": "^2.1464.0", "chalk": "^4.1.1", "ci-info": "^3.8.0", "cli-table3": "^0.6.0", diff --git a/packages/amplify-cli/src/commands/logout.ts b/packages/amplify-cli/src/commands/logout.ts index c33ad1011a1..3b8f41fdcdd 100644 --- a/packages/amplify-cli/src/commands/logout.ts +++ b/packages/amplify-cli/src/commands/logout.ts @@ -1,7 +1,7 @@ import { stateManager } from '@aws-amplify/amplify-cli-core'; import { printer, prompter } from '@aws-amplify/amplify-prompts'; import { Context } from '../domain/context'; -import { CognitoIdentityProviderClient, GlobalSignOutCommand } from '@aws-sdk/client-cognito-identity-provider'; +import { CognitoIdentityServiceProvider } from 'aws-sdk'; export const run = async (context: Context) => { const { appId } = context.parameters.options; @@ -20,9 +20,9 @@ export const run = async (context: Context) => { const useGlobalSignOut = await prompter.yesOrNo('Do you want to logout from all sessions?'); if (useGlobalSignOut) { - const cognitoISP = new CognitoIdentityProviderClient({ region: amplifyAdminConfig.region }); + const cognitoISP = new CognitoIdentityServiceProvider({ region: amplifyAdminConfig.region }); try { - await cognitoISP.send(new GlobalSignOutCommand({ AccessToken: amplifyAdminConfig.accessToken.jwtToken })); + await cognitoISP.globalSignOut(amplifyAdminConfig.accessToken.jwtToken); printer.info('Logged out globally.'); } catch (e) { printer.error(`An error occurred during logout: ${e.message}`); diff --git a/packages/amplify-console-integration-tests/package.json b/packages/amplify-console-integration-tests/package.json index 500aed47454..2fc59d70c22 100644 --- a/packages/amplify-console-integration-tests/package.json +++ b/packages/amplify-console-integration-tests/package.json @@ -23,9 +23,8 @@ "dependencies": { "@aws-amplify/amplify-cli-core": "4.4.2", "@aws-amplify/amplify-e2e-core": "5.7.5", - "@aws-sdk/client-amplify": "^3.624.0", - "@aws-sdk/client-cloudformation": "^3.624.0", "@types/ini": "^1.3.30", + "aws-sdk": "^2.1464.0", "dotenv": "^8.2.0", "execa": "^5.1.1", "fs-extra": "^8.1.0", diff --git a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts index 44fdf215194..055a48a795e 100644 --- a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts +++ b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts @@ -1,27 +1,20 @@ -import { - AmplifyClient, - ListAppsCommand, - DeleteAppCommand, - CreateAppCommand, - CreateBackendEnvironmentCommand, -} from '@aws-sdk/client-amplify'; -import { CloudFormationClient, DeleteStackCommand } from '@aws-sdk/client-cloudformation'; +import { Amplify, CloudFormation } from 'aws-sdk'; import moment from 'moment'; import { getConfigFromProfile } from '../profile-helper'; export function getConfiguredAmplifyClient() { const config = getConfigFromProfile(); - return new AmplifyClient(config); + return new Amplify(config); } export function getConfiguredCFNClient() { const config = getConfigFromProfile(); - return new CloudFormationClient(config); + return new CloudFormation(config); } //delete all existing amplify console projects -export async function deleteAllAmplifyProjects(amplifyClient?: AmplifyClient) { +export async function deleteAllAmplifyProjects(amplifyClient?: Amplify) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -31,29 +24,29 @@ export async function deleteAllAmplifyProjects(amplifyClient?: AmplifyClient) { } while (token); } -export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFormationClient) { +export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFormation) { if (!cfnClient) cfnClient = getConfiguredCFNClient(); try { - await cfnClient.send(new DeleteStackCommand({ StackName: stackName })); + await cfnClient.deleteStack({ StackName: stackName }).promise(); } catch (err) { // do nothing } } -async function PaginatedDeleteProjects(amplifyClient: AmplifyClient, token?: string) { +async function PaginatedDeleteProjects(amplifyClient: Amplify, token?: string) { const sequential = require('promise-sequential'); - const maxResults = 25; - const listAppsResult = await amplifyClient.send( - new ListAppsCommand({ + const maxResults = '25'; + const listAppsResult = await amplifyClient + .listApps({ maxResults, nextToken: token, - }), - ); + }) + .promise(); const deleteTasks = []; listAppsResult.apps.forEach((app) => { deleteTasks.push(async () => { - await amplifyClient.send(new DeleteAppCommand({ appId: app.appId })); + await amplifyClient.deleteApp({ appId: app.appId }).promise(); }); }); await sequential(deleteTasks); @@ -68,7 +61,7 @@ export function generateBackendEnvParams(appId: string, projectName: string, env return { appId, envName, stackName, deploymentBucketName }; } -export async function createConsoleApp(projectName: string, amplifyClient?: AmplifyClient) { +export async function createConsoleApp(projectName: string, amplifyClient?: Amplify) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -77,11 +70,11 @@ export async function createConsoleApp(projectName: string, amplifyClient?: Ampl environmentVariables: { _LIVE_PACKAGE_UPDATES: '[{"pkg":"@aws-amplify/cli","type":"npm","version":"latest"}]' }, }; - const createAppResponse = await amplifyClient.send(new CreateAppCommand(createAppParams)); + const createAppResponse = await amplifyClient.createApp(createAppParams).promise(); return createAppResponse.app.appId; } -export async function deleteConsoleApp(appId: string, amplifyClient?: AmplifyClient) { +export async function deleteConsoleApp(appId: string, amplifyClient?: Amplify) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -89,13 +82,13 @@ export async function deleteConsoleApp(appId: string, amplifyClient?: AmplifyCli appId, }; try { - await amplifyClient.send(new DeleteAppCommand(deleteAppParams)); + await amplifyClient.deleteApp(deleteAppParams).promise(); } catch (err) { // Do nothing } } -export async function createBackendEnvironment(backendParams: any, amplifyClient?: AmplifyClient) { +export async function createBackendEnvironment(backendParams: any, amplifyClient?: Amplify) { if (!amplifyClient) { amplifyClient = getConfiguredAmplifyClient(); } @@ -109,5 +102,5 @@ export async function createBackendEnvironment(backendParams: any, amplifyClient deploymentArtifacts: deploymentBucketName, }; - await amplifyClient.send(new CreateBackendEnvironmentCommand(createEnvParams)); + await amplifyClient.createBackendEnvironment(createEnvParams).promise(); } diff --git a/packages/amplify-environment-parameters/package.json b/packages/amplify-environment-parameters/package.json index 25ca81b43fd..dc883b6c7e4 100644 --- a/packages/amplify-environment-parameters/package.json +++ b/packages/amplify-environment-parameters/package.json @@ -32,6 +32,7 @@ "lodash": "^4.17.21" }, "devDependencies": { + "aws-sdk": "^2.1464.0", "mkdirp": "^1.0.4", "ts-json-schema-generator": "~1.1.2" }, From c1b9b4ae3062016cb86ec0b52044decbca891d45 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Mon, 6 Oct 2025 16:10:16 -0400 Subject: [PATCH 43/51] chore: number --- .../src/pullAndInit/amplifyConsoleOperations.ts | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts index 055a48a795e..8e9354ac636 100644 --- a/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts +++ b/packages/amplify-console-integration-tests/src/pullAndInit/amplifyConsoleOperations.ts @@ -35,7 +35,7 @@ export async function deleteAmplifyStack(stackName: string, cfnClient?: CloudFor async function PaginatedDeleteProjects(amplifyClient: Amplify, token?: string) { const sequential = require('promise-sequential'); - const maxResults = '25'; + const maxResults = 25; const listAppsResult = await amplifyClient .listApps({ maxResults, diff --git a/yarn.lock b/yarn.lock index 5d36975e7f8..b73728273aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -274,6 +274,7 @@ __metadata: "@aws-sdk/client-ssm": ^3.624.0 "@types/folder-hash": ^4.0.1 archiver: ^7.0.1 + aws-sdk: ^2.1464.0 chalk: ^4.1.1 cloudform-types: ^4.2.0 enquirer: ^2.3.6 @@ -493,9 +494,8 @@ __metadata: dependencies: "@aws-amplify/amplify-cli-core": 4.4.2 "@aws-amplify/amplify-e2e-core": 5.7.5 - "@aws-sdk/client-amplify": ^3.624.0 - "@aws-sdk/client-cloudformation": ^3.624.0 "@types/ini": ^1.3.30 + aws-sdk: ^2.1464.0 dotenv: ^8.2.0 execa: ^5.1.1 fs-extra: ^8.1.0 @@ -573,6 +573,7 @@ __metadata: dependencies: "@aws-amplify/amplify-cli-core": 4.4.2 ajv: ^6.12.6 + aws-sdk: ^2.1464.0 lodash: ^4.17.21 mkdirp: ^1.0.4 ts-json-schema-generator: ~1.1.2 @@ -1151,7 +1152,6 @@ __metadata: "@aws-amplify/amplify-util-uibuilder": 1.14.20 "@aws-cdk/cloudformation-diff": ~2.68.0 "@aws-sdk/client-amplify": ^3.624.0 - "@aws-sdk/client-cognito-identity-provider": ^3.624.0 "@types/archiver": ^5.3.1 "@types/columnify": ^1.5.1 "@types/folder-hash": ^4.0.1 @@ -1174,6 +1174,7 @@ __metadata: amplify-nodejs-function-runtime-provider: 2.5.30 amplify-python-function-runtime-provider: 2.4.52 aws-cdk-lib: ~2.189.1 + aws-sdk: ^2.1464.0 chalk: ^4.1.1 ci-info: ^3.8.0 cli-table3: ^0.6.0 From a50f79dbe5af0d79daf11981fe239dabbafb9270 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Tue, 7 Oct 2025 12:48:58 -0400 Subject: [PATCH 44/51] fix: unmarshalling --- .../src/data-loader/dynamo-db/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 9a0d2d8ed9c..a86c669a75a 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -189,7 +189,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return { items: (items || []).map((item) => unmarshall(item)), scannedCount, - nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, + nextToken: resultNextToken ? unmarshall(Buffer.from(JSON.stringify(resultNextToken)).toString('base64')) : null, }; } @@ -283,7 +283,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return { items: (items || []).map((item) => unmarshall(item)), scannedCount, - nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, + nextToken: resultNextToken ? unmarshall(Buffer.from(JSON.stringify(resultNextToken)).toString('base64')) : null, }; } } From c562ba52d6f02fb169abba1bede4ded1b549f837 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Tue, 7 Oct 2025 16:50:15 -0400 Subject: [PATCH 45/51] fix: tests --- .../src/data-loader/dynamo-db/index.ts | 30 ++++++++----------- .../src/__tests__/function_7.test.ts | 1 - .../src/__e2e__/key-transformer.e2e.test.ts | 2 -- .../model-auth-transformer.e2e.test.ts | 5 ---- 4 files changed, 13 insertions(+), 25 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index a86c669a75a..98279149ba2 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -173,7 +173,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ...(filter.expressionNames || undefined), ...(keyCondition.expressionNames || undefined), }), - ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, + ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -189,7 +189,7 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { return { items: (items || []).map((item) => unmarshall(item)), scannedCount, - nextToken: resultNextToken ? unmarshall(Buffer.from(JSON.stringify(resultNextToken)).toString('base64')) : null, + nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; } @@ -213,17 +213,8 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ReturnValuesOnConditionCheckFailure: 'ALL_OLD', }; - console.log(params); - try { - const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); - return unmarshall(updated); - } catch (err) { - if (err.Item) { - console.log(err.Item); - } - throw err; - } - //return unmarshall(updated); + const { Attributes: updated } = await this.client.send(new UpdateItemCommand(params)); + return unmarshall(updated); } private async deleteItem(payload) { @@ -253,9 +244,11 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async scan(payload) { const { filter, index, limit, consistentRead = false, nextToken, select, totalSegments, segment } = payload; + console.log('SCAN PAYLOAD:', JSON.stringify(payload, null, 2)); + const params: ScanCommandInput = { TableName: this.tableName, - ExclusiveStartKey: nextToken ? marshall(JSON.parse(Buffer.from(nextToken, 'base64').toString())) : null, + ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : null, IndexName: index, Limit: limit, ConsistentRead: consistentRead, @@ -269,9 +262,9 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { ExpressionAttributeNames: nullIfEmpty({ ...(filter.expressionNames || undefined), }), - ExpressionAttributeValues: marshall({ + ExpressionAttributeValues: { ...(filter.expressionValues || {}), - } as Record), + }, }); } const { @@ -280,10 +273,13 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { LastEvaluatedKey: resultNextToken = null, } = await this.client.send(new ScanCommand(params)); + console.log('SCAN PARAMS:', JSON.stringify(params, null, 2)); + console.log('SCAN RESULT ITEMS:', items?.length || 0); + return { items: (items || []).map((item) => unmarshall(item)), scannedCount, - nextToken: resultNextToken ? unmarshall(Buffer.from(JSON.stringify(resultNextToken)).toString('base64')) : null, + nextToken: resultNextToken ? Buffer.from(JSON.stringify(resultNextToken)).toString('base64') : null, }; } } diff --git a/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts b/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts index 8f65896eea6..52b9154eeab 100644 --- a/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/function_7.test.ts @@ -22,7 +22,6 @@ describe('function secret value', () => { let projRoot: string; beforeEach(async () => { - process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; projRoot = await createNewProjectDir('funcsecrets'); }); diff --git a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts index 717d989b8c2..d2e7e7294fd 100644 --- a/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/key-transformer.e2e.test.ts @@ -14,7 +14,6 @@ let dbPath = null; let server; beforeAll(async () => { - process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; const validSchema = ` type Order @model @key(fields: ["customerEmail", "createdAt"]) { customerEmail: String! @@ -117,7 +116,6 @@ test('Test next token with key', async () => { const items2 = await itemsByStatus(status, { beginsWith: '2019' }, 2, itemsNextToken); expect(items2.data).toBeDefined(); // get last two values - console.log(items2); expect(items2.data.itemsByStatus.items).toHaveLength(2); expect(items2.data.itemsByStatus.items).toEqual( expect.arrayContaining([ diff --git a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts index 1adba052e4d..c142d4b7bd8 100644 --- a/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/model-auth-transformer.e2e.test.ts @@ -45,7 +45,6 @@ const PARTICIPANT_GROUP_NAME = 'Participant'; const WATCHER_GROUP_NAME = 'Watcher'; beforeAll(async () => { - process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; // Create a stack for the post model with auth enabled. const validSchema = ` type Post @model @auth(rules: [{ allow: owner }]) { @@ -563,7 +562,6 @@ test('Test listPosts query when authorized', async () => { {}, ); logDebug(JSON.stringify(listResponse, null, 4)); - console.log(listResponse); expect(listResponse.data.listPosts.items.length).toEqual(1); const listResponseAccess = await GRAPHQL_CLIENT_1_ACCESS.query( @@ -816,7 +814,6 @@ test(`Test listSalaries w/ Admin group protection authorized`, async () => { } } `); - console.log(req2); expect(req2.data.listSalaries.items.length).toEqual(1); expect(req2.data.listSalaries.items[0].id).toEqual(req.data.createSalary.id); expect(req2.data.listSalaries.items[0].wage).toEqual(101); @@ -2389,8 +2386,6 @@ test(`Test createTestIdentity as admin.`, async () => { ); const relevantPost = listResponse.data.listTestIdentities.items.find((p) => p.id === getReq.data.getTestIdentity.id); logDebug(JSON.stringify(listResponse, null, 4)); - console.log(listResponse); - console.log(relevantPost); expect(relevantPost).toBeTruthy(); expect(relevantPost.title).toEqual('Test title update'); expect(relevantPost.owner.slice(0, 19)).toEqual('https://cognito-idp'); From 27fe8f843962868f10a6851fd8446d443ea4dd19 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 8 Oct 2025 11:41:53 -0400 Subject: [PATCH 46/51] fix: dealing with mapped types --- .../src/velocity/util/dynamodb-utils.ts | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index bcd2eb724a3..9a740cba48b 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -7,7 +7,16 @@ export const dynamodbUtils = { if (Array.isArray(value)) { return { L: marshall(toJSON(value)) }; } - return marshall(toJSON(value), { + const jsonValue = toJSON(value); + if (jsonValue !== null && typeof jsonValue === 'object' && !Array.isArray(jsonValue)) { + return { + M: marshall(jsonValue, { + removeUndefinedValues: true, + convertEmptyValues: true, + }), + }; + } + return marshall(jsonValue, { removeUndefinedValues: true, convertEmptyValues: true, }); @@ -81,13 +90,13 @@ export const dynamodbUtils = { return JSON.stringify(this.toMap(value)); }, toMapValues(values) { - return Object.entries(toJSON(values)).reduce( - (sum, [key, value]) => ({ + const jsonValues = toJSON(values); + return Object.entries(jsonValues).reduce((sum, [key, value]) => { + return { ...sum, [key]: this.toDynamoDB(value), - }), - {}, - ); + }; + }, {}); }, toMapValuesJson(values) { return JSON.stringify(this.toMapValues(values)); From 3ba76ac7dcfa323c38ce5730eb0227e70ce7e2ea Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 8 Oct 2025 12:01:20 -0400 Subject: [PATCH 47/51] chore: clean up --- .../src/data-loader/dynamo-db/index.ts | 7 +- .../src/data-loader/dynamo-db/utils/index.ts | 9 +- .../src/velocity/util/dynamodb-utils.ts | 3 +- .../dynamo-db-model-transformer.e2e.test.ts | 678 +++++++++--------- 4 files changed, 338 insertions(+), 359 deletions(-) diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts index 98279149ba2..f3e8aa14f24 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/index.ts @@ -13,7 +13,7 @@ import { Select, ReturnValue, } from '@aws-sdk/client-dynamodb'; -import { unmarshall, marshall, nullIfEmpty } from './utils'; +import { unmarshall, nullIfEmpty } from './utils'; import { AmplifyAppSyncSimulatorDataLoader } from '..'; type DynamoDBConnectionConfig = { @@ -244,8 +244,6 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { private async scan(payload) { const { filter, index, limit, consistentRead = false, nextToken, select, totalSegments, segment } = payload; - console.log('SCAN PAYLOAD:', JSON.stringify(payload, null, 2)); - const params: ScanCommandInput = { TableName: this.tableName, ExclusiveStartKey: nextToken ? JSON.parse(Buffer.from(nextToken, 'base64').toString()) : null, @@ -273,9 +271,6 @@ export class DynamoDBDataLoader implements AmplifyAppSyncSimulatorDataLoader { LastEvaluatedKey: resultNextToken = null, } = await this.client.send(new ScanCommand(params)); - console.log('SCAN PARAMS:', JSON.stringify(params, null, 2)); - console.log('SCAN RESULT ITEMS:', items?.length || 0); - return { items: (items || []).map((item) => unmarshall(item)), scannedCount, diff --git a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts index a716c2dc576..d26c7a8da02 100644 --- a/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts +++ b/packages/amplify-appsync-simulator/src/data-loader/dynamo-db/utils/index.ts @@ -1,17 +1,10 @@ -import { unmarshall as awsUnmarshall, marshall as awsMarshall } from '@aws-sdk/util-dynamodb'; +import { unmarshall as awsUnmarshall } from '@aws-sdk/util-dynamodb'; import { AttributeValue } from '@aws-sdk/client-dynamodb'; export function nullIfEmpty>(obj: T): T | null { return Object.keys(obj).length === 0 ? null : obj; } -export function marshall(obj: object) { - if (!obj || Object.keys(obj).length === 0) { - return undefined; - } - return awsMarshall(obj); -} - export function unmarshall(raw, isRaw = true) { const content = isRaw ? awsUnmarshall(raw) : raw; // Because of the funky set type used in the aws-sdk, we need to further unwrap diff --git a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts index 9a740cba48b..463c1d2b15c 100644 --- a/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts +++ b/packages/amplify-appsync-simulator/src/velocity/util/dynamodb-utils.ts @@ -90,8 +90,7 @@ export const dynamodbUtils = { return JSON.stringify(this.toMap(value)); }, toMapValues(values) { - const jsonValues = toJSON(values); - return Object.entries(jsonValues).reduce((sum, [key, value]) => { + return Object.entries(toJSON(values)).reduce((sum, [key, value]) => { return { ...sum, [key]: this.toDynamoDB(value), diff --git a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts index c7b5bbb8756..f9bb7182cd6 100644 --- a/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts +++ b/packages/amplify-util-mock/src/__e2e__/dynamo-db-model-transformer.e2e.test.ts @@ -12,7 +12,6 @@ let server; jest.setTimeout(2000000); beforeAll(async () => { - process.env.AMPLIFY_ENABLE_DEBUG_OUTPUT = 'true'; process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; const validSchema = ` type Post @model { @@ -126,61 +125,60 @@ afterEach(async () => { * Test queries below */ test('Test createAuthor mutation', async () => { - //try { - const response = await GRAPHQL_CLIENT.query( - `mutation($input: CreateAuthorInput!) { - createAuthor(input: $input) { - id - name - entityMetadata { - isActive - } - } - }`, - { - input: { - name: 'Jeff B', - entityMetadata: { - isActive: true, + try { + const response = await GRAPHQL_CLIENT.query( + `mutation($input: CreateAuthorInput!) { + createAuthor(input: $input) { + id + name + entityMetadata { + isActive + } + } + }`, + { + input: { + name: 'Jeff B', + entityMetadata: { + isActive: true, + }, }, }, - }, - ); - logDebug(response); - expect(response.data.createAuthor.id).toBeDefined(); - expect(response.data.createAuthor.name).toEqual('Jeff B'); - expect(response.data.createAuthor.entityMetadata).toBeDefined(); - expect(response.data.createAuthor.entityMetadata.isActive).toEqual(true); - // } catch (e) { - // logDebug(e); - // console.log(e); - // // fail - // expect(e).toBeUndefined(); - // } + ); + logDebug(response); + expect(response.data.createAuthor.id).toBeDefined(); + expect(response.data.createAuthor.name).toEqual('Jeff B'); + expect(response.data.createAuthor.entityMetadata).toBeDefined(); + expect(response.data.createAuthor.entityMetadata.isActive).toEqual(true); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); test('Test createPost mutation', async () => { - // try { - const response = await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Hello, World!" }) { - id - title - createdAt - updatedAt - } - }`, - {}, - ); - expect(response.data.createPost.id).toBeDefined(); - expect(response.data.createPost.title).toEqual('Hello, World!'); - expect(response.data.createPost.createdAt).toBeDefined(); - expect(response.data.createPost.updatedAt).toBeDefined(); - // } catch (e) { - // logDebug(e); - // // fail - // expect(e).toBeUndefined(); - // } + try { + const response = await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Hello, World!" }) { + id + title + createdAt + updatedAt + } + }`, + {}, + ); + expect(response.data.createPost.id).toBeDefined(); + expect(response.data.createPost.title).toEqual('Hello, World!'); + expect(response.data.createPost.createdAt).toBeDefined(); + expect(response.data.createPost.updatedAt).toBeDefined(); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); test('Test query on get query with null field', async () => { @@ -440,336 +438,330 @@ test('Test listPosts query', async () => { }); test('Test listPosts query with filter', async () => { - // try { - const createResponse = await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Test List with filter" }) { - id - title - createdAt - updatedAt - } - }`, - {}, - ); - expect(createResponse.data.createPost.id).toBeDefined(); - expect(createResponse.data.createPost.title).toEqual('Test List with filter'); - const listWithFilterResponse = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { - title: { - contains: "List with filter" - } - }) { - items { - id - title - } - } - }`, - {}, - ); - logDebug(JSON.stringify(listWithFilterResponse, null, 4)); - expect(listWithFilterResponse.data.listPosts.items).toBeDefined(); - const items = listWithFilterResponse.data.listPosts.items; - expect(items.length).toEqual(1); - expect(items[0].title).toEqual('Test List with filter'); - // } catch (e) { - // logDebug(e); - // // fail - // console.log(e); - // expect(e).toBeUndefined(); - // } + try { + const createResponse = await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Test List with filter" }) { + id + title + createdAt + updatedAt + } + }`, + {}, + ); + expect(createResponse.data.createPost.id).toBeDefined(); + expect(createResponse.data.createPost.title).toEqual('Test List with filter'); + const listWithFilterResponse = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { + title: { + contains: "List with filter" + } + }) { + items { + id + title + } + } + }`, + {}, + ); + logDebug(JSON.stringify(listWithFilterResponse, null, 4)); + expect(listWithFilterResponse.data.listPosts.items).toBeDefined(); + const items = listWithFilterResponse.data.listPosts.items; + expect(items.length).toEqual(1); + expect(items[0].title).toEqual('Test List with filter'); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); test('Test enum filters List', async () => { - // try { - await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Appears in New Hope", appearsIn: [NEWHOPE], episode: NEWHOPE }) { - id - title - createdAt - updatedAt - } - }`, - {}, - ); - await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Appears in Jedi", appearsIn: [JEDI], episode: JEDI }) { - id - title - createdAt - updatedAt - } - }`, - {}, - ); - await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Appears in Empire", appearsIn: [EMPIRE], episode: EMPIRE }) { + try { + await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Appears in New Hope", appearsIn: [NEWHOPE], episode: NEWHOPE }) { id title createdAt updatedAt } }`, - {}, - ); - - await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Appears in Empire & JEDI", appearsIn: [EMPIRE, JEDI] }) { + {}, + ); + await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Appears in Jedi", appearsIn: [JEDI], episode: JEDI }) { id title createdAt updatedAt } }`, - {}, - ); - - // filter list of enums - const appearsInWithFilterResponseJedi = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { appearsIn: {eq: [JEDI]}}) { - items { - title + {}, + ); + await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Appears in Empire", appearsIn: [EMPIRE], episode: EMPIRE }) { id - } - } - } - `, - {}, - ); - expect(appearsInWithFilterResponseJedi.data.listPosts.items).toBeDefined(); - const items = appearsInWithFilterResponseJedi.data.listPosts.items; - logDebug(items); - expect(items.length).toEqual(1); - expect(items[0].title).toEqual('Appears in Jedi'); - - const appearsInWithFilterResponseNonJedi = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { appearsIn: {ne: [JEDI]}}) { - items { title - id + createdAt + updatedAt } - } - } - `, - {}, - ); - logDebug(JSON.stringify(appearsInWithFilterResponseNonJedi)); - expect(appearsInWithFilterResponseNonJedi.data.listPosts.items).toBeDefined(); - const appearsInNonJediItems = appearsInWithFilterResponseNonJedi.data.listPosts.items; - expect(appearsInNonJediItems.length).toEqual(3); - appearsInNonJediItems.forEach((item) => { - expect(['Appears in Empire & JEDI', 'Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); - }); + }`, + {}, + ); - const appearsInContainingJedi = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { appearsIn: {contains: JEDI }}) { - items { - title + await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Appears in Empire & JEDI", appearsIn: [EMPIRE, JEDI] }) { id - } - } - } - `, - {}, - ); - expect(appearsInContainingJedi.data.listPosts.items).toBeDefined(); - const appearsInWithJediItems = appearsInContainingJedi.data.listPosts.items; - expect(appearsInWithJediItems.length).toEqual(2); - appearsInWithJediItems.forEach((item) => { - expect(['Appears in Empire & JEDI', 'Appears in Jedi'].includes(item.title)).toBeTruthy(); - }); - - const appearsInNotContainingJedi = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { appearsIn: {notContains: JEDI }}) { - items { title - id + createdAt + updatedAt } - } - } - `, - {}, - ); - expect(appearsInNotContainingJedi.data.listPosts.items).toBeDefined(); - const appearsInWithNonJediItems = appearsInNotContainingJedi.data.listPosts.items; - expect(appearsInWithNonJediItems.length).toEqual(2); - appearsInWithNonJediItems.forEach((item) => { - expect(['Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); - }); + }`, + {}, + ); - // enum filter - const jediEpisode = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { episode: {eq: JEDI }}) { - items { - title - id - } - } - } - `, - {}, - ); - expect(jediEpisode.data.listPosts.items).toBeDefined(); - const jediEpisodeItems = jediEpisode.data.listPosts.items; - expect(jediEpisodeItems.length).toEqual(1); - expect(jediEpisodeItems[0].title).toEqual('Appears in Jedi'); + // filter list of enums + const appearsInWithFilterResponseJedi = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { appearsIn: {eq: [JEDI]}}) { + items { + title + id + } + } + } + `, + {}, + ); + expect(appearsInWithFilterResponseJedi.data.listPosts.items).toBeDefined(); + const items = appearsInWithFilterResponseJedi.data.listPosts.items; + logDebug(items); + expect(items.length).toEqual(1); + expect(items[0].title).toEqual('Appears in Jedi'); - const nonJediEpisode = await GRAPHQL_CLIENT.query( - `query { - listPosts(filter: { episode: {ne: JEDI }}) { - items { - title - id - } - } - } - `, - {}, - ); - expect(nonJediEpisode.data.listPosts.items).toBeDefined(); - const nonJediEpisodeItems = nonJediEpisode.data.listPosts.items; - expect(nonJediEpisodeItems.length).toEqual(3); - nonJediEpisodeItems.forEach((item) => { - expect(['Appears in New Hope', 'Appears in Empire', 'Appears in Empire & JEDI'].includes(item.title)).toBeTruthy(); - }); - // } catch (e) { - // logDebug(e); - // console.log(e); - // // fail - // expect(e).toBeUndefined(); - // } + const appearsInWithFilterResponseNonJedi = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { appearsIn: {ne: [JEDI]}}) { + items { + title + id + } + } + } + `, + {}, + ); + logDebug(JSON.stringify(appearsInWithFilterResponseNonJedi)); + expect(appearsInWithFilterResponseNonJedi.data.listPosts.items).toBeDefined(); + const appearsInNonJediItems = appearsInWithFilterResponseNonJedi.data.listPosts.items; + expect(appearsInNonJediItems.length).toEqual(3); + appearsInNonJediItems.forEach((item) => { + expect(['Appears in Empire & JEDI', 'Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); + }); + + const appearsInContainingJedi = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { appearsIn: {contains: JEDI }}) { + items { + title + id + } + } + } + `, + {}, + ); + expect(appearsInContainingJedi.data.listPosts.items).toBeDefined(); + const appearsInWithJediItems = appearsInContainingJedi.data.listPosts.items; + expect(appearsInWithJediItems.length).toEqual(2); + appearsInWithJediItems.forEach((item) => { + expect(['Appears in Empire & JEDI', 'Appears in Jedi'].includes(item.title)).toBeTruthy(); + }); + + const appearsInNotContainingJedi = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { appearsIn: {notContains: JEDI }}) { + items { + title + id + } + } + } + `, + {}, + ); + expect(appearsInNotContainingJedi.data.listPosts.items).toBeDefined(); + const appearsInWithNonJediItems = appearsInNotContainingJedi.data.listPosts.items; + expect(appearsInWithNonJediItems.length).toEqual(2); + appearsInWithNonJediItems.forEach((item) => { + expect(['Appears in New Hope', 'Appears in Empire'].includes(item.title)).toBeTruthy(); + }); + + // enum filter + const jediEpisode = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { episode: {eq: JEDI }}) { + items { + title + id + } + } + } + `, + {}, + ); + expect(jediEpisode.data.listPosts.items).toBeDefined(); + const jediEpisodeItems = jediEpisode.data.listPosts.items; + expect(jediEpisodeItems.length).toEqual(1); + expect(jediEpisodeItems[0].title).toEqual('Appears in Jedi'); + + const nonJediEpisode = await GRAPHQL_CLIENT.query( + `query { + listPosts(filter: { episode: {ne: JEDI }}) { + items { + title + id + } + } + } + `, + {}, + ); + expect(nonJediEpisode.data.listPosts.items).toBeDefined(); + const nonJediEpisodeItems = nonJediEpisode.data.listPosts.items; + expect(nonJediEpisodeItems.length).toEqual(3); + nonJediEpisodeItems.forEach((item) => { + expect(['Appears in New Hope', 'Appears in Empire', 'Appears in Empire & JEDI'].includes(item.title)).toBeTruthy(); + }); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); test('Test createPost mutation with non-model types', async () => { - // try { - const response = await GRAPHQL_CLIENT.query( - `mutation CreatePost($input: CreatePostInput!) { - createPost(input: $input) { - id - title - createdAt - updatedAt - metadata { - tags { - published - metadata { - tags { - published - } - } - } - } - appearsIn - } - }`, - { - input: { - title: 'Check that metadata exists', - metadata: { - tags: { - published: true, - metadata: { - tags: { - published: false, + try { + const response = await GRAPHQL_CLIENT.query( + `mutation CreatePost($input: CreatePostInput!) { + createPost(input: $input) { + id + title + createdAt + updatedAt + metadata { + tags { + published + metadata { + tags { + published + } + } + } + } + appearsIn + } + }`, + { + input: { + title: 'Check that metadata exists', + metadata: { + tags: { + published: true, + metadata: { + tags: { + published: false, + }, }, }, }, + appearsIn: ['NEWHOPE'], }, - appearsIn: ['NEWHOPE'], }, - }, - ); - console.log(response); - expect(response.data.createPost.id).toBeDefined(); - expect(response.data.createPost.title).toEqual('Check that metadata exists'); - expect(response.data.createPost.createdAt).toBeDefined(); - expect(response.data.createPost.updatedAt).toBeDefined(); - expect(response.data.createPost.metadata).toBeDefined(); - expect(response.data.createPost.metadata.tags.published).toEqual(true); - expect(response.data.createPost.metadata.tags.metadata.tags.published).toEqual(false); - expect(response.data.createPost.appearsIn).toEqual(['NEWHOPE']); - // } catch (e) { - // logDebug(e); - // console.log(e); - // // fail - // expect(e).toBeUndefined(); - // } + ); + expect(response.data.createPost.id).toBeDefined(); + expect(response.data.createPost.title).toEqual('Check that metadata exists'); + expect(response.data.createPost.createdAt).toBeDefined(); + expect(response.data.createPost.updatedAt).toBeDefined(); + expect(response.data.createPost.metadata).toBeDefined(); + expect(response.data.createPost.metadata.tags.published).toEqual(true); + expect(response.data.createPost.metadata.tags.metadata.tags.published).toEqual(false); + expect(response.data.createPost.appearsIn).toEqual(['NEWHOPE']); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); test('Test updatePost mutation with non-model types', async () => { - // try { - const createResponse = await GRAPHQL_CLIENT.query( - `mutation { - createPost(input: { title: "Test Update" }) { - id - title - createdAt - updatedAt - } - }`, - {}, - ); - expect(createResponse.data.createPost.id).toBeDefined(); - expect(createResponse.data.createPost.title).toEqual('Test Update'); - const updateResponse = await GRAPHQL_CLIENT.query( - `mutation UpdatePost($input: UpdatePostInput!) { - updatePost(input: $input) { - id - title - createdAt - updatedAt - metadata { - tags { - published - metadata { - tags { - published - } - } - } - } - appearsIn - } - }`, - { - input: { - id: createResponse.data.createPost.id, - title: 'Add some metadata', - metadata: { - tags: { - published: true, - metadata: { - tags: { - published: false, + try { + const createResponse = await GRAPHQL_CLIENT.query( + `mutation { + createPost(input: { title: "Test Update" }) { + id + title + createdAt + updatedAt + } + }`, + {}, + ); + expect(createResponse.data.createPost.id).toBeDefined(); + expect(createResponse.data.createPost.title).toEqual('Test Update'); + const updateResponse = await GRAPHQL_CLIENT.query( + `mutation UpdatePost($input: UpdatePostInput!) { + updatePost(input: $input) { + id + title + createdAt + updatedAt + metadata { + tags { + published + metadata { + tags { + published + } + } + } + } + appearsIn + } + }`, + { + input: { + id: createResponse.data.createPost.id, + title: 'Add some metadata', + metadata: { + tags: { + published: true, + metadata: { + tags: { + published: false, + }, }, }, }, + appearsIn: ['NEWHOPE', 'EMPIRE'], }, - appearsIn: ['NEWHOPE', 'EMPIRE'], }, - }, - ); - console.log(updateResponse); - expect(updateResponse.data.updatePost.title).toEqual('Add some metadata'); - expect(updateResponse.data.updatePost.metadata).toBeDefined(); - expect(updateResponse.data.updatePost.metadata.tags.published).toEqual(true); - expect(updateResponse.data.updatePost.metadata.tags.metadata.tags.published).toEqual(false); - expect(updateResponse.data.updatePost.appearsIn).toEqual(['NEWHOPE', 'EMPIRE']); - // } catch (e) { - // logDebug(e); - // console.log(e); - // // fail - // expect(e).toBeUndefined(); - // } + ); + expect(updateResponse.data.updatePost.title).toEqual('Add some metadata'); + expect(updateResponse.data.updatePost.metadata).toBeDefined(); + expect(updateResponse.data.updatePost.metadata.tags.published).toEqual(true); + expect(updateResponse.data.updatePost.metadata.tags.metadata.tags.published).toEqual(false); + expect(updateResponse.data.updatePost.appearsIn).toEqual(['NEWHOPE', 'EMPIRE']); + } catch (e) { + logDebug(e); + // fail + expect(e).toBeUndefined(); + } }); From 8f9837a79f8c068eaff03cfab5ccca37cddc1024 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Wed, 8 Oct 2025 12:16:41 -0400 Subject: [PATCH 48/51] fix: lint and minor package size bump --- .circleci/local_publish_helpers_codebuild.sh | 8 ++++---- .eslint-dictionary.json | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/local_publish_helpers_codebuild.sh b/.circleci/local_publish_helpers_codebuild.sh index fa197a61f7a..107533bd45f 100644 --- a/.circleci/local_publish_helpers_codebuild.sh +++ b/.circleci/local_publish_helpers_codebuild.sh @@ -139,10 +139,10 @@ function verifyPkgCli { fi } - # TODO: After V3 migrations are done, decrease 1090 back to 930 and 875 back to 750 - verifySinglePkg "amplify-pkg-linux-x64" "amplify-pkg-linux-x64.tgz" $((1090 * 1024 * 1024)) - verifySinglePkg "amplify-pkg-macos-x64" "amplify-pkg-macos-x64.tgz" $((1090 * 1024 * 1024)) - verifySinglePkg "amplify-pkg-win-x64.exe" "amplify-pkg-win-x64.tgz" $((1090 * 1024 * 1024)) + # TODO: After V3 migrations are done, decrease 1095 back to 930 and 875 back to 750 + verifySinglePkg "amplify-pkg-linux-x64" "amplify-pkg-linux-x64.tgz" $((1095 * 1024 * 1024)) + verifySinglePkg "amplify-pkg-macos-x64" "amplify-pkg-macos-x64.tgz" $((1095 * 1024 * 1024)) + verifySinglePkg "amplify-pkg-win-x64.exe" "amplify-pkg-win-x64.tgz" $((1095 * 1024 * 1024)) verifySinglePkg "amplify-pkg-linux-arm64" "amplify-pkg-linux-arm64.tgz" $((875 * 1024 * 1024)) } diff --git a/.eslint-dictionary.json b/.eslint-dictionary.json index f6324edd864..7610461e76e 100644 --- a/.eslint-dictionary.json +++ b/.eslint-dictionary.json @@ -237,6 +237,7 @@ "macos", "matcher", "matchers", + "marshall", "metafile", "mfas", "migrator", From 58ef1c76c5ac2b9932cefed2b41dfbd6a93dc423 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 9 Oct 2025 14:48:35 -0400 Subject: [PATCH 49/51] fix: e2e test stability --- codebuild_specs/e2e_workflow_generated.yml | 615 ++++++++++----------- codebuild_specs/wait_for_ids.json | 284 +++++----- scripts/split-e2e-tests-codebuild.ts | 23 +- 3 files changed, 466 insertions(+), 456 deletions(-) diff --git a/codebuild_specs/e2e_workflow_generated.yml b/codebuild_specs/e2e_workflow_generated.yml index c121e692520..96b988e69be 100644 --- a/codebuild_specs/e2e_workflow_generated.yml +++ b/codebuild_specs/e2e_workflow_generated.yml @@ -168,193 +168,200 @@ batch: TEST_SUITE: src/__tests__/analytics-pinpoint-flutter.test.ts|src/__tests__/analytics-kinesis.test.ts|src/__tests__/notifications-analytics-compatibility-sms-2.test.ts depend-on: - upb - - identifier: l_notifications_analytics_compatibility_in_app_1_plugin_notifications_analytics_compatibility_sms_1 + - identifier: l_notifications_analytics_compatibility_in_app_1_studio_modelgen buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-1.test.ts|src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts + TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-1.test.ts|src/__tests__/studio-modelgen.test.ts depend-on: - upb - - identifier: l_hooks_b_global_sandbox_c_analytics_2 + - identifier: l_plugin_notifications_analytics_compatibility_sms_1_hooks_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/hooks-b.test.ts|src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts + TEST_SUITE: src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts|src/__tests__/hooks-b.test.ts depend-on: - upb - - identifier: l_pull_notifications_sms_pull_notifications_in_app_messaging_env_1 + - identifier: l_global_sandbox_c_analytics_2_pull buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/pull.test.ts|src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts + TEST_SUITE: src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts|src/__tests__/pull.test.ts depend-on: - upb - - identifier: l_custom_transformers_with_babel_config_notifications_in_app_messaging_env_2 + - identifier: l_notifications_sms_pull_notifications_in_app_messaging_env_1_custom_transformers buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/graphql-v2/custom-transformers.test.ts|src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts + TEST_SUITE: src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts|src/__tests__/graphql-v2/custom-transformers.test.ts depend-on: - upb - - identifier: l_notifications_fcm_notifications_apns_init_b + - identifier: l_with_babel_config_notifications_in_app_messaging_env_2_notifications_fcm buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-fcm.test.ts|src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts + TEST_SUITE: src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts|src/__tests__/notifications-fcm.test.ts depend-on: - upb - - identifier: l_container_hosting_auth_10_init_f + - identifier: l_notifications_apns_init_b_container_hosting buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/container-hosting.test.ts|src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts + TEST_SUITE: src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts|src/__tests__/container-hosting.test.ts depend-on: - upb - - identifier: l_init_d_env_2_amplify_configure + - identifier: l_auth_10_init_f_init_d buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/init_d.test.ts|src/__tests__/env-2.test.ts|src/__tests__/amplify-configure.test.ts + TEST_SUITE: src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts|src/__tests__/init_d.test.ts depend-on: - upb - - identifier: l_layer_4_init_c_git_clone_attach + - identifier: l_env_2_amplify_configure_layer_4 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/layer-4.test.ts|src/__tests__/init_c.test.ts|src/__tests__/git-clone-attach.test.ts + TEST_SUITE: src/__tests__/env-2.test.ts|src/__tests__/amplify-configure.test.ts|src/__tests__/layer-4.test.ts depend-on: - upb - - identifier: l_configure_project_auth_5d_tags + - identifier: l_init_c_git_clone_attach_configure_project buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/configure-project.test.ts|src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts + TEST_SUITE: src/__tests__/init_c.test.ts|src/__tests__/git-clone-attach.test.ts|src/__tests__/configure-project.test.ts depend-on: - upb - - identifier: l_schema_model_a_function_4_function_3b + - identifier: l_auth_5d_tags_schema_model_a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-model-a.test.ts|src/__tests__/function_4.test.ts|src/__tests__/function_3b.test.ts + TEST_SUITE: src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts|src/__tests__/schema-model-a.test.ts depend-on: - upb - - identifier: l_function_2c_storage_2_function_6 + - identifier: l_function_4_function_3b_function_2c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_2c.test.ts|src/__tests__/storage-2.test.ts|src/__tests__/function_6.test.ts + TEST_SUITE: src/__tests__/function_4.test.ts|src/__tests__/function_3b.test.ts|src/__tests__/function_2c.test.ts depend-on: - upb - - identifier: l_custom_policies_function_auth_1a_auth_trigger + - identifier: l_storage_2_function_6_custom_policies_function buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/custom_policies_function.test.ts|src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts + TEST_SUITE: src/__tests__/storage-2.test.ts|src/__tests__/function_6.test.ts|src/__tests__/custom_policies_function.test.ts depend-on: - upb - - identifier: l_schema_versioned_schema_model_e_schema_auth_4b + - identifier: l_auth_1a_auth_trigger_schema_versioned buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-versioned.test.ts|src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts + TEST_SUITE: src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts|src/__tests__/schema-versioned.test.ts depend-on: - upb - - identifier: l_notifications_sms_iam_permissions_boundary_export + - identifier: l_schema_model_e_schema_auth_4b_notifications_sms buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-sms.test.ts|src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/export.test.ts + TEST_SUITE: src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts|src/__tests__/notifications-sms.test.ts depend-on: - upb - - identifier: l_node_function_schema_model_d_schema_model_b + - identifier: l_iam_permissions_boundary_export_node_function buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/node.function.test.ts|src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts + TEST_SUITE: src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/export.test.ts|src/__tests__/migration/node.function.test.ts depend-on: - upb - - identifier: l_schema_auth_4a_s3_sse_geo_add_b + - identifier: l_schema_model_d_schema_model_b_schema_auth_4a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-4a.test.ts|src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts + TEST_SUITE: src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts|src/__tests__/schema-auth-4a.test.ts depend-on: - upb - - identifier: l_auth_8b_auth_5e_auth_1c + - identifier: l_s3_sse_geo_add_b_auth_8b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_8b.test.ts|src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts + TEST_SUITE: src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts|src/__tests__/auth_8b.test.ts depend-on: - upb - - identifier: l_schema_predictions_schema_model_c_schema_data_access_patterns + - identifier: l_auth_5e_auth_1c_schema_predictions buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-predictions.test.ts|src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts + TEST_SUITE: src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts|src/__tests__/schema-predictions.test.ts depend-on: - upb - - identifier: l_schema_auth_6a_schema_auth_4d_frontend_config_drift + - identifier: l_schema_model_c_schema_data_access_patterns_schema_auth_6a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-6a.test.ts|src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts + TEST_SUITE: src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts|src/__tests__/schema-auth-6a.test.ts depend-on: - upb - - identifier: l_env_4_auth_5f_model_migration + - identifier: l_schema_auth_4d_frontend_config_drift_env_4 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/env-4.test.ts|src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts + TEST_SUITE: src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts|src/__tests__/env-4.test.ts depend-on: - upb - - identifier: l_schema_auth_5c_schema_auth_4c_init_a + - identifier: l_auth_5f_model_migration_schema_auth_5c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-5c.test.ts|src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts + TEST_SUITE: src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts|src/__tests__/schema-auth-5c.test.ts depend-on: - upb - - identifier: l_geo_add_a_env_1_auth_5c + - identifier: l_schema_auth_4c_init_a_geo_add_a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/geo-add-a.test.ts|src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts + TEST_SUITE: src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts|src/__tests__/geo-add-a.test.ts depend-on: - upb - - identifier: l_auth_5a_auth_4c_auth_3c + - identifier: l_env_1_auth_5c_auth_5a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_5a.test.ts|src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts + TEST_SUITE: src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts|src/__tests__/auth_5a.test.ts depend-on: - upb - - identifier: l_schema_auth_8c_schema_auth_6b_schema_auth_5d + - identifier: l_auth_4c_auth_3c_schema_auth_8c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-8c.test.ts|src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts + TEST_SUITE: src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts|src/__tests__/schema-auth-8c.test.ts depend-on: - upb - - identifier: l_global_sandbox_b_geo_import_2_geo_import_1a + - identifier: l_schema_auth_6b_schema_auth_5d_global_sandbox_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/global_sandbox-b.test.ts|src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts + TEST_SUITE: src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts|src/__tests__/global_sandbox-b.test.ts depend-on: - upb - - identifier: l_function_9c_function_10_function_permissions + - identifier: l_geo_import_2_geo_import_1a_function_9c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_9c.test.ts|src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts + TEST_SUITE: src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts|src/__tests__/function_9c.test.ts depend-on: - upb - - identifier: l_env_5_custom_resources_auth_9 + - identifier: l_function_10_function_permissions_env_5 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/env-5.test.ts|src/__tests__/custom_resources.test.ts|src/__tests__/auth_9.test.ts + TEST_SUITE: src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts|src/__tests__/env-5.test.ts + depend-on: + - upb + - identifier: l_custom_resources_auth_9 + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + TEST_SUITE: src/__tests__/custom_resources.test.ts|src/__tests__/auth_9.test.ts depend-on: - upb - identifier: l_auth_5b_schema_auth_8a_schema_auth_7c @@ -371,208 +378,215 @@ batch: TEST_SUITE: src/__tests__/schema-auth-6d.test.ts|src/__tests__/schema-auth-6c.test.ts|src/__tests__/schema-auth-2b.test.ts depend-on: - upb - - identifier: l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2_init_e + - identifier: l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts|src/__tests__/init_e.test.ts + TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts depend-on: - upb - - identifier: l_global_sandbox_a_geo_import_1b_feature_flags + - identifier: l_init_e_global_sandbox_a_geo_import_1b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts|src/__tests__/feature-flags.test.ts + TEST_SUITE: src/__tests__/init_e.test.ts|src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts depend-on: - upb - - identifier: l_auth_8c_auth_7a_auth_4a + - identifier: l_feature_flags_auth_8c_auth_7a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts|src/__tests__/auth_4a.test.ts + TEST_SUITE: src/__tests__/feature-flags.test.ts|src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts depend-on: - upb - - identifier: l_auth_3b_auth_3a_function_migration + - identifier: l_auth_4a_auth_3b_auth_3a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts|src/__tests__/transformer-migrations/function-migration.test.ts + TEST_SUITE: src/__tests__/auth_4a.test.ts|src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts depend-on: - upb - - identifier: l_storage_3_schema_auth_9_c_schema_auth_9_a + - identifier: l_function_migration_storage_3_schema_auth_9_c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts|src/__tests__/schema-auth-9-a.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/function-migration.test.ts|src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts depend-on: - upb - - identifier: l_schema_auth_8b_schema_auth_5b_schema_auth_1a + - identifier: l_schema_auth_9_a_schema_auth_8b_schema_auth_5b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts|src/__tests__/schema-auth-1a.test.ts + TEST_SUITE: src/__tests__/schema-auth-9-a.test.ts|src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts depend-on: - upb - - identifier: l_geo_headless_function_9a_export_pull_a + - identifier: l_schema_auth_1a_geo_headless_function_9a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts|src/__tests__/export-pull-a.test.ts + TEST_SUITE: src/__tests__/schema-auth-1a.test.ts|src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts depend-on: - upb - - identifier: l_api_7_api_10_api_key_migration5 + - identifier: l_export_pull_a_api_7_api_10 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts|src/__tests__/migration/api.key.migration5.test.ts + TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts depend-on: - upb - - identifier: l_schema_iterative_rollback_1_schema_auth_9_b_schema_auth_7b + - identifier: l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-iterative-rollback-1.test.ts|src/__tests__/schema-auth-9-b.test.ts|src/__tests__/schema-auth-7b.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-iterative-rollback-1.test.ts|src/__tests__/schema-auth-9-b.test.ts depend-on: - upb - - identifier: l_schema_auth_7a_schema_auth_2a_schema_auth_1b + - identifier: l_schema_auth_7b_schema_auth_7a_schema_auth_2a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts|src/__tests__/schema-auth-1b.test.ts + TEST_SUITE: src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts depend-on: - upb - - identifier: l_schema_auth_11_b_predictions_layer_3 + - identifier: l_schema_auth_1b_schema_auth_11_b_predictions buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts|src/__tests__/layer-3.test.ts + TEST_SUITE: src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts depend-on: - upb - - identifier: l_hosting_geo_import_3_geo_add_d + - identifier: l_layer_3_hosting_geo_import_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts|src/__tests__/geo-add-d.test.ts + TEST_SUITE: src/__tests__/layer-3.test.ts|src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts depend-on: - upb - - identifier: l_geo_add_c_delete_auth_1b + - identifier: l_geo_add_d_geo_add_c_delete buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts|src/__tests__/auth_1b.test.ts + TEST_SUITE: src/__tests__/geo-add-d.test.ts|src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts depend-on: - upb - - identifier: l_auth_11_predictions_migration_api_key_migration3 + - identifier: l_auth_1b_auth_11_predictions_migration buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts|src/__tests__/migration/api.key.migration3.test.ts + TEST_SUITE: src/__tests__/auth_1b.test.ts|src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts depend-on: - upb - - identifier: l_api_connection_migration_init_special_case_function_3a_python + - identifier: l_api_key_migration3_api_connection_migration_init_special_case buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts|src/__tests__/function_3a_python.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration3.test.ts|src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts depend-on: - upb - - identifier: l_function_3a_nodejs_function_3a_go_function_3a_dotnet + - identifier: l_function_3a_python_function_3a_nodejs_function_3a_go buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_3a_nodejs.test.ts|src/__tests__/function_3a_go.test.ts|src/__tests__/function_3a_dotnet.test.ts + TEST_SUITE: src/__tests__/function_3a_python.test.ts|src/__tests__/function_3a_nodejs.test.ts|src/__tests__/function_3a_go.test.ts depend-on: - upb - - identifier: l_export_pull_b_auth_7b_api_6a + - identifier: l_function_3a_dotnet_export_pull_b_auth_7b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts|src/__tests__/api_6a.test.ts + TEST_SUITE: src/__tests__/function_3a_dotnet.test.ts|src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts depend-on: - upb - - identifier: l_http_migration_schema_function_2_schema_auth_3 + - identifier: l_api_6a_http_migration_schema_function_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts|src/__tests__/schema-auth-3.test.ts + TEST_SUITE: src/__tests__/api_6a.test.ts|src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts depend-on: - upb - - identifier: l_schema_auth_12_schema_iterative_update_3_schema_iterative_rollback_2 + - identifier: l_schema_auth_3_schema_auth_12_schema_iterative_update_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts|src/__tests__/schema-iterative-rollback-2.test.ts + TEST_SUITE: src/__tests__/schema-auth-3.test.ts|src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts depend-on: - upb - - identifier: l_schema_auth_5a_export_pull_d_auth_8a + - identifier: l_schema_iterative_rollback_2_schema_auth_5a_export_pull_d buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts|src/__tests__/auth_8a.test.ts + TEST_SUITE: src/__tests__/schema-iterative-rollback-2.test.ts|src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts depend-on: - upb - - identifier: l_auth_4b_auth_migration_push + - identifier: l_auth_8a_auth_4b_auth_migration buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts|src/__tests__/push.test.ts + TEST_SUITE: src/__tests__/auth_8a.test.ts|src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts depend-on: - upb - - identifier: l_pull_2_pr_previews_multi_env_1_parameter_store_2 + - identifier: l_push_pull_2_pr_previews_multi_env_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/pull-2.test.ts|src/__tests__/pr-previews-multi-env-1.test.ts|src/__tests__/parameter-store-2.test.ts + TEST_SUITE: src/__tests__/push.test.ts|src/__tests__/pull-2.test.ts|src/__tests__/pr-previews-multi-env-1.test.ts depend-on: - upb - - identifier: l_parameter_store_1_notifications_sms_update_notifications_multi_env + - identifier: l_parameter_store_2_parameter_store_1_notifications_sms_update buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts|src/__tests__/notifications-multi-env.test.ts + TEST_SUITE: src/__tests__/parameter-store-2.test.ts|src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts depend-on: - upb - - identifier: l_minify_cloudformation_init_force_push_hooks_c + - identifier: l_notifications_multi_env_minify_cloudformation_init_force_push buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts|src/__tests__/hooks-c.test.ts + TEST_SUITE: src/__tests__/notifications-multi-env.test.ts|src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts depend-on: - upb - - identifier: l_help_function_2d_function_15 + - identifier: l_hooks_c_help_function_2d buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts|src/__tests__/function_15.test.ts + TEST_SUITE: src/__tests__/hooks-c.test.ts|src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts depend-on: - upb - - identifier: l_function_14_function_13_function_12 + - identifier: l_function_15_function_14_function_13 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts|src/__tests__/function_12.test.ts + TEST_SUITE: src/__tests__/function_15.test.ts|src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts depend-on: - upb - - identifier: l_export_pull_c_custom_resource_with_storage_build_function + - identifier: l_function_12_export_pull_c_custom_resource_with_storage buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/export-pull-c.test.ts|src/__tests__/custom-resource-with-storage.test.ts|src/__tests__/build-function.test.ts + TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts|src/__tests__/custom-resource-with-storage.test.ts CLI_REGION: us-west-2 depend-on: - upb - - identifier: l_build_function_yarn_modern_auth_5g_auth_2h + - identifier: l_build_function_build_function_yarn_modern_auth_5g + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + TEST_SUITE: src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts + depend-on: + - upb + - identifier: l_auth_2h_auth_2g_auth_12 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts|src/__tests__/auth_2h.test.ts + TEST_SUITE: src/__tests__/auth_2h.test.ts|src/__tests__/auth_2g.test.ts|src/__tests__/auth_12.test.ts depend-on: - upb - - identifier: l_auth_2g_auth_12_api_9a + - identifier: l_api_9a_api_6c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_2g.test.ts|src/__tests__/auth_12.test.ts|src/__tests__/api_9a.test.ts + TEST_SUITE: src/__tests__/api_9a.test.ts|src/__tests__/api_6c.test.ts depend-on: - upb - identifier: l_api_2b_api_2a_amplify_remove @@ -694,39 +708,46 @@ batch: TEST_SUITE: src/__tests__/resolvers.test.ts|src/__tests__/geo-multi-env.test.ts|src/__tests__/graphql-v2/searchable-datastore.test.ts depend-on: - upb - - identifier: l_schema_searchable_apigw_api_5 + - identifier: l_schema_searchable_apigw buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-searchable.test.ts|src/__tests__/apigw.test.ts|src/__tests__/api_5.test.ts + TEST_SUITE: src/__tests__/schema-searchable.test.ts|src/__tests__/apigw.test.ts depend-on: - upb - - identifier: l_api_key_migration2_api_lambda_auth_1_schema_auth_14 + - identifier: l_api_5_api_key_migration2_api_lambda_auth_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_1.test.ts|src/__tests__/schema-auth-14.test.ts + TEST_SUITE: src/__tests__/api_5.test.ts|src/__tests__/migration/api.key.migration2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_1.test.ts depend-on: - upb - - identifier: l_api_key_migration1_api_6b_api_3 + - identifier: l_schema_auth_14_api_key_migration1_api_6b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration1.test.ts|src/__tests__/api_6b.test.ts|src/__tests__/api_3.test.ts + TEST_SUITE: src/__tests__/schema-auth-14.test.ts|src/__tests__/migration/api.key.migration1.test.ts|src/__tests__/api_6b.test.ts depend-on: - upb - - identifier: l_layer_1_api_1_api_key_migration4 + - identifier: l_api_3_layer_1_api_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/layer-1.test.ts|src/__tests__/api_1.test.ts|src/__tests__/migration/api.key.migration4.test.ts + TEST_SUITE: src/__tests__/api_3.test.ts|src/__tests__/layer-1.test.ts|src/__tests__/api_1.test.ts depend-on: - upb - - identifier: l_schema_iterative_update_4_function_1_storage_5 + - identifier: l_api_key_migration4_schema_iterative_update_4 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-iterative-update-4.test.ts|src/__tests__/function_1.test.ts|src/__tests__/storage-5.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration4.test.ts|src/__tests__/schema-iterative-update-4.test.ts + depend-on: + - upb + - identifier: l_function_1_storage_5 + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + TEST_SUITE: src/__tests__/function_1.test.ts|src/__tests__/storage-5.test.ts depend-on: - upb - identifier: l_datastore_modelgen @@ -771,14 +792,6 @@ batch: TEST_SUITE: src/__tests__/auth_2c.test.ts depend-on: - upb - - identifier: l_studio_modelgen - buildspec: codebuild_specs/run_e2e_tests_linux.yml - env: - variables: - compute-type: BUILD_GENERAL1_SMALL - TEST_SUITE: src/__tests__/studio-modelgen.test.ts - depend-on: - - upb - identifier: l_geo_remove_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: @@ -923,14 +936,6 @@ batch: TEST_SUITE: src/__tests__/import_dynamodb_2b.test.ts depend-on: - upb - - identifier: l_api_6c - buildspec: codebuild_specs/run_e2e_tests_linux.yml - env: - variables: - compute-type: BUILD_GENERAL1_SMALL - TEST_SUITE: src/__tests__/api_6c.test.ts - depend-on: - - upb - identifier: l_smoketest_amplify_app buildspec: codebuild_specs/run_e2e_tests_linux.yml env: @@ -1097,763 +1102,773 @@ batch: depend-on: - build_windows - upb - - identifier: w_plugin_notifications_analytics_compatibility_sms_1 + - identifier: w_studio_modelgen_plugin buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts + TEST_SUITE: src/__tests__/studio-modelgen.test.ts|src/__tests__/plugin.test.ts depend-on: - build_windows - upb - - identifier: w_hooks_b_global_sandbox_c + - identifier: w_notifications_analytics_compatibility_sms_1_hooks_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/hooks-b.test.ts|src/__tests__/global_sandbox-c.test.ts + TEST_SUITE: src/__tests__/notifications-analytics-compatibility-sms-1.test.ts|src/__tests__/hooks-b.test.ts depend-on: - build_windows - upb - - identifier: w_analytics_2_notifications_sms_pull + - identifier: w_global_sandbox_c_analytics_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/analytics-2.test.ts|src/__tests__/notifications-sms-pull.test.ts + TEST_SUITE: src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_in_app_messaging_env_1_custom_transformers + - identifier: w_notifications_sms_pull_notifications_in_app_messaging_env_1 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-in-app-messaging-env-1.test.ts|src/__tests__/graphql-v2/custom-transformers.test.ts + TEST_SUITE: src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts depend-on: - build_windows - upb - - identifier: w_with_babel_config_notifications_in_app_messaging_env_2 + - identifier: w_custom_transformers_with_babel_config buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts + TEST_SUITE: src/__tests__/graphql-v2/custom-transformers.test.ts|src/__tests__/with-babel-config.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_fcm_notifications_apns + - identifier: w_notifications_in_app_messaging_env_2_notifications_fcm buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-fcm.test.ts|src/__tests__/notifications-apns.test.ts + TEST_SUITE: src/__tests__/notifications-in-app-messaging-env-2.test.ts|src/__tests__/notifications-fcm.test.ts depend-on: - build_windows - upb - - identifier: w_init_b_container_hosting + - identifier: w_notifications_apns_init_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_b.test.ts|src/__tests__/container-hosting.test.ts + TEST_SUITE: src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts depend-on: - build_windows - upb - - identifier: w_auth_10_init_f + - identifier: w_container_hosting_auth_10 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts + TEST_SUITE: src/__tests__/container-hosting.test.ts|src/__tests__/auth_10.test.ts depend-on: - build_windows - upb - - identifier: w_init_d_amplify_configure + - identifier: w_init_f_init_d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_d.test.ts|src/__tests__/amplify-configure.test.ts + TEST_SUITE: src/__tests__/init_f.test.ts|src/__tests__/init_d.test.ts depend-on: - build_windows - upb - - identifier: w_layer_4_init_c + - identifier: w_amplify_configure_layer_4 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/layer-4.test.ts|src/__tests__/init_c.test.ts + TEST_SUITE: src/__tests__/amplify-configure.test.ts|src/__tests__/layer-4.test.ts depend-on: - build_windows - upb - - identifier: w_configure_project_auth_5d + - identifier: w_init_c_configure_project buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/configure-project.test.ts|src/__tests__/auth_5d.test.ts + TEST_SUITE: src/__tests__/init_c.test.ts|src/__tests__/configure-project.test.ts depend-on: - build_windows - upb - - identifier: w_tags_schema_model_a + - identifier: w_auth_5d_tags buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/tags.test.ts|src/__tests__/schema-model-a.test.ts + TEST_SUITE: src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts depend-on: - build_windows - upb - - identifier: w_function_2c_storage_2 + - identifier: w_schema_model_a_function_2c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_2c.test.ts|src/__tests__/storage-2.test.ts + TEST_SUITE: src/__tests__/schema-model-a.test.ts|src/__tests__/function_2c.test.ts depend-on: - build_windows - upb - - identifier: w_custom_policies_function_auth_1a + - identifier: w_storage_2_custom_policies_function buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/custom_policies_function.test.ts|src/__tests__/auth_1a.test.ts + TEST_SUITE: src/__tests__/storage-2.test.ts|src/__tests__/custom_policies_function.test.ts depend-on: - build_windows - upb - - identifier: w_auth_trigger_schema_versioned + - identifier: w_auth_1a_auth_trigger buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth-trigger.test.ts|src/__tests__/schema-versioned.test.ts + TEST_SUITE: src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts depend-on: - build_windows - upb - - identifier: w_schema_model_e_schema_auth_4b + - identifier: w_schema_versioned_schema_model_e buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts + TEST_SUITE: src/__tests__/schema-versioned.test.ts|src/__tests__/schema-model-e.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_sms_iam_permissions_boundary + - identifier: w_schema_auth_4b_notifications_sms buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-sms.test.ts|src/__tests__/iam-permissions-boundary.test.ts + TEST_SUITE: src/__tests__/schema-auth-4b.test.ts|src/__tests__/notifications-sms.test.ts depend-on: - build_windows - upb - - identifier: w_node_function_schema_model_d + - identifier: w_iam_permissions_boundary_node_function buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/migration/node.function.test.ts|src/__tests__/schema-model-d.test.ts + TEST_SUITE: src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/migration/node.function.test.ts depend-on: - build_windows - upb - - identifier: w_schema_model_b_schema_auth_4a + - identifier: w_schema_model_d_schema_model_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-model-b.test.ts|src/__tests__/schema-auth-4a.test.ts + TEST_SUITE: src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts depend-on: - build_windows - upb - - identifier: w_s3_sse_geo_add_b + - identifier: w_schema_auth_4a_s3_sse buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts + TEST_SUITE: src/__tests__/schema-auth-4a.test.ts|src/__tests__/s3-sse.test.ts depend-on: - build_windows - upb - - identifier: w_auth_8b_auth_5e + - identifier: w_geo_add_b_auth_8b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_8b.test.ts|src/__tests__/auth_5e.test.ts + TEST_SUITE: src/__tests__/geo-add-b.test.ts|src/__tests__/auth_8b.test.ts depend-on: - build_windows - upb - - identifier: w_auth_1c_schema_predictions + - identifier: w_auth_5e_auth_1c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_1c.test.ts|src/__tests__/schema-predictions.test.ts + TEST_SUITE: src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_model_c_schema_data_access_patterns + - identifier: w_schema_predictions_schema_model_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts + TEST_SUITE: src/__tests__/schema-predictions.test.ts|src/__tests__/schema-model-c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_6a_schema_auth_4d + - identifier: w_schema_data_access_patterns_schema_auth_6a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-6a.test.ts|src/__tests__/schema-auth-4d.test.ts + TEST_SUITE: src/__tests__/schema-data-access-patterns.test.ts|src/__tests__/schema-auth-6a.test.ts depend-on: - build_windows - upb - - identifier: w_frontend_config_drift_env_4 + - identifier: w_schema_auth_4d_frontend_config_drift buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/frontend_config_drift.test.ts|src/__tests__/env-4.test.ts + TEST_SUITE: src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5f_model_migration + - identifier: w_env_4_auth_5f buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts + TEST_SUITE: src/__tests__/env-4.test.ts|src/__tests__/auth_5f.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_5c_schema_auth_4c + - identifier: w_model_migration_schema_auth_5c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-5c.test.ts|src/__tests__/schema-auth-4c.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/model-migration.test.ts|src/__tests__/schema-auth-5c.test.ts depend-on: - build_windows - upb - - identifier: w_init_a_geo_add_a + - identifier: w_schema_auth_4c_init_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_a.test.ts|src/__tests__/geo-add-a.test.ts + TEST_SUITE: src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts depend-on: - build_windows - upb - - identifier: w_env_1_auth_5c + - identifier: w_geo_add_a_env_1 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts + TEST_SUITE: src/__tests__/geo-add-a.test.ts|src/__tests__/env-1.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5a_auth_4c + - identifier: w_auth_5c_auth_5a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5a.test.ts|src/__tests__/auth_4c.test.ts + TEST_SUITE: src/__tests__/auth_5c.test.ts|src/__tests__/auth_5a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_3c_schema_auth_8c + - identifier: w_auth_4c_auth_3c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_3c.test.ts|src/__tests__/schema-auth-8c.test.ts + TEST_SUITE: src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_6b_schema_auth_5d + - identifier: w_schema_auth_8c_schema_auth_6b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts + TEST_SUITE: src/__tests__/schema-auth-8c.test.ts|src/__tests__/schema-auth-6b.test.ts depend-on: - build_windows - upb - - identifier: w_global_sandbox_b_geo_import_2 + - identifier: w_schema_auth_5d_global_sandbox_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/global_sandbox-b.test.ts|src/__tests__/geo-import-2.test.ts + TEST_SUITE: src/__tests__/schema-auth-5d.test.ts|src/__tests__/global_sandbox-b.test.ts depend-on: - build_windows - upb - - identifier: w_geo_import_1a_function_9c + - identifier: w_geo_import_2_geo_import_1a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-import-1a.test.ts|src/__tests__/function_9c.test.ts + TEST_SUITE: src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts depend-on: - build_windows - upb - - identifier: w_function_10_function_permissions + - identifier: w_function_9c_function_10 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts + TEST_SUITE: src/__tests__/function_9c.test.ts|src/__tests__/function_10.test.ts depend-on: - build_windows - upb - - identifier: w_env_5_auth_9 + - identifier: w_function_permissions_env_5 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/env-5.test.ts|src/__tests__/auth_9.test.ts + TEST_SUITE: src/__tests__/function-permissions.test.ts|src/__tests__/env-5.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5b_schema_auth_8a + - identifier: w_auth_9_auth_5b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5b.test.ts|src/__tests__/schema-auth-8a.test.ts + TEST_SUITE: src/__tests__/auth_9.test.ts|src/__tests__/auth_5b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_7c_schema_auth_6d + - identifier: w_schema_auth_8a_schema_auth_7c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-7c.test.ts|src/__tests__/schema-auth-6d.test.ts + TEST_SUITE: src/__tests__/schema-auth-8a.test.ts|src/__tests__/schema-auth-7c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_6c_schema_auth_2b + - identifier: w_schema_auth_6d_schema_auth_6c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-6c.test.ts|src/__tests__/schema-auth-2b.test.ts + TEST_SUITE: src/__tests__/schema-auth-6d.test.ts|src/__tests__/schema-auth-6c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_11_c_notifications_analytics_compatibility_in_app_2 + - identifier: w_schema_auth_2b_schema_auth_11_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts + TEST_SUITE: src/__tests__/schema-auth-2b.test.ts|src/__tests__/schema-auth-11-c.test.ts + depend-on: + - build_windows + - upb + - identifier: w_notifications_analytics_compatibility_in_app_2_init_e + buildspec: codebuild_specs/run_e2e_tests_windows.yml + env: + type: WINDOWS_SERVER_2019_CONTAINER + image: $WINDOWS_IMAGE_2019 + variables: + TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts|src/__tests__/init_e.test.ts depend-on: - build_windows - upb - - identifier: w_init_e_global_sandbox_a + - identifier: w_global_sandbox_a_geo_import_1b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_e.test.ts|src/__tests__/global_sandbox-a.test.ts + TEST_SUITE: src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts depend-on: - build_windows - upb - - identifier: w_geo_import_1b_feature_flags + - identifier: w_feature_flags_auth_8c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-import-1b.test.ts|src/__tests__/feature-flags.test.ts + TEST_SUITE: src/__tests__/feature-flags.test.ts|src/__tests__/auth_8c.test.ts depend-on: - build_windows - upb - - identifier: w_auth_8c_auth_7a + - identifier: w_auth_7a_auth_4a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts + TEST_SUITE: src/__tests__/auth_7a.test.ts|src/__tests__/auth_4a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_4a_auth_3b + - identifier: w_auth_3b_auth_3a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_4a.test.ts|src/__tests__/auth_3b.test.ts + TEST_SUITE: src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_3a_function_migration + - identifier: w_function_migration_storage_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_3a.test.ts|src/__tests__/transformer-migrations/function-migration.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/function-migration.test.ts|src/__tests__/storage-3.test.ts depend-on: - build_windows - upb - - identifier: w_storage_3_schema_auth_9_c + - identifier: w_schema_auth_9_c_schema_auth_9_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts + TEST_SUITE: src/__tests__/schema-auth-9-c.test.ts|src/__tests__/schema-auth-9-a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_9_a_schema_auth_8b + - identifier: w_schema_auth_8b_schema_auth_5b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-9-a.test.ts|src/__tests__/schema-auth-8b.test.ts + TEST_SUITE: src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_5b_schema_auth_1a + - identifier: w_schema_auth_1a_geo_headless buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-5b.test.ts|src/__tests__/schema-auth-1a.test.ts + TEST_SUITE: src/__tests__/schema-auth-1a.test.ts|src/__tests__/geo-headless.test.ts depend-on: - build_windows - upb - - identifier: w_geo_headless_function_9a + - identifier: w_function_9a_export_pull_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts + TEST_SUITE: src/__tests__/function_9a.test.ts|src/__tests__/export-pull-a.test.ts depend-on: - build_windows - upb - - identifier: w_export_pull_a_api_7 + - identifier: w_api_7_api_10 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts + TEST_SUITE: src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts depend-on: - build_windows - upb - - identifier: w_api_10_api_key_migration5 + - identifier: w_api_key_migration5_schema_auth_9_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/api_10.test.ts|src/__tests__/migration/api.key.migration5.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-auth-9-b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_9_b_schema_auth_7b + - identifier: w_schema_auth_7b_schema_auth_7a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-9-b.test.ts|src/__tests__/schema-auth-7b.test.ts + TEST_SUITE: src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_7a_schema_auth_2a + - identifier: w_schema_auth_2a_schema_auth_1b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts + TEST_SUITE: src/__tests__/schema-auth-2a.test.ts|src/__tests__/schema-auth-1b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_1b_schema_auth_11_b + - identifier: w_schema_auth_11_b_predictions buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts + TEST_SUITE: src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts depend-on: - build_windows - upb - - identifier: w_predictions_layer_3 + - identifier: w_layer_3_hosting buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/predictions.test.ts|src/__tests__/layer-3.test.ts + TEST_SUITE: src/__tests__/layer-3.test.ts|src/__tests__/hosting.test.ts depend-on: - build_windows - upb - - identifier: w_hosting_geo_import_3 + - identifier: w_geo_import_3_geo_add_d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts + TEST_SUITE: src/__tests__/geo-import-3.test.ts|src/__tests__/geo-add-d.test.ts depend-on: - build_windows - upb - - identifier: w_geo_add_d_geo_add_c + - identifier: w_geo_add_c_delete buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-add-d.test.ts|src/__tests__/geo-add-c.test.ts + TEST_SUITE: src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts depend-on: - build_windows - upb - - identifier: w_delete_auth_1b + - identifier: w_auth_1b_auth_11 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/delete.test.ts|src/__tests__/auth_1b.test.ts + TEST_SUITE: src/__tests__/auth_1b.test.ts|src/__tests__/auth_11.test.ts depend-on: - build_windows - upb - - identifier: w_auth_11_predictions_migration + - identifier: w_predictions_migration_api_key_migration3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/predictions-migration.test.ts|src/__tests__/migration/api.key.migration3.test.ts depend-on: - build_windows - upb - - identifier: w_api_key_migration3_api_connection_migration + - identifier: w_api_connection_migration_init_special_case buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/migration/api.key.migration3.test.ts|src/__tests__/migration/api.connection.migration.test.ts + TEST_SUITE: src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts depend-on: - build_windows - upb - - identifier: w_init_special_case_export_pull_b + - identifier: w_export_pull_b_auth_7b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init-special-case.test.ts|src/__tests__/export-pull-b.test.ts + TEST_SUITE: src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts depend-on: - build_windows - upb - - identifier: w_auth_7b_api_6a + - identifier: w_api_6a_http_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_7b.test.ts|src/__tests__/api_6a.test.ts + TEST_SUITE: src/__tests__/api_6a.test.ts|src/__tests__/transformer-migrations/http-migration.test.ts depend-on: - build_windows - upb - - identifier: w_http_migration_schema_function_2 + - identifier: w_schema_function_2_schema_auth_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts + TEST_SUITE: src/__tests__/schema-function-2.test.ts|src/__tests__/schema-auth-3.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_3_schema_auth_12 + - identifier: w_schema_auth_12_schema_iterative_update_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-3.test.ts|src/__tests__/schema-auth-12.test.ts + TEST_SUITE: src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts depend-on: - build_windows - upb - - identifier: w_schema_iterative_update_3_schema_auth_5a + - identifier: w_schema_auth_5a_export_pull_d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-iterative-update-3.test.ts|src/__tests__/schema-auth-5a.test.ts + TEST_SUITE: src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts depend-on: - build_windows - upb - - identifier: w_export_pull_d_auth_8a + - identifier: w_auth_8a_auth_4b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/export-pull-d.test.ts|src/__tests__/auth_8a.test.ts + TEST_SUITE: src/__tests__/auth_8a.test.ts|src/__tests__/auth_4b.test.ts depend-on: - build_windows - upb - - identifier: w_auth_4b_auth_migration + - identifier: w_auth_migration_push buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/auth-migration.test.ts|src/__tests__/push.test.ts depend-on: - build_windows - upb - - identifier: w_push_parameter_store_2 + - identifier: w_parameter_store_2_parameter_store_1 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/push.test.ts|src/__tests__/parameter-store-2.test.ts + TEST_SUITE: src/__tests__/parameter-store-2.test.ts|src/__tests__/parameter-store-1.test.ts depend-on: - build_windows - upb - - identifier: w_parameter_store_1_notifications_sms_update + - identifier: w_notifications_sms_update_notifications_multi_env buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts + TEST_SUITE: src/__tests__/notifications-sms-update.test.ts|src/__tests__/notifications-multi-env.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_multi_env_minify_cloudformation + - identifier: w_minify_cloudformation_init_force_push buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-multi-env.test.ts|src/__tests__/minify-cloudformation.test.ts + TEST_SUITE: src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts depend-on: - build_windows - upb - - identifier: w_init_force_push_help + - identifier: w_help_function_2d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init-force-push.test.ts|src/__tests__/help.test.ts + TEST_SUITE: src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts depend-on: - build_windows - upb - - identifier: w_function_2d_function_14 + - identifier: w_function_14_function_13 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_2d.test.ts|src/__tests__/function_14.test.ts + TEST_SUITE: src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts depend-on: - build_windows - upb - - identifier: w_function_13_function_12 + - identifier: w_function_12_export_pull_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_13.test.ts|src/__tests__/function_12.test.ts + TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts depend-on: - build_windows - upb - - identifier: w_export_pull_c_build_function + - identifier: w_build_function_build_function_yarn_modern buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/export-pull-c.test.ts|src/__tests__/build-function.test.ts + TEST_SUITE: src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts depend-on: - build_windows - upb - - identifier: w_build_function_yarn_modern_auth_5g + - identifier: w_auth_5g_auth_2h buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts + TEST_SUITE: src/__tests__/auth_5g.test.ts|src/__tests__/auth_2h.test.ts depend-on: - build_windows - upb - - identifier: w_auth_2h_api_9a + - identifier: w_api_9a_api_6c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_2h.test.ts|src/__tests__/api_9a.test.ts + TEST_SUITE: src/__tests__/api_9a.test.ts|src/__tests__/api_6c.test.ts depend-on: - build_windows - upb @@ -2137,16 +2152,6 @@ batch: depend-on: - build_windows - upb - - identifier: w_studio_modelgen - buildspec: codebuild_specs/run_e2e_tests_windows.yml - env: - type: WINDOWS_SERVER_2019_CONTAINER - image: $WINDOWS_IMAGE_2019 - variables: - TEST_SUITE: src/__tests__/studio-modelgen.test.ts - depend-on: - - build_windows - - upb - identifier: w_env_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: @@ -2187,16 +2192,6 @@ batch: depend-on: - build_windows - upb - - identifier: w_api_6c - buildspec: codebuild_specs/run_e2e_tests_windows.yml - env: - type: WINDOWS_SERVER_2019_CONTAINER - image: $WINDOWS_IMAGE_2019 - variables: - TEST_SUITE: src/__tests__/api_6c.test.ts - depend-on: - - build_windows - - upb - identifier: w_js_frontend_config buildspec: codebuild_specs/run_e2e_tests_windows.yml env: diff --git a/codebuild_specs/wait_for_ids.json b/codebuild_specs/wait_for_ids.json index 3c6ac7d3d1f..17b05c5e793 100644 --- a/codebuild_specs/wait_for_ids.json +++ b/codebuild_specs/wait_for_ids.json @@ -4,62 +4,64 @@ "l_analytics_pinpoint_flutter_analytics_kinesis_notifications_analytics_compatibility_sms_2", "l_android_notifications_pinpoint_config_android_analytics_pinpoint_config_opensearch_simulator", "l_api_2b_api_2a_amplify_remove", + "l_api_3_layer_1_api_1", "l_api_4_schema_auth_10_schema_key", - "l_api_6c", - "l_api_7_api_10_api_key_migration5", + "l_api_5_api_key_migration2_api_lambda_auth_1", + "l_api_6a_http_migration_schema_function_2", + "l_api_9a_api_6c", "l_api_connection_migration2_storage_4_containers_api_secrets", - "l_api_connection_migration_init_special_case_function_3a_python", - "l_api_key_migration1_api_6b_api_3", - "l_api_key_migration2_api_lambda_auth_1_schema_auth_14", - "l_auth_11_predictions_migration_api_key_migration3", + "l_api_key_migration3_api_connection_migration_init_special_case", + "l_api_key_migration4_schema_iterative_update_4", + "l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b", + "l_auth_10_init_f_init_d", + "l_auth_1a_auth_trigger_schema_versioned", + "l_auth_1b_auth_11_predictions_migration", "l_auth_2b_auth_2a_analytics_pinpoint_js", "l_auth_2c", "l_auth_2e", - "l_auth_2g_auth_12_api_9a", - "l_auth_3b_auth_3a_function_migration", - "l_auth_4b_auth_migration_push", - "l_auth_5a_auth_4c_auth_3c", + "l_auth_2h_auth_2g_auth_12", + "l_auth_4a_auth_3b_auth_3a", + "l_auth_4c_auth_3c_schema_auth_8c", "l_auth_5b_schema_auth_8a_schema_auth_7c", - "l_auth_8b_auth_5e_auth_1c", - "l_auth_8c_auth_7a_auth_4a", - "l_build_function_yarn_modern_auth_5g_auth_2h", - "l_configure_project_auth_5d_tags", - "l_container_hosting_auth_10_init_f", + "l_auth_5d_tags_schema_model_a", + "l_auth_5e_auth_1c_schema_predictions", + "l_auth_5f_model_migration_schema_auth_5c", + "l_auth_8a_auth_4b_auth_migration", + "l_build_function_build_function_yarn_modern_auth_5g", "l_containers_api_1", "l_containers_api_2", - "l_custom_policies_function_auth_1a_auth_trigger", - "l_custom_transformers_with_babel_config_notifications_in_app_messaging_env_2", + "l_custom_resources_auth_9", "l_datastore_modelgen", "l_diagnose_mock_api_hooks_a", + "l_env_1_auth_5c_auth_5a", + "l_env_2_amplify_configure_layer_4", "l_env_3", - "l_env_4_auth_5f_model_migration", - "l_env_5_custom_resources_auth_9", - "l_export_pull_b_auth_7b_api_6a", - "l_export_pull_c_custom_resource_with_storage_build_function", - "l_function_14_function_13_function_12", - "l_function_2c_storage_2_function_6", - "l_function_3a_nodejs_function_3a_go_function_3a_dotnet", + "l_export_pull_a_api_7_api_10", + "l_feature_flags_auth_8c_auth_7a", + "l_function_10_function_permissions_env_5", + "l_function_12_export_pull_c_custom_resource_with_storage", + "l_function_15_function_14_function_13", + "l_function_1_storage_5", + "l_function_3a_dotnet_export_pull_b_auth_7b", + "l_function_3a_python_function_3a_nodejs_function_3a_go", + "l_function_4_function_3b_function_2c", "l_function_7_function_2b_function_11", "l_function_9b_custom_policies_container_api_9b", - "l_function_9c_function_10_function_permissions", + "l_function_migration_storage_3_schema_auth_9_c", "l_general_config_headless_init_dynamodb_simulator_user_groups", - "l_geo_add_a_env_1_auth_5c", - "l_geo_add_c_delete_auth_1b", + "l_geo_add_d_geo_add_c_delete", "l_geo_add_e", "l_geo_add_f", - "l_geo_headless_function_9a_export_pull_a", + "l_geo_import_2_geo_import_1a_function_9c", "l_geo_remove_1", "l_geo_remove_2", "l_geo_remove_3", "l_geo_update_1", "l_geo_update_2", - "l_global_sandbox_a_geo_import_1b_feature_flags", - "l_global_sandbox_b_geo_import_2_geo_import_1a", - "l_help_function_2d_function_15", - "l_hooks_b_global_sandbox_c_analytics_2", + "l_global_sandbox_c_analytics_2_pull", + "l_hooks_c_help_function_2d", "l_hostingPROD", - "l_hosting_geo_import_3_geo_add_d", - "l_http_migration_schema_function_2_schema_auth_3", + "l_iam_permissions_boundary_export_node_function", "l_import_auth_1a", "l_import_auth_1b", "l_import_auth_2a", @@ -74,177 +76,175 @@ "l_import_s3_2b", "l_import_s3_2c", "l_import_s3_3", - "l_init_d_env_2_amplify_configure", + "l_init_c_git_clone_attach_configure_project", + "l_init_e_global_sandbox_a_geo_import_1b", "l_ios_analytics_pinpoint_config_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config", "l_javascript_notifications_pinpoint_config_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config", "l_js_frontend_config", - "l_layer_1_api_1_api_key_migration4", - "l_layer_4_init_c_git_clone_attach", - "l_minify_cloudformation_init_force_push_hooks_c", - "l_node_function_schema_model_d_schema_model_b", - "l_notifications_analytics_compatibility_in_app_1_plugin_notifications_analytics_compatibility_sms_1", - "l_notifications_fcm_notifications_apns_init_b", + "l_layer_3_hosting_geo_import_3", + "l_notifications_analytics_compatibility_in_app_1_studio_modelgen", + "l_notifications_apns_init_b_container_hosting", "l_notifications_in_app_messaging", "l_notifications_lifecycle_auth_2f_auth_2d", - "l_notifications_sms_iam_permissions_boundary_export", - "l_parameter_store_1_notifications_sms_update_notifications_multi_env", - "l_pull_2_pr_previews_multi_env_1_parameter_store_2", - "l_pull_notifications_sms_pull_notifications_in_app_messaging_env_1", + "l_notifications_multi_env_minify_cloudformation_init_force_push", + "l_notifications_sms_pull_notifications_in_app_messaging_env_1_custom_transformers", + "l_parameter_store_2_parameter_store_1_notifications_sms_update", + "l_plugin_notifications_analytics_compatibility_sms_1_hooks_b", + "l_push_pull_2_pr_previews_multi_env_1", "l_resolvers_geo_multi_env_searchable_datastore", + "l_s3_sse_geo_add_b_auth_8b", "l_schema_auth_11_a", - "l_schema_auth_11_b_predictions_layer_3", - "l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2_init_e", - "l_schema_auth_12_schema_iterative_update_3_schema_iterative_rollback_2", + "l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2", "l_schema_auth_13_layer_2_api_lambda_auth_2", + "l_schema_auth_14_api_key_migration1_api_6b", "l_schema_auth_15", - "l_schema_auth_4a_s3_sse_geo_add_b", - "l_schema_auth_5a_export_pull_d_auth_8a", - "l_schema_auth_5c_schema_auth_4c_init_a", - "l_schema_auth_6a_schema_auth_4d_frontend_config_drift", + "l_schema_auth_1a_geo_headless_function_9a", + "l_schema_auth_1b_schema_auth_11_b_predictions", + "l_schema_auth_3_schema_auth_12_schema_iterative_update_3", + "l_schema_auth_4c_init_a_geo_add_a", + "l_schema_auth_4d_frontend_config_drift_env_4", + "l_schema_auth_6b_schema_auth_5d_global_sandbox_b", "l_schema_auth_6d_schema_auth_6c_schema_auth_2b", - "l_schema_auth_7a_schema_auth_2a_schema_auth_1b", - "l_schema_auth_8b_schema_auth_5b_schema_auth_1a", - "l_schema_auth_8c_schema_auth_6b_schema_auth_5d", + "l_schema_auth_7b_schema_auth_7a_schema_auth_2a", + "l_schema_auth_9_a_schema_auth_8b_schema_auth_5b", "l_schema_connection_1", "l_schema_connection_2_function_2a_auth_6", - "l_schema_iterative_rollback_1_schema_auth_9_b_schema_auth_7b", + "l_schema_iterative_rollback_2_schema_auth_5a_export_pull_d", "l_schema_iterative_update_1_function_5_schema_function_1", - "l_schema_iterative_update_4_function_1_storage_5", "l_schema_iterative_update_locking_function_8_api_8", - "l_schema_model_a_function_4_function_3b", - "l_schema_predictions_schema_model_c_schema_data_access_patterns", - "l_schema_searchable_apigw_api_5", - "l_schema_versioned_schema_model_e_schema_auth_4b", + "l_schema_model_c_schema_data_access_patterns_schema_auth_6a", + "l_schema_model_d_schema_model_b_schema_auth_4a", + "l_schema_model_e_schema_auth_4b_notifications_sms", + "l_schema_searchable_apigw", "l_searchable_migration", "l_smoketest_amplify_app", "l_storage_1b_storage_1a_schema_iterative_update_2", - "l_storage_3_schema_auth_9_c_schema_auth_9_a", - "l_studio_modelgen", + "l_storage_2_function_6_custom_policies_function", "l_uibuilder", "l_user_groups_s3_access_hosted_ui_admin_api", + "l_with_babel_config_notifications_in_app_messaging_env_2_notifications_fcm", "w_admin_api_schema_iterative_update_locking", + "w_amplify_configure_layer_4", "w_amplify_remove_smoketest", - "w_analytics_2_notifications_sms_pull", "w_analytics_pinpoint_flutter_analytics_kinesis", - "w_api_10_api_key_migration5", "w_api_1_api_key_migration4", "w_api_2b_api_2a", "w_api_3_layer_1", "w_api_4_schema_auth_10", "w_api_5_api_key_migration2", - "w_api_6c", + "w_api_6a_http_migration", + "w_api_7_api_10", "w_api_8_schema_auth_13", + "w_api_9a_api_6c", "w_api_9b_function_2b", + "w_api_connection_migration_init_special_case", "w_api_key_migration1_api_6b", - "w_api_key_migration3_api_connection_migration", + "w_api_key_migration5_schema_auth_9_b", "w_api_lambda_auth_1_schema_auth_14", "w_api_lambda_auth_2_schema_iterative_update_1", - "w_auth_10_init_f", - "w_auth_11_predictions_migration", - "w_auth_1c_schema_predictions", + "w_auth_1a_auth_trigger", + "w_auth_1b_auth_11", "w_auth_2a_analytics_pinpoint_js", "w_auth_2c", "w_auth_2d_auth_2b", "w_auth_2e", - "w_auth_2h_api_9a", - "w_auth_3a_function_migration", - "w_auth_3c_schema_auth_8c", - "w_auth_4a_auth_3b", - "w_auth_4b_auth_migration", - "w_auth_5a_auth_4c", - "w_auth_5b_schema_auth_8a", - "w_auth_5f_model_migration", + "w_auth_3b_auth_3a", + "w_auth_4c_auth_3c", + "w_auth_5c_auth_5a", + "w_auth_5d_tags", + "w_auth_5e_auth_1c", + "w_auth_5g_auth_2h", "w_auth_6_storage_1b", - "w_auth_7b_api_6a", - "w_auth_8b_auth_5e", - "w_auth_8c_auth_7a", - "w_auth_trigger_schema_versioned", - "w_build_function_yarn_modern_auth_5g", - "w_configure_project_auth_5d", + "w_auth_7a_auth_4a", + "w_auth_8a_auth_4b", + "w_auth_9_auth_5b", + "w_auth_migration_push", + "w_build_function_build_function_yarn_modern", + "w_container_hosting_auth_10", "w_containers_api_1", "w_containers_api_2", - "w_custom_policies_function_auth_1a", - "w_delete_auth_1b", + "w_custom_transformers_with_babel_config", "w_dynamodb_simulator_user_groups", - "w_env_1_auth_5c", "w_env_3", - "w_env_5_auth_9", - "w_export_pull_a_api_7", - "w_export_pull_c_build_function", - "w_export_pull_d_auth_8a", - "w_frontend_config_drift_env_4", - "w_function_10_function_permissions", + "w_env_4_auth_5f", + "w_export_pull_b_auth_7b", + "w_feature_flags_auth_8c", "w_function_11_api_connection_migration2", - "w_function_13_function_12", - "w_function_2c_storage_2", - "w_function_2d_function_14", + "w_function_12_export_pull_c", + "w_function_14_function_13", "w_function_5_schema_function_1", + "w_function_9a_export_pull_a", "w_function_9b_custom_policies_container", - "w_geo_add_d_geo_add_c", - "w_geo_headless_function_9a", - "w_geo_import_1a_function_9c", - "w_geo_import_1b_feature_flags", + "w_function_9c_function_10", + "w_function_migration_storage_3", + "w_function_permissions_env_5", + "w_geo_add_a_env_1", + "w_geo_add_b_auth_8b", + "w_geo_add_c_delete", + "w_geo_import_2_geo_import_1a", + "w_geo_import_3_geo_add_d", "w_geo_multi_env_searchable_datastore", "w_geo_remove_1", - "w_global_sandbox_b_geo_import_2", - "w_hooks_b_global_sandbox_c", + "w_global_sandbox_a_geo_import_1b", + "w_global_sandbox_c_analytics_2", + "w_help_function_2d", "w_hostingPROD", - "w_hosting_geo_import_3", - "w_http_migration_schema_function_2", + "w_iam_permissions_boundary_node_function", "w_import_dynamodb_1", "w_import_s3_1", "w_import_s3_3", - "w_init_a_geo_add_a", - "w_init_b_container_hosting", - "w_init_d_amplify_configure", - "w_init_e_global_sandbox_a", - "w_init_force_push_help", - "w_init_special_case_export_pull_b", + "w_init_c_configure_project", + "w_init_f_init_d", "w_js_frontend_config", - "w_layer_4_init_c", - "w_node_function_schema_model_d", + "w_layer_3_hosting", + "w_minify_cloudformation_init_force_push", + "w_model_migration_schema_auth_5c", + "w_notifications_analytics_compatibility_in_app_2_init_e", + "w_notifications_analytics_compatibility_sms_1_hooks_b", "w_notifications_analytics_compatibility_sms_2_notifications_analytics_compatibility_in_app_1", - "w_notifications_fcm_notifications_apns", + "w_notifications_apns_init_b", "w_notifications_in_app_messaging", - "w_notifications_in_app_messaging_env_1_custom_transformers", + "w_notifications_in_app_messaging_env_2_notifications_fcm", "w_notifications_lifecycle_auth_2f", - "w_notifications_multi_env_minify_cloudformation", - "w_notifications_sms_iam_permissions_boundary", - "w_parameter_store_1_notifications_sms_update", - "w_plugin_notifications_analytics_compatibility_sms_1", - "w_predictions_layer_3", - "w_push_parameter_store_2", - "w_s3_sse_geo_add_b", + "w_notifications_sms_pull_notifications_in_app_messaging_env_1", + "w_notifications_sms_update_notifications_multi_env", + "w_parameter_store_2_parameter_store_1", + "w_predictions_migration_api_key_migration3", "w_schema_auth_11_a", - "w_schema_auth_11_c_notifications_analytics_compatibility_in_app_2", + "w_schema_auth_11_b_predictions", + "w_schema_auth_12_schema_iterative_update_3", "w_schema_auth_15", - "w_schema_auth_1b_schema_auth_11_b", - "w_schema_auth_3_schema_auth_12", - "w_schema_auth_5b_schema_auth_1a", - "w_schema_auth_5c_schema_auth_4c", - "w_schema_auth_6a_schema_auth_4d", - "w_schema_auth_6b_schema_auth_5d", - "w_schema_auth_6c_schema_auth_2b", - "w_schema_auth_7a_schema_auth_2a", - "w_schema_auth_7c_schema_auth_6d", - "w_schema_auth_9_a_schema_auth_8b", - "w_schema_auth_9_b_schema_auth_7b", + "w_schema_auth_1a_geo_headless", + "w_schema_auth_2a_schema_auth_1b", + "w_schema_auth_2b_schema_auth_11_c", + "w_schema_auth_4a_s3_sse", + "w_schema_auth_4b_notifications_sms", + "w_schema_auth_4c_init_a", + "w_schema_auth_4d_frontend_config_drift", + "w_schema_auth_5a_export_pull_d", + "w_schema_auth_5d_global_sandbox_b", + "w_schema_auth_6d_schema_auth_6c", + "w_schema_auth_7b_schema_auth_7a", + "w_schema_auth_8a_schema_auth_7c", + "w_schema_auth_8b_schema_auth_5b", + "w_schema_auth_8c_schema_auth_6b", + "w_schema_auth_9_c_schema_auth_9_a", "w_schema_connection_1", "w_schema_connection_2_function_2a", - "w_schema_iterative_update_3_schema_auth_5a", + "w_schema_data_access_patterns_schema_auth_6a", + "w_schema_function_2_schema_auth_3", "w_schema_iterative_update_4_function_1", "w_schema_key_resolvers", - "w_schema_model_b_schema_auth_4a", - "w_schema_model_c_schema_data_access_patterns", - "w_schema_model_e_schema_auth_4b", + "w_schema_model_a_function_2c", + "w_schema_model_d_schema_model_b", + "w_schema_predictions_schema_model_c", "w_schema_searchable_apigw", + "w_schema_versioned_schema_model_e", "w_searchable_migration", "w_smoketest_ios_general_config_headless_init", "w_storage_1a_schema_iterative_update_2", - "w_storage_3_schema_auth_9_c", + "w_storage_2_custom_policies_function", "w_storage_4_containers_api_secrets", - "w_studio_modelgen", - "w_tags_schema_model_a", - "w_user_groups_s3_access_hosted_ui", - "w_with_babel_config_notifications_in_app_messaging_env_2" + "w_studio_modelgen_plugin", + "w_user_groups_s3_access_hosted_ui" ] diff --git a/scripts/split-e2e-tests-codebuild.ts b/scripts/split-e2e-tests-codebuild.ts index 4b7eab9f8cb..3f03d5772dc 100644 --- a/scripts/split-e2e-tests-codebuild.ts +++ b/scripts/split-e2e-tests-codebuild.ts @@ -9,7 +9,6 @@ const CODEBUILD_GENERATE_CONFIG_PATH = join(REPO_ROOT, 'codebuild_specs', 'e2e_w const RUN_SOLO = [ 'src/__tests__/auth_2c.test.ts', 'src/__tests__/auth_2e.test.ts', - 'src/__tests__/api_6c.test.ts', 'src/__tests__/aws-exports/js-frontend-config.test.ts', 'src/__tests__/containers-api-1.test.ts', 'src/__tests__/containers-api-2.test.ts', @@ -40,10 +39,17 @@ const RUN_SOLO = [ 'src/__tests__/schema-auth-11-a.test.ts', 'src/__tests__/schema-auth-15.test.ts', 'src/__tests__/schema-connection-1.test.ts', - 'src/__tests__/studio-modelgen.test.ts', 'src/__tests__/transformer-migrations/searchable-migration.test.ts', 'src/__tests__/uibuilder.test.ts', ]; +const RUN_DUO = [ + 'src/__tests__/api_6c.test.ts', + 'src/__tests__/auth_9.test.ts', + 'src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts', + 'src/__tests__/schema-iterative-update-4.test.ts', + 'src/__tests__/schema-searchable.test.ts', + 'src/__tests__/studio-modelgen.test.ts', +]; const DISABLE_COVERAGE = [ 'src/__tests__/datastore-modelgen.test.ts', 'src/__tests__/amplify-app.test.ts', @@ -197,7 +203,7 @@ const splitTestsV3 = ( const soloJobs = []; const osJobs = [createRandomJob(os)]; for (let test of testSuites) { - const currentJob = osJobs[osJobs.length - 1]; + let currentJob = osJobs[osJobs.length - 1]; // if the current test is excluded from this OS, skip it if (TEST_EXCLUSIONS[os].find((excluded) => test === excluded)) { @@ -223,6 +229,16 @@ const splitTestsV3 = ( continue; } + let maxWorkers = os === 'w' ? MAX_WORKERS_WINDOWS : MAX_WORKERS; + if (os === 'l' && (RUN_DUO.find((duo) => test === duo) || currentJob.tests.some((duo) => RUN_DUO.includes(duo)))) { + maxWorkers = 2; + // if a job already has 2 tests, set up a new job - this will mean some jobs that can run as 3 will be running as 2 + if (currentJob.tests.length === maxWorkers) { + osJobs.push(createRandomJob(os)); + currentJob = osJobs[osJobs.length - 1]; + } + } + // add the test currentJob.tests.push(test); if (FORCE_REGION) { @@ -232,7 +248,6 @@ const splitTestsV3 = ( currentJob.useParentAccount = true; } - const maxWorkers = os === 'w' ? MAX_WORKERS_WINDOWS : MAX_WORKERS; // create a new job once the current job is full; if (currentJob.tests.length >= maxWorkers) { osJobs.push(createRandomJob(os)); From d125cadc101916a7a2b5cf33ceb78a8c3d2e6267 Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Thu, 9 Oct 2025 17:55:34 -0400 Subject: [PATCH 50/51] Revert "fix: e2e test stability" This reverts commit 58ef1c76c5ac2b9932cefed2b41dfbd6a93dc423. --- codebuild_specs/e2e_workflow_generated.yml | 615 +++++++++++---------- codebuild_specs/wait_for_ids.json | 284 +++++----- scripts/split-e2e-tests-codebuild.ts | 23 +- 3 files changed, 456 insertions(+), 466 deletions(-) diff --git a/codebuild_specs/e2e_workflow_generated.yml b/codebuild_specs/e2e_workflow_generated.yml index 96b988e69be..c121e692520 100644 --- a/codebuild_specs/e2e_workflow_generated.yml +++ b/codebuild_specs/e2e_workflow_generated.yml @@ -168,200 +168,193 @@ batch: TEST_SUITE: src/__tests__/analytics-pinpoint-flutter.test.ts|src/__tests__/analytics-kinesis.test.ts|src/__tests__/notifications-analytics-compatibility-sms-2.test.ts depend-on: - upb - - identifier: l_notifications_analytics_compatibility_in_app_1_studio_modelgen + - identifier: l_notifications_analytics_compatibility_in_app_1_plugin_notifications_analytics_compatibility_sms_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-1.test.ts|src/__tests__/studio-modelgen.test.ts + TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-1.test.ts|src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts depend-on: - upb - - identifier: l_plugin_notifications_analytics_compatibility_sms_1_hooks_b + - identifier: l_hooks_b_global_sandbox_c_analytics_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts|src/__tests__/hooks-b.test.ts + TEST_SUITE: src/__tests__/hooks-b.test.ts|src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts depend-on: - upb - - identifier: l_global_sandbox_c_analytics_2_pull + - identifier: l_pull_notifications_sms_pull_notifications_in_app_messaging_env_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts|src/__tests__/pull.test.ts + TEST_SUITE: src/__tests__/pull.test.ts|src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts depend-on: - upb - - identifier: l_notifications_sms_pull_notifications_in_app_messaging_env_1_custom_transformers + - identifier: l_custom_transformers_with_babel_config_notifications_in_app_messaging_env_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts|src/__tests__/graphql-v2/custom-transformers.test.ts + TEST_SUITE: src/__tests__/graphql-v2/custom-transformers.test.ts|src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts depend-on: - upb - - identifier: l_with_babel_config_notifications_in_app_messaging_env_2_notifications_fcm + - identifier: l_notifications_fcm_notifications_apns_init_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts|src/__tests__/notifications-fcm.test.ts + TEST_SUITE: src/__tests__/notifications-fcm.test.ts|src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts depend-on: - upb - - identifier: l_notifications_apns_init_b_container_hosting + - identifier: l_container_hosting_auth_10_init_f buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts|src/__tests__/container-hosting.test.ts + TEST_SUITE: src/__tests__/container-hosting.test.ts|src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts depend-on: - upb - - identifier: l_auth_10_init_f_init_d + - identifier: l_init_d_env_2_amplify_configure buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts|src/__tests__/init_d.test.ts + TEST_SUITE: src/__tests__/init_d.test.ts|src/__tests__/env-2.test.ts|src/__tests__/amplify-configure.test.ts depend-on: - upb - - identifier: l_env_2_amplify_configure_layer_4 + - identifier: l_layer_4_init_c_git_clone_attach buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/env-2.test.ts|src/__tests__/amplify-configure.test.ts|src/__tests__/layer-4.test.ts + TEST_SUITE: src/__tests__/layer-4.test.ts|src/__tests__/init_c.test.ts|src/__tests__/git-clone-attach.test.ts depend-on: - upb - - identifier: l_init_c_git_clone_attach_configure_project + - identifier: l_configure_project_auth_5d_tags buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/init_c.test.ts|src/__tests__/git-clone-attach.test.ts|src/__tests__/configure-project.test.ts + TEST_SUITE: src/__tests__/configure-project.test.ts|src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts depend-on: - upb - - identifier: l_auth_5d_tags_schema_model_a + - identifier: l_schema_model_a_function_4_function_3b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts|src/__tests__/schema-model-a.test.ts + TEST_SUITE: src/__tests__/schema-model-a.test.ts|src/__tests__/function_4.test.ts|src/__tests__/function_3b.test.ts depend-on: - upb - - identifier: l_function_4_function_3b_function_2c + - identifier: l_function_2c_storage_2_function_6 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_4.test.ts|src/__tests__/function_3b.test.ts|src/__tests__/function_2c.test.ts + TEST_SUITE: src/__tests__/function_2c.test.ts|src/__tests__/storage-2.test.ts|src/__tests__/function_6.test.ts depend-on: - upb - - identifier: l_storage_2_function_6_custom_policies_function + - identifier: l_custom_policies_function_auth_1a_auth_trigger buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/storage-2.test.ts|src/__tests__/function_6.test.ts|src/__tests__/custom_policies_function.test.ts + TEST_SUITE: src/__tests__/custom_policies_function.test.ts|src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts depend-on: - upb - - identifier: l_auth_1a_auth_trigger_schema_versioned + - identifier: l_schema_versioned_schema_model_e_schema_auth_4b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts|src/__tests__/schema-versioned.test.ts + TEST_SUITE: src/__tests__/schema-versioned.test.ts|src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts depend-on: - upb - - identifier: l_schema_model_e_schema_auth_4b_notifications_sms + - identifier: l_notifications_sms_iam_permissions_boundary_export buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts|src/__tests__/notifications-sms.test.ts + TEST_SUITE: src/__tests__/notifications-sms.test.ts|src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/export.test.ts depend-on: - upb - - identifier: l_iam_permissions_boundary_export_node_function + - identifier: l_node_function_schema_model_d_schema_model_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/export.test.ts|src/__tests__/migration/node.function.test.ts + TEST_SUITE: src/__tests__/migration/node.function.test.ts|src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts depend-on: - upb - - identifier: l_schema_model_d_schema_model_b_schema_auth_4a + - identifier: l_schema_auth_4a_s3_sse_geo_add_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts|src/__tests__/schema-auth-4a.test.ts + TEST_SUITE: src/__tests__/schema-auth-4a.test.ts|src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts depend-on: - upb - - identifier: l_s3_sse_geo_add_b_auth_8b + - identifier: l_auth_8b_auth_5e_auth_1c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts|src/__tests__/auth_8b.test.ts + TEST_SUITE: src/__tests__/auth_8b.test.ts|src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts depend-on: - upb - - identifier: l_auth_5e_auth_1c_schema_predictions + - identifier: l_schema_predictions_schema_model_c_schema_data_access_patterns buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts|src/__tests__/schema-predictions.test.ts + TEST_SUITE: src/__tests__/schema-predictions.test.ts|src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts depend-on: - upb - - identifier: l_schema_model_c_schema_data_access_patterns_schema_auth_6a + - identifier: l_schema_auth_6a_schema_auth_4d_frontend_config_drift buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts|src/__tests__/schema-auth-6a.test.ts + TEST_SUITE: src/__tests__/schema-auth-6a.test.ts|src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts depend-on: - upb - - identifier: l_schema_auth_4d_frontend_config_drift_env_4 + - identifier: l_env_4_auth_5f_model_migration buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts|src/__tests__/env-4.test.ts + TEST_SUITE: src/__tests__/env-4.test.ts|src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts depend-on: - upb - - identifier: l_auth_5f_model_migration_schema_auth_5c + - identifier: l_schema_auth_5c_schema_auth_4c_init_a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts|src/__tests__/schema-auth-5c.test.ts + TEST_SUITE: src/__tests__/schema-auth-5c.test.ts|src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts depend-on: - upb - - identifier: l_schema_auth_4c_init_a_geo_add_a + - identifier: l_geo_add_a_env_1_auth_5c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts|src/__tests__/geo-add-a.test.ts + TEST_SUITE: src/__tests__/geo-add-a.test.ts|src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts depend-on: - upb - - identifier: l_env_1_auth_5c_auth_5a + - identifier: l_auth_5a_auth_4c_auth_3c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts|src/__tests__/auth_5a.test.ts + TEST_SUITE: src/__tests__/auth_5a.test.ts|src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts depend-on: - upb - - identifier: l_auth_4c_auth_3c_schema_auth_8c + - identifier: l_schema_auth_8c_schema_auth_6b_schema_auth_5d buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts|src/__tests__/schema-auth-8c.test.ts + TEST_SUITE: src/__tests__/schema-auth-8c.test.ts|src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts depend-on: - upb - - identifier: l_schema_auth_6b_schema_auth_5d_global_sandbox_b + - identifier: l_global_sandbox_b_geo_import_2_geo_import_1a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts|src/__tests__/global_sandbox-b.test.ts + TEST_SUITE: src/__tests__/global_sandbox-b.test.ts|src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts depend-on: - upb - - identifier: l_geo_import_2_geo_import_1a_function_9c + - identifier: l_function_9c_function_10_function_permissions buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts|src/__tests__/function_9c.test.ts + TEST_SUITE: src/__tests__/function_9c.test.ts|src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts depend-on: - upb - - identifier: l_function_10_function_permissions_env_5 + - identifier: l_env_5_custom_resources_auth_9 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts|src/__tests__/env-5.test.ts - depend-on: - - upb - - identifier: l_custom_resources_auth_9 - buildspec: codebuild_specs/run_e2e_tests_linux.yml - env: - variables: - TEST_SUITE: src/__tests__/custom_resources.test.ts|src/__tests__/auth_9.test.ts + TEST_SUITE: src/__tests__/env-5.test.ts|src/__tests__/custom_resources.test.ts|src/__tests__/auth_9.test.ts depend-on: - upb - identifier: l_auth_5b_schema_auth_8a_schema_auth_7c @@ -378,215 +371,208 @@ batch: TEST_SUITE: src/__tests__/schema-auth-6d.test.ts|src/__tests__/schema-auth-6c.test.ts|src/__tests__/schema-auth-2b.test.ts depend-on: - upb - - identifier: l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2 + - identifier: l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2_init_e buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts + TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts|src/__tests__/init_e.test.ts depend-on: - upb - - identifier: l_init_e_global_sandbox_a_geo_import_1b + - identifier: l_global_sandbox_a_geo_import_1b_feature_flags buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/init_e.test.ts|src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts + TEST_SUITE: src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts|src/__tests__/feature-flags.test.ts depend-on: - upb - - identifier: l_feature_flags_auth_8c_auth_7a + - identifier: l_auth_8c_auth_7a_auth_4a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/feature-flags.test.ts|src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts + TEST_SUITE: src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts|src/__tests__/auth_4a.test.ts depend-on: - upb - - identifier: l_auth_4a_auth_3b_auth_3a + - identifier: l_auth_3b_auth_3a_function_migration buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_4a.test.ts|src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts + TEST_SUITE: src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts|src/__tests__/transformer-migrations/function-migration.test.ts depend-on: - upb - - identifier: l_function_migration_storage_3_schema_auth_9_c + - identifier: l_storage_3_schema_auth_9_c_schema_auth_9_a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/transformer-migrations/function-migration.test.ts|src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts + TEST_SUITE: src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts|src/__tests__/schema-auth-9-a.test.ts depend-on: - upb - - identifier: l_schema_auth_9_a_schema_auth_8b_schema_auth_5b + - identifier: l_schema_auth_8b_schema_auth_5b_schema_auth_1a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-9-a.test.ts|src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts + TEST_SUITE: src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts|src/__tests__/schema-auth-1a.test.ts depend-on: - upb - - identifier: l_schema_auth_1a_geo_headless_function_9a + - identifier: l_geo_headless_function_9a_export_pull_a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-1a.test.ts|src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts + TEST_SUITE: src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts|src/__tests__/export-pull-a.test.ts depend-on: - upb - - identifier: l_export_pull_a_api_7_api_10 + - identifier: l_api_7_api_10_api_key_migration5 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts + TEST_SUITE: src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts|src/__tests__/migration/api.key.migration5.test.ts depend-on: - upb - - identifier: l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b + - identifier: l_schema_iterative_rollback_1_schema_auth_9_b_schema_auth_7b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-iterative-rollback-1.test.ts|src/__tests__/schema-auth-9-b.test.ts + TEST_SUITE: src/__tests__/schema-iterative-rollback-1.test.ts|src/__tests__/schema-auth-9-b.test.ts|src/__tests__/schema-auth-7b.test.ts depend-on: - upb - - identifier: l_schema_auth_7b_schema_auth_7a_schema_auth_2a + - identifier: l_schema_auth_7a_schema_auth_2a_schema_auth_1b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts + TEST_SUITE: src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts|src/__tests__/schema-auth-1b.test.ts depend-on: - upb - - identifier: l_schema_auth_1b_schema_auth_11_b_predictions + - identifier: l_schema_auth_11_b_predictions_layer_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts + TEST_SUITE: src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts|src/__tests__/layer-3.test.ts depend-on: - upb - - identifier: l_layer_3_hosting_geo_import_3 + - identifier: l_hosting_geo_import_3_geo_add_d buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/layer-3.test.ts|src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts + TEST_SUITE: src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts|src/__tests__/geo-add-d.test.ts depend-on: - upb - - identifier: l_geo_add_d_geo_add_c_delete + - identifier: l_geo_add_c_delete_auth_1b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/geo-add-d.test.ts|src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts + TEST_SUITE: src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts|src/__tests__/auth_1b.test.ts depend-on: - upb - - identifier: l_auth_1b_auth_11_predictions_migration + - identifier: l_auth_11_predictions_migration_api_key_migration3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_1b.test.ts|src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts + TEST_SUITE: src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts|src/__tests__/migration/api.key.migration3.test.ts depend-on: - upb - - identifier: l_api_key_migration3_api_connection_migration_init_special_case + - identifier: l_api_connection_migration_init_special_case_function_3a_python buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration3.test.ts|src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts + TEST_SUITE: src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts|src/__tests__/function_3a_python.test.ts depend-on: - upb - - identifier: l_function_3a_python_function_3a_nodejs_function_3a_go + - identifier: l_function_3a_nodejs_function_3a_go_function_3a_dotnet buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_3a_python.test.ts|src/__tests__/function_3a_nodejs.test.ts|src/__tests__/function_3a_go.test.ts + TEST_SUITE: src/__tests__/function_3a_nodejs.test.ts|src/__tests__/function_3a_go.test.ts|src/__tests__/function_3a_dotnet.test.ts depend-on: - upb - - identifier: l_function_3a_dotnet_export_pull_b_auth_7b + - identifier: l_export_pull_b_auth_7b_api_6a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_3a_dotnet.test.ts|src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts + TEST_SUITE: src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts|src/__tests__/api_6a.test.ts depend-on: - upb - - identifier: l_api_6a_http_migration_schema_function_2 + - identifier: l_http_migration_schema_function_2_schema_auth_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_6a.test.ts|src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts|src/__tests__/schema-auth-3.test.ts depend-on: - upb - - identifier: l_schema_auth_3_schema_auth_12_schema_iterative_update_3 + - identifier: l_schema_auth_12_schema_iterative_update_3_schema_iterative_rollback_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-3.test.ts|src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts + TEST_SUITE: src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts|src/__tests__/schema-iterative-rollback-2.test.ts depend-on: - upb - - identifier: l_schema_iterative_rollback_2_schema_auth_5a_export_pull_d + - identifier: l_schema_auth_5a_export_pull_d_auth_8a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-iterative-rollback-2.test.ts|src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts + TEST_SUITE: src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts|src/__tests__/auth_8a.test.ts depend-on: - upb - - identifier: l_auth_8a_auth_4b_auth_migration + - identifier: l_auth_4b_auth_migration_push buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_8a.test.ts|src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts + TEST_SUITE: src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts|src/__tests__/push.test.ts depend-on: - upb - - identifier: l_push_pull_2_pr_previews_multi_env_1 + - identifier: l_pull_2_pr_previews_multi_env_1_parameter_store_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/push.test.ts|src/__tests__/pull-2.test.ts|src/__tests__/pr-previews-multi-env-1.test.ts + TEST_SUITE: src/__tests__/pull-2.test.ts|src/__tests__/pr-previews-multi-env-1.test.ts|src/__tests__/parameter-store-2.test.ts depend-on: - upb - - identifier: l_parameter_store_2_parameter_store_1_notifications_sms_update + - identifier: l_parameter_store_1_notifications_sms_update_notifications_multi_env buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/parameter-store-2.test.ts|src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts + TEST_SUITE: src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts|src/__tests__/notifications-multi-env.test.ts depend-on: - upb - - identifier: l_notifications_multi_env_minify_cloudformation_init_force_push + - identifier: l_minify_cloudformation_init_force_push_hooks_c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/notifications-multi-env.test.ts|src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts + TEST_SUITE: src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts|src/__tests__/hooks-c.test.ts depend-on: - upb - - identifier: l_hooks_c_help_function_2d + - identifier: l_help_function_2d_function_15 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/hooks-c.test.ts|src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts + TEST_SUITE: src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts|src/__tests__/function_15.test.ts depend-on: - upb - - identifier: l_function_15_function_14_function_13 + - identifier: l_function_14_function_13_function_12 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_15.test.ts|src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts + TEST_SUITE: src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts|src/__tests__/function_12.test.ts depend-on: - upb - - identifier: l_function_12_export_pull_c_custom_resource_with_storage + - identifier: l_export_pull_c_custom_resource_with_storage_build_function buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts|src/__tests__/custom-resource-with-storage.test.ts + TEST_SUITE: src/__tests__/export-pull-c.test.ts|src/__tests__/custom-resource-with-storage.test.ts|src/__tests__/build-function.test.ts CLI_REGION: us-west-2 depend-on: - upb - - identifier: l_build_function_build_function_yarn_modern_auth_5g - buildspec: codebuild_specs/run_e2e_tests_linux.yml - env: - variables: - TEST_SUITE: src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts - depend-on: - - upb - - identifier: l_auth_2h_auth_2g_auth_12 + - identifier: l_build_function_yarn_modern_auth_5g_auth_2h buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_2h.test.ts|src/__tests__/auth_2g.test.ts|src/__tests__/auth_12.test.ts + TEST_SUITE: src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts|src/__tests__/auth_2h.test.ts depend-on: - upb - - identifier: l_api_9a_api_6c + - identifier: l_auth_2g_auth_12_api_9a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_9a.test.ts|src/__tests__/api_6c.test.ts + TEST_SUITE: src/__tests__/auth_2g.test.ts|src/__tests__/auth_12.test.ts|src/__tests__/api_9a.test.ts depend-on: - upb - identifier: l_api_2b_api_2a_amplify_remove @@ -708,46 +694,39 @@ batch: TEST_SUITE: src/__tests__/resolvers.test.ts|src/__tests__/geo-multi-env.test.ts|src/__tests__/graphql-v2/searchable-datastore.test.ts depend-on: - upb - - identifier: l_schema_searchable_apigw + - identifier: l_schema_searchable_apigw_api_5 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-searchable.test.ts|src/__tests__/apigw.test.ts + TEST_SUITE: src/__tests__/schema-searchable.test.ts|src/__tests__/apigw.test.ts|src/__tests__/api_5.test.ts depend-on: - upb - - identifier: l_api_5_api_key_migration2_api_lambda_auth_1 + - identifier: l_api_key_migration2_api_lambda_auth_1_schema_auth_14 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_5.test.ts|src/__tests__/migration/api.key.migration2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_1.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_1.test.ts|src/__tests__/schema-auth-14.test.ts depend-on: - upb - - identifier: l_schema_auth_14_api_key_migration1_api_6b + - identifier: l_api_key_migration1_api_6b_api_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-14.test.ts|src/__tests__/migration/api.key.migration1.test.ts|src/__tests__/api_6b.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration1.test.ts|src/__tests__/api_6b.test.ts|src/__tests__/api_3.test.ts depend-on: - upb - - identifier: l_api_3_layer_1_api_1 + - identifier: l_layer_1_api_1_api_key_migration4 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_3.test.ts|src/__tests__/layer-1.test.ts|src/__tests__/api_1.test.ts + TEST_SUITE: src/__tests__/layer-1.test.ts|src/__tests__/api_1.test.ts|src/__tests__/migration/api.key.migration4.test.ts depend-on: - upb - - identifier: l_api_key_migration4_schema_iterative_update_4 + - identifier: l_schema_iterative_update_4_function_1_storage_5 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration4.test.ts|src/__tests__/schema-iterative-update-4.test.ts - depend-on: - - upb - - identifier: l_function_1_storage_5 - buildspec: codebuild_specs/run_e2e_tests_linux.yml - env: - variables: - TEST_SUITE: src/__tests__/function_1.test.ts|src/__tests__/storage-5.test.ts + TEST_SUITE: src/__tests__/schema-iterative-update-4.test.ts|src/__tests__/function_1.test.ts|src/__tests__/storage-5.test.ts depend-on: - upb - identifier: l_datastore_modelgen @@ -792,6 +771,14 @@ batch: TEST_SUITE: src/__tests__/auth_2c.test.ts depend-on: - upb + - identifier: l_studio_modelgen + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + compute-type: BUILD_GENERAL1_SMALL + TEST_SUITE: src/__tests__/studio-modelgen.test.ts + depend-on: + - upb - identifier: l_geo_remove_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: @@ -936,6 +923,14 @@ batch: TEST_SUITE: src/__tests__/import_dynamodb_2b.test.ts depend-on: - upb + - identifier: l_api_6c + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + compute-type: BUILD_GENERAL1_SMALL + TEST_SUITE: src/__tests__/api_6c.test.ts + depend-on: + - upb - identifier: l_smoketest_amplify_app buildspec: codebuild_specs/run_e2e_tests_linux.yml env: @@ -1102,773 +1097,763 @@ batch: depend-on: - build_windows - upb - - identifier: w_studio_modelgen_plugin - buildspec: codebuild_specs/run_e2e_tests_windows.yml - env: - type: WINDOWS_SERVER_2019_CONTAINER - image: $WINDOWS_IMAGE_2019 - variables: - TEST_SUITE: src/__tests__/studio-modelgen.test.ts|src/__tests__/plugin.test.ts - depend-on: - - build_windows - - upb - - identifier: w_notifications_analytics_compatibility_sms_1_hooks_b + - identifier: w_plugin_notifications_analytics_compatibility_sms_1 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-analytics-compatibility-sms-1.test.ts|src/__tests__/hooks-b.test.ts + TEST_SUITE: src/__tests__/plugin.test.ts|src/__tests__/notifications-analytics-compatibility-sms-1.test.ts depend-on: - build_windows - upb - - identifier: w_global_sandbox_c_analytics_2 + - identifier: w_hooks_b_global_sandbox_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/global_sandbox-c.test.ts|src/__tests__/analytics-2.test.ts + TEST_SUITE: src/__tests__/hooks-b.test.ts|src/__tests__/global_sandbox-c.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_sms_pull_notifications_in_app_messaging_env_1 + - identifier: w_analytics_2_notifications_sms_pull buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-sms-pull.test.ts|src/__tests__/notifications-in-app-messaging-env-1.test.ts + TEST_SUITE: src/__tests__/analytics-2.test.ts|src/__tests__/notifications-sms-pull.test.ts depend-on: - build_windows - upb - - identifier: w_custom_transformers_with_babel_config + - identifier: w_notifications_in_app_messaging_env_1_custom_transformers buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/graphql-v2/custom-transformers.test.ts|src/__tests__/with-babel-config.test.ts + TEST_SUITE: src/__tests__/notifications-in-app-messaging-env-1.test.ts|src/__tests__/graphql-v2/custom-transformers.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_in_app_messaging_env_2_notifications_fcm + - identifier: w_with_babel_config_notifications_in_app_messaging_env_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-in-app-messaging-env-2.test.ts|src/__tests__/notifications-fcm.test.ts + TEST_SUITE: src/__tests__/with-babel-config.test.ts|src/__tests__/notifications-in-app-messaging-env-2.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_apns_init_b + - identifier: w_notifications_fcm_notifications_apns buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-apns.test.ts|src/__tests__/init_b.test.ts + TEST_SUITE: src/__tests__/notifications-fcm.test.ts|src/__tests__/notifications-apns.test.ts depend-on: - build_windows - upb - - identifier: w_container_hosting_auth_10 + - identifier: w_init_b_container_hosting buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/container-hosting.test.ts|src/__tests__/auth_10.test.ts + TEST_SUITE: src/__tests__/init_b.test.ts|src/__tests__/container-hosting.test.ts depend-on: - build_windows - upb - - identifier: w_init_f_init_d + - identifier: w_auth_10_init_f buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_f.test.ts|src/__tests__/init_d.test.ts + TEST_SUITE: src/__tests__/auth_10.test.ts|src/__tests__/init_f.test.ts depend-on: - build_windows - upb - - identifier: w_amplify_configure_layer_4 + - identifier: w_init_d_amplify_configure buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/amplify-configure.test.ts|src/__tests__/layer-4.test.ts + TEST_SUITE: src/__tests__/init_d.test.ts|src/__tests__/amplify-configure.test.ts depend-on: - build_windows - upb - - identifier: w_init_c_configure_project + - identifier: w_layer_4_init_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/init_c.test.ts|src/__tests__/configure-project.test.ts + TEST_SUITE: src/__tests__/layer-4.test.ts|src/__tests__/init_c.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5d_tags + - identifier: w_configure_project_auth_5d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5d.test.ts|src/__tests__/tags.test.ts + TEST_SUITE: src/__tests__/configure-project.test.ts|src/__tests__/auth_5d.test.ts depend-on: - build_windows - upb - - identifier: w_schema_model_a_function_2c + - identifier: w_tags_schema_model_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-model-a.test.ts|src/__tests__/function_2c.test.ts + TEST_SUITE: src/__tests__/tags.test.ts|src/__tests__/schema-model-a.test.ts depend-on: - build_windows - upb - - identifier: w_storage_2_custom_policies_function + - identifier: w_function_2c_storage_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/storage-2.test.ts|src/__tests__/custom_policies_function.test.ts + TEST_SUITE: src/__tests__/function_2c.test.ts|src/__tests__/storage-2.test.ts depend-on: - build_windows - upb - - identifier: w_auth_1a_auth_trigger + - identifier: w_custom_policies_function_auth_1a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_1a.test.ts|src/__tests__/auth-trigger.test.ts + TEST_SUITE: src/__tests__/custom_policies_function.test.ts|src/__tests__/auth_1a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_versioned_schema_model_e + - identifier: w_auth_trigger_schema_versioned buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-versioned.test.ts|src/__tests__/schema-model-e.test.ts + TEST_SUITE: src/__tests__/auth-trigger.test.ts|src/__tests__/schema-versioned.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_4b_notifications_sms + - identifier: w_schema_model_e_schema_auth_4b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-4b.test.ts|src/__tests__/notifications-sms.test.ts + TEST_SUITE: src/__tests__/schema-model-e.test.ts|src/__tests__/schema-auth-4b.test.ts depend-on: - build_windows - upb - - identifier: w_iam_permissions_boundary_node_function + - identifier: w_notifications_sms_iam_permissions_boundary buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/iam-permissions-boundary.test.ts|src/__tests__/migration/node.function.test.ts + TEST_SUITE: src/__tests__/notifications-sms.test.ts|src/__tests__/iam-permissions-boundary.test.ts depend-on: - build_windows - upb - - identifier: w_schema_model_d_schema_model_b + - identifier: w_node_function_schema_model_d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-model-d.test.ts|src/__tests__/schema-model-b.test.ts + TEST_SUITE: src/__tests__/migration/node.function.test.ts|src/__tests__/schema-model-d.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_4a_s3_sse + - identifier: w_schema_model_b_schema_auth_4a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-4a.test.ts|src/__tests__/s3-sse.test.ts + TEST_SUITE: src/__tests__/schema-model-b.test.ts|src/__tests__/schema-auth-4a.test.ts depend-on: - build_windows - upb - - identifier: w_geo_add_b_auth_8b + - identifier: w_s3_sse_geo_add_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-add-b.test.ts|src/__tests__/auth_8b.test.ts + TEST_SUITE: src/__tests__/s3-sse.test.ts|src/__tests__/geo-add-b.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5e_auth_1c + - identifier: w_auth_8b_auth_5e buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5e.test.ts|src/__tests__/auth_1c.test.ts + TEST_SUITE: src/__tests__/auth_8b.test.ts|src/__tests__/auth_5e.test.ts depend-on: - build_windows - upb - - identifier: w_schema_predictions_schema_model_c + - identifier: w_auth_1c_schema_predictions buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-predictions.test.ts|src/__tests__/schema-model-c.test.ts + TEST_SUITE: src/__tests__/auth_1c.test.ts|src/__tests__/schema-predictions.test.ts depend-on: - build_windows - upb - - identifier: w_schema_data_access_patterns_schema_auth_6a + - identifier: w_schema_model_c_schema_data_access_patterns buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-data-access-patterns.test.ts|src/__tests__/schema-auth-6a.test.ts + TEST_SUITE: src/__tests__/schema-model-c.test.ts|src/__tests__/schema-data-access-patterns.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_4d_frontend_config_drift + - identifier: w_schema_auth_6a_schema_auth_4d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-4d.test.ts|src/__tests__/frontend_config_drift.test.ts + TEST_SUITE: src/__tests__/schema-auth-6a.test.ts|src/__tests__/schema-auth-4d.test.ts depend-on: - build_windows - upb - - identifier: w_env_4_auth_5f + - identifier: w_frontend_config_drift_env_4 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/env-4.test.ts|src/__tests__/auth_5f.test.ts + TEST_SUITE: src/__tests__/frontend_config_drift.test.ts|src/__tests__/env-4.test.ts depend-on: - build_windows - upb - - identifier: w_model_migration_schema_auth_5c + - identifier: w_auth_5f_model_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/transformer-migrations/model-migration.test.ts|src/__tests__/schema-auth-5c.test.ts + TEST_SUITE: src/__tests__/auth_5f.test.ts|src/__tests__/transformer-migrations/model-migration.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_4c_init_a + - identifier: w_schema_auth_5c_schema_auth_4c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-4c.test.ts|src/__tests__/init_a.test.ts + TEST_SUITE: src/__tests__/schema-auth-5c.test.ts|src/__tests__/schema-auth-4c.test.ts depend-on: - build_windows - upb - - identifier: w_geo_add_a_env_1 + - identifier: w_init_a_geo_add_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-add-a.test.ts|src/__tests__/env-1.test.ts + TEST_SUITE: src/__tests__/init_a.test.ts|src/__tests__/geo-add-a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5c_auth_5a + - identifier: w_env_1_auth_5c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5c.test.ts|src/__tests__/auth_5a.test.ts + TEST_SUITE: src/__tests__/env-1.test.ts|src/__tests__/auth_5c.test.ts depend-on: - build_windows - upb - - identifier: w_auth_4c_auth_3c + - identifier: w_auth_5a_auth_4c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_4c.test.ts|src/__tests__/auth_3c.test.ts + TEST_SUITE: src/__tests__/auth_5a.test.ts|src/__tests__/auth_4c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_8c_schema_auth_6b + - identifier: w_auth_3c_schema_auth_8c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-8c.test.ts|src/__tests__/schema-auth-6b.test.ts + TEST_SUITE: src/__tests__/auth_3c.test.ts|src/__tests__/schema-auth-8c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_5d_global_sandbox_b + - identifier: w_schema_auth_6b_schema_auth_5d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-5d.test.ts|src/__tests__/global_sandbox-b.test.ts + TEST_SUITE: src/__tests__/schema-auth-6b.test.ts|src/__tests__/schema-auth-5d.test.ts depend-on: - build_windows - upb - - identifier: w_geo_import_2_geo_import_1a + - identifier: w_global_sandbox_b_geo_import_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-import-2.test.ts|src/__tests__/geo-import-1a.test.ts + TEST_SUITE: src/__tests__/global_sandbox-b.test.ts|src/__tests__/geo-import-2.test.ts depend-on: - build_windows - upb - - identifier: w_function_9c_function_10 + - identifier: w_geo_import_1a_function_9c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_9c.test.ts|src/__tests__/function_10.test.ts + TEST_SUITE: src/__tests__/geo-import-1a.test.ts|src/__tests__/function_9c.test.ts depend-on: - build_windows - upb - - identifier: w_function_permissions_env_5 + - identifier: w_function_10_function_permissions buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function-permissions.test.ts|src/__tests__/env-5.test.ts + TEST_SUITE: src/__tests__/function_10.test.ts|src/__tests__/function-permissions.test.ts depend-on: - build_windows - upb - - identifier: w_auth_9_auth_5b + - identifier: w_env_5_auth_9 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_9.test.ts|src/__tests__/auth_5b.test.ts + TEST_SUITE: src/__tests__/env-5.test.ts|src/__tests__/auth_9.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_8a_schema_auth_7c + - identifier: w_auth_5b_schema_auth_8a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-8a.test.ts|src/__tests__/schema-auth-7c.test.ts + TEST_SUITE: src/__tests__/auth_5b.test.ts|src/__tests__/schema-auth-8a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_6d_schema_auth_6c + - identifier: w_schema_auth_7c_schema_auth_6d buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-6d.test.ts|src/__tests__/schema-auth-6c.test.ts + TEST_SUITE: src/__tests__/schema-auth-7c.test.ts|src/__tests__/schema-auth-6d.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_2b_schema_auth_11_c + - identifier: w_schema_auth_6c_schema_auth_2b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-2b.test.ts|src/__tests__/schema-auth-11-c.test.ts + TEST_SUITE: src/__tests__/schema-auth-6c.test.ts|src/__tests__/schema-auth-2b.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_analytics_compatibility_in_app_2_init_e + - identifier: w_schema_auth_11_c_notifications_analytics_compatibility_in_app_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts|src/__tests__/init_e.test.ts + TEST_SUITE: src/__tests__/schema-auth-11-c.test.ts|src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts depend-on: - build_windows - upb - - identifier: w_global_sandbox_a_geo_import_1b + - identifier: w_init_e_global_sandbox_a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/global_sandbox-a.test.ts|src/__tests__/geo-import-1b.test.ts + TEST_SUITE: src/__tests__/init_e.test.ts|src/__tests__/global_sandbox-a.test.ts depend-on: - build_windows - upb - - identifier: w_feature_flags_auth_8c + - identifier: w_geo_import_1b_feature_flags buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/feature-flags.test.ts|src/__tests__/auth_8c.test.ts + TEST_SUITE: src/__tests__/geo-import-1b.test.ts|src/__tests__/feature-flags.test.ts depend-on: - build_windows - upb - - identifier: w_auth_7a_auth_4a + - identifier: w_auth_8c_auth_7a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_7a.test.ts|src/__tests__/auth_4a.test.ts + TEST_SUITE: src/__tests__/auth_8c.test.ts|src/__tests__/auth_7a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_3b_auth_3a + - identifier: w_auth_4a_auth_3b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_3b.test.ts|src/__tests__/auth_3a.test.ts + TEST_SUITE: src/__tests__/auth_4a.test.ts|src/__tests__/auth_3b.test.ts depend-on: - build_windows - upb - - identifier: w_function_migration_storage_3 + - identifier: w_auth_3a_function_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/transformer-migrations/function-migration.test.ts|src/__tests__/storage-3.test.ts + TEST_SUITE: src/__tests__/auth_3a.test.ts|src/__tests__/transformer-migrations/function-migration.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_9_c_schema_auth_9_a + - identifier: w_storage_3_schema_auth_9_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-9-c.test.ts|src/__tests__/schema-auth-9-a.test.ts + TEST_SUITE: src/__tests__/storage-3.test.ts|src/__tests__/schema-auth-9-c.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_8b_schema_auth_5b + - identifier: w_schema_auth_9_a_schema_auth_8b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-8b.test.ts|src/__tests__/schema-auth-5b.test.ts + TEST_SUITE: src/__tests__/schema-auth-9-a.test.ts|src/__tests__/schema-auth-8b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_1a_geo_headless + - identifier: w_schema_auth_5b_schema_auth_1a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-1a.test.ts|src/__tests__/geo-headless.test.ts + TEST_SUITE: src/__tests__/schema-auth-5b.test.ts|src/__tests__/schema-auth-1a.test.ts depend-on: - build_windows - upb - - identifier: w_function_9a_export_pull_a + - identifier: w_geo_headless_function_9a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_9a.test.ts|src/__tests__/export-pull-a.test.ts + TEST_SUITE: src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts depend-on: - build_windows - upb - - identifier: w_api_7_api_10 + - identifier: w_export_pull_a_api_7 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts + TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts depend-on: - build_windows - upb - - identifier: w_api_key_migration5_schema_auth_9_b + - identifier: w_api_10_api_key_migration5 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-auth-9-b.test.ts + TEST_SUITE: src/__tests__/api_10.test.ts|src/__tests__/migration/api.key.migration5.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_7b_schema_auth_7a + - identifier: w_schema_auth_9_b_schema_auth_7b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts + TEST_SUITE: src/__tests__/schema-auth-9-b.test.ts|src/__tests__/schema-auth-7b.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_2a_schema_auth_1b + - identifier: w_schema_auth_7a_schema_auth_2a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-2a.test.ts|src/__tests__/schema-auth-1b.test.ts + TEST_SUITE: src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_11_b_predictions + - identifier: w_schema_auth_1b_schema_auth_11_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts + TEST_SUITE: src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts depend-on: - build_windows - upb - - identifier: w_layer_3_hosting + - identifier: w_predictions_layer_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/layer-3.test.ts|src/__tests__/hosting.test.ts + TEST_SUITE: src/__tests__/predictions.test.ts|src/__tests__/layer-3.test.ts depend-on: - build_windows - upb - - identifier: w_geo_import_3_geo_add_d + - identifier: w_hosting_geo_import_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-import-3.test.ts|src/__tests__/geo-add-d.test.ts + TEST_SUITE: src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts depend-on: - build_windows - upb - - identifier: w_geo_add_c_delete + - identifier: w_geo_add_d_geo_add_c buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/geo-add-c.test.ts|src/__tests__/delete.test.ts + TEST_SUITE: src/__tests__/geo-add-d.test.ts|src/__tests__/geo-add-c.test.ts depend-on: - build_windows - upb - - identifier: w_auth_1b_auth_11 + - identifier: w_delete_auth_1b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_1b.test.ts|src/__tests__/auth_11.test.ts + TEST_SUITE: src/__tests__/delete.test.ts|src/__tests__/auth_1b.test.ts depend-on: - build_windows - upb - - identifier: w_predictions_migration_api_key_migration3 + - identifier: w_auth_11_predictions_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/transformer-migrations/predictions-migration.test.ts|src/__tests__/migration/api.key.migration3.test.ts + TEST_SUITE: src/__tests__/auth_11.test.ts|src/__tests__/transformer-migrations/predictions-migration.test.ts depend-on: - build_windows - upb - - identifier: w_api_connection_migration_init_special_case + - identifier: w_api_key_migration3_api_connection_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/migration/api.connection.migration.test.ts|src/__tests__/init-special-case.test.ts + TEST_SUITE: src/__tests__/migration/api.key.migration3.test.ts|src/__tests__/migration/api.connection.migration.test.ts depend-on: - build_windows - upb - - identifier: w_export_pull_b_auth_7b + - identifier: w_init_special_case_export_pull_b buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/export-pull-b.test.ts|src/__tests__/auth_7b.test.ts + TEST_SUITE: src/__tests__/init-special-case.test.ts|src/__tests__/export-pull-b.test.ts depend-on: - build_windows - upb - - identifier: w_api_6a_http_migration + - identifier: w_auth_7b_api_6a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/api_6a.test.ts|src/__tests__/transformer-migrations/http-migration.test.ts + TEST_SUITE: src/__tests__/auth_7b.test.ts|src/__tests__/api_6a.test.ts depend-on: - build_windows - upb - - identifier: w_schema_function_2_schema_auth_3 + - identifier: w_http_migration_schema_function_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-function-2.test.ts|src/__tests__/schema-auth-3.test.ts + TEST_SUITE: src/__tests__/transformer-migrations/http-migration.test.ts|src/__tests__/schema-function-2.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_12_schema_iterative_update_3 + - identifier: w_schema_auth_3_schema_auth_12 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-12.test.ts|src/__tests__/schema-iterative-update-3.test.ts + TEST_SUITE: src/__tests__/schema-auth-3.test.ts|src/__tests__/schema-auth-12.test.ts depend-on: - build_windows - upb - - identifier: w_schema_auth_5a_export_pull_d + - identifier: w_schema_iterative_update_3_schema_auth_5a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/schema-auth-5a.test.ts|src/__tests__/export-pull-d.test.ts + TEST_SUITE: src/__tests__/schema-iterative-update-3.test.ts|src/__tests__/schema-auth-5a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_8a_auth_4b + - identifier: w_export_pull_d_auth_8a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_8a.test.ts|src/__tests__/auth_4b.test.ts + TEST_SUITE: src/__tests__/export-pull-d.test.ts|src/__tests__/auth_8a.test.ts depend-on: - build_windows - upb - - identifier: w_auth_migration_push + - identifier: w_auth_4b_auth_migration buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/transformer-migrations/auth-migration.test.ts|src/__tests__/push.test.ts + TEST_SUITE: src/__tests__/auth_4b.test.ts|src/__tests__/transformer-migrations/auth-migration.test.ts depend-on: - build_windows - upb - - identifier: w_parameter_store_2_parameter_store_1 + - identifier: w_push_parameter_store_2 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/parameter-store-2.test.ts|src/__tests__/parameter-store-1.test.ts + TEST_SUITE: src/__tests__/push.test.ts|src/__tests__/parameter-store-2.test.ts depend-on: - build_windows - upb - - identifier: w_notifications_sms_update_notifications_multi_env + - identifier: w_parameter_store_1_notifications_sms_update buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/notifications-sms-update.test.ts|src/__tests__/notifications-multi-env.test.ts + TEST_SUITE: src/__tests__/parameter-store-1.test.ts|src/__tests__/notifications-sms-update.test.ts depend-on: - build_windows - upb - - identifier: w_minify_cloudformation_init_force_push + - identifier: w_notifications_multi_env_minify_cloudformation buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/minify-cloudformation.test.ts|src/__tests__/init-force-push.test.ts + TEST_SUITE: src/__tests__/notifications-multi-env.test.ts|src/__tests__/minify-cloudformation.test.ts depend-on: - build_windows - upb - - identifier: w_help_function_2d + - identifier: w_init_force_push_help buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/help.test.ts|src/__tests__/function_2d.test.ts + TEST_SUITE: src/__tests__/init-force-push.test.ts|src/__tests__/help.test.ts depend-on: - build_windows - upb - - identifier: w_function_14_function_13 + - identifier: w_function_2d_function_14 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts + TEST_SUITE: src/__tests__/function_2d.test.ts|src/__tests__/function_14.test.ts depend-on: - build_windows - upb - - identifier: w_function_12_export_pull_c + - identifier: w_function_13_function_12 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts + TEST_SUITE: src/__tests__/function_13.test.ts|src/__tests__/function_12.test.ts depend-on: - build_windows - upb - - identifier: w_build_function_build_function_yarn_modern + - identifier: w_export_pull_c_build_function buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts + TEST_SUITE: src/__tests__/export-pull-c.test.ts|src/__tests__/build-function.test.ts depend-on: - build_windows - upb - - identifier: w_auth_5g_auth_2h + - identifier: w_build_function_yarn_modern_auth_5g buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/auth_5g.test.ts|src/__tests__/auth_2h.test.ts + TEST_SUITE: src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts depend-on: - build_windows - upb - - identifier: w_api_9a_api_6c + - identifier: w_auth_2h_api_9a buildspec: codebuild_specs/run_e2e_tests_windows.yml env: type: WINDOWS_SERVER_2019_CONTAINER image: $WINDOWS_IMAGE_2019 variables: - TEST_SUITE: src/__tests__/api_9a.test.ts|src/__tests__/api_6c.test.ts + TEST_SUITE: src/__tests__/auth_2h.test.ts|src/__tests__/api_9a.test.ts depend-on: - build_windows - upb @@ -2152,6 +2137,16 @@ batch: depend-on: - build_windows - upb + - identifier: w_studio_modelgen + buildspec: codebuild_specs/run_e2e_tests_windows.yml + env: + type: WINDOWS_SERVER_2019_CONTAINER + image: $WINDOWS_IMAGE_2019 + variables: + TEST_SUITE: src/__tests__/studio-modelgen.test.ts + depend-on: + - build_windows + - upb - identifier: w_env_3 buildspec: codebuild_specs/run_e2e_tests_windows.yml env: @@ -2192,6 +2187,16 @@ batch: depend-on: - build_windows - upb + - identifier: w_api_6c + buildspec: codebuild_specs/run_e2e_tests_windows.yml + env: + type: WINDOWS_SERVER_2019_CONTAINER + image: $WINDOWS_IMAGE_2019 + variables: + TEST_SUITE: src/__tests__/api_6c.test.ts + depend-on: + - build_windows + - upb - identifier: w_js_frontend_config buildspec: codebuild_specs/run_e2e_tests_windows.yml env: diff --git a/codebuild_specs/wait_for_ids.json b/codebuild_specs/wait_for_ids.json index 17b05c5e793..3c6ac7d3d1f 100644 --- a/codebuild_specs/wait_for_ids.json +++ b/codebuild_specs/wait_for_ids.json @@ -4,64 +4,62 @@ "l_analytics_pinpoint_flutter_analytics_kinesis_notifications_analytics_compatibility_sms_2", "l_android_notifications_pinpoint_config_android_analytics_pinpoint_config_opensearch_simulator", "l_api_2b_api_2a_amplify_remove", - "l_api_3_layer_1_api_1", "l_api_4_schema_auth_10_schema_key", - "l_api_5_api_key_migration2_api_lambda_auth_1", - "l_api_6a_http_migration_schema_function_2", - "l_api_9a_api_6c", + "l_api_6c", + "l_api_7_api_10_api_key_migration5", "l_api_connection_migration2_storage_4_containers_api_secrets", - "l_api_key_migration3_api_connection_migration_init_special_case", - "l_api_key_migration4_schema_iterative_update_4", - "l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b", - "l_auth_10_init_f_init_d", - "l_auth_1a_auth_trigger_schema_versioned", - "l_auth_1b_auth_11_predictions_migration", + "l_api_connection_migration_init_special_case_function_3a_python", + "l_api_key_migration1_api_6b_api_3", + "l_api_key_migration2_api_lambda_auth_1_schema_auth_14", + "l_auth_11_predictions_migration_api_key_migration3", "l_auth_2b_auth_2a_analytics_pinpoint_js", "l_auth_2c", "l_auth_2e", - "l_auth_2h_auth_2g_auth_12", - "l_auth_4a_auth_3b_auth_3a", - "l_auth_4c_auth_3c_schema_auth_8c", + "l_auth_2g_auth_12_api_9a", + "l_auth_3b_auth_3a_function_migration", + "l_auth_4b_auth_migration_push", + "l_auth_5a_auth_4c_auth_3c", "l_auth_5b_schema_auth_8a_schema_auth_7c", - "l_auth_5d_tags_schema_model_a", - "l_auth_5e_auth_1c_schema_predictions", - "l_auth_5f_model_migration_schema_auth_5c", - "l_auth_8a_auth_4b_auth_migration", - "l_build_function_build_function_yarn_modern_auth_5g", + "l_auth_8b_auth_5e_auth_1c", + "l_auth_8c_auth_7a_auth_4a", + "l_build_function_yarn_modern_auth_5g_auth_2h", + "l_configure_project_auth_5d_tags", + "l_container_hosting_auth_10_init_f", "l_containers_api_1", "l_containers_api_2", - "l_custom_resources_auth_9", + "l_custom_policies_function_auth_1a_auth_trigger", + "l_custom_transformers_with_babel_config_notifications_in_app_messaging_env_2", "l_datastore_modelgen", "l_diagnose_mock_api_hooks_a", - "l_env_1_auth_5c_auth_5a", - "l_env_2_amplify_configure_layer_4", "l_env_3", - "l_export_pull_a_api_7_api_10", - "l_feature_flags_auth_8c_auth_7a", - "l_function_10_function_permissions_env_5", - "l_function_12_export_pull_c_custom_resource_with_storage", - "l_function_15_function_14_function_13", - "l_function_1_storage_5", - "l_function_3a_dotnet_export_pull_b_auth_7b", - "l_function_3a_python_function_3a_nodejs_function_3a_go", - "l_function_4_function_3b_function_2c", + "l_env_4_auth_5f_model_migration", + "l_env_5_custom_resources_auth_9", + "l_export_pull_b_auth_7b_api_6a", + "l_export_pull_c_custom_resource_with_storage_build_function", + "l_function_14_function_13_function_12", + "l_function_2c_storage_2_function_6", + "l_function_3a_nodejs_function_3a_go_function_3a_dotnet", "l_function_7_function_2b_function_11", "l_function_9b_custom_policies_container_api_9b", - "l_function_migration_storage_3_schema_auth_9_c", + "l_function_9c_function_10_function_permissions", "l_general_config_headless_init_dynamodb_simulator_user_groups", - "l_geo_add_d_geo_add_c_delete", + "l_geo_add_a_env_1_auth_5c", + "l_geo_add_c_delete_auth_1b", "l_geo_add_e", "l_geo_add_f", - "l_geo_import_2_geo_import_1a_function_9c", + "l_geo_headless_function_9a_export_pull_a", "l_geo_remove_1", "l_geo_remove_2", "l_geo_remove_3", "l_geo_update_1", "l_geo_update_2", - "l_global_sandbox_c_analytics_2_pull", - "l_hooks_c_help_function_2d", + "l_global_sandbox_a_geo_import_1b_feature_flags", + "l_global_sandbox_b_geo_import_2_geo_import_1a", + "l_help_function_2d_function_15", + "l_hooks_b_global_sandbox_c_analytics_2", "l_hostingPROD", - "l_iam_permissions_boundary_export_node_function", + "l_hosting_geo_import_3_geo_add_d", + "l_http_migration_schema_function_2_schema_auth_3", "l_import_auth_1a", "l_import_auth_1b", "l_import_auth_2a", @@ -76,175 +74,177 @@ "l_import_s3_2b", "l_import_s3_2c", "l_import_s3_3", - "l_init_c_git_clone_attach_configure_project", - "l_init_e_global_sandbox_a_geo_import_1b", + "l_init_d_env_2_amplify_configure", "l_ios_analytics_pinpoint_config_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config", "l_javascript_notifications_pinpoint_config_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config", "l_js_frontend_config", - "l_layer_3_hosting_geo_import_3", - "l_notifications_analytics_compatibility_in_app_1_studio_modelgen", - "l_notifications_apns_init_b_container_hosting", + "l_layer_1_api_1_api_key_migration4", + "l_layer_4_init_c_git_clone_attach", + "l_minify_cloudformation_init_force_push_hooks_c", + "l_node_function_schema_model_d_schema_model_b", + "l_notifications_analytics_compatibility_in_app_1_plugin_notifications_analytics_compatibility_sms_1", + "l_notifications_fcm_notifications_apns_init_b", "l_notifications_in_app_messaging", "l_notifications_lifecycle_auth_2f_auth_2d", - "l_notifications_multi_env_minify_cloudformation_init_force_push", - "l_notifications_sms_pull_notifications_in_app_messaging_env_1_custom_transformers", - "l_parameter_store_2_parameter_store_1_notifications_sms_update", - "l_plugin_notifications_analytics_compatibility_sms_1_hooks_b", - "l_push_pull_2_pr_previews_multi_env_1", + "l_notifications_sms_iam_permissions_boundary_export", + "l_parameter_store_1_notifications_sms_update_notifications_multi_env", + "l_pull_2_pr_previews_multi_env_1_parameter_store_2", + "l_pull_notifications_sms_pull_notifications_in_app_messaging_env_1", "l_resolvers_geo_multi_env_searchable_datastore", - "l_s3_sse_geo_add_b_auth_8b", "l_schema_auth_11_a", - "l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2", + "l_schema_auth_11_b_predictions_layer_3", + "l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2_init_e", + "l_schema_auth_12_schema_iterative_update_3_schema_iterative_rollback_2", "l_schema_auth_13_layer_2_api_lambda_auth_2", - "l_schema_auth_14_api_key_migration1_api_6b", "l_schema_auth_15", - "l_schema_auth_1a_geo_headless_function_9a", - "l_schema_auth_1b_schema_auth_11_b_predictions", - "l_schema_auth_3_schema_auth_12_schema_iterative_update_3", - "l_schema_auth_4c_init_a_geo_add_a", - "l_schema_auth_4d_frontend_config_drift_env_4", - "l_schema_auth_6b_schema_auth_5d_global_sandbox_b", + "l_schema_auth_4a_s3_sse_geo_add_b", + "l_schema_auth_5a_export_pull_d_auth_8a", + "l_schema_auth_5c_schema_auth_4c_init_a", + "l_schema_auth_6a_schema_auth_4d_frontend_config_drift", "l_schema_auth_6d_schema_auth_6c_schema_auth_2b", - "l_schema_auth_7b_schema_auth_7a_schema_auth_2a", - "l_schema_auth_9_a_schema_auth_8b_schema_auth_5b", + "l_schema_auth_7a_schema_auth_2a_schema_auth_1b", + "l_schema_auth_8b_schema_auth_5b_schema_auth_1a", + "l_schema_auth_8c_schema_auth_6b_schema_auth_5d", "l_schema_connection_1", "l_schema_connection_2_function_2a_auth_6", - "l_schema_iterative_rollback_2_schema_auth_5a_export_pull_d", + "l_schema_iterative_rollback_1_schema_auth_9_b_schema_auth_7b", "l_schema_iterative_update_1_function_5_schema_function_1", + "l_schema_iterative_update_4_function_1_storage_5", "l_schema_iterative_update_locking_function_8_api_8", - "l_schema_model_c_schema_data_access_patterns_schema_auth_6a", - "l_schema_model_d_schema_model_b_schema_auth_4a", - "l_schema_model_e_schema_auth_4b_notifications_sms", - "l_schema_searchable_apigw", + "l_schema_model_a_function_4_function_3b", + "l_schema_predictions_schema_model_c_schema_data_access_patterns", + "l_schema_searchable_apigw_api_5", + "l_schema_versioned_schema_model_e_schema_auth_4b", "l_searchable_migration", "l_smoketest_amplify_app", "l_storage_1b_storage_1a_schema_iterative_update_2", - "l_storage_2_function_6_custom_policies_function", + "l_storage_3_schema_auth_9_c_schema_auth_9_a", + "l_studio_modelgen", "l_uibuilder", "l_user_groups_s3_access_hosted_ui_admin_api", - "l_with_babel_config_notifications_in_app_messaging_env_2_notifications_fcm", "w_admin_api_schema_iterative_update_locking", - "w_amplify_configure_layer_4", "w_amplify_remove_smoketest", + "w_analytics_2_notifications_sms_pull", "w_analytics_pinpoint_flutter_analytics_kinesis", + "w_api_10_api_key_migration5", "w_api_1_api_key_migration4", "w_api_2b_api_2a", "w_api_3_layer_1", "w_api_4_schema_auth_10", "w_api_5_api_key_migration2", - "w_api_6a_http_migration", - "w_api_7_api_10", + "w_api_6c", "w_api_8_schema_auth_13", - "w_api_9a_api_6c", "w_api_9b_function_2b", - "w_api_connection_migration_init_special_case", "w_api_key_migration1_api_6b", - "w_api_key_migration5_schema_auth_9_b", + "w_api_key_migration3_api_connection_migration", "w_api_lambda_auth_1_schema_auth_14", "w_api_lambda_auth_2_schema_iterative_update_1", - "w_auth_1a_auth_trigger", - "w_auth_1b_auth_11", + "w_auth_10_init_f", + "w_auth_11_predictions_migration", + "w_auth_1c_schema_predictions", "w_auth_2a_analytics_pinpoint_js", "w_auth_2c", "w_auth_2d_auth_2b", "w_auth_2e", - "w_auth_3b_auth_3a", - "w_auth_4c_auth_3c", - "w_auth_5c_auth_5a", - "w_auth_5d_tags", - "w_auth_5e_auth_1c", - "w_auth_5g_auth_2h", + "w_auth_2h_api_9a", + "w_auth_3a_function_migration", + "w_auth_3c_schema_auth_8c", + "w_auth_4a_auth_3b", + "w_auth_4b_auth_migration", + "w_auth_5a_auth_4c", + "w_auth_5b_schema_auth_8a", + "w_auth_5f_model_migration", "w_auth_6_storage_1b", - "w_auth_7a_auth_4a", - "w_auth_8a_auth_4b", - "w_auth_9_auth_5b", - "w_auth_migration_push", - "w_build_function_build_function_yarn_modern", - "w_container_hosting_auth_10", + "w_auth_7b_api_6a", + "w_auth_8b_auth_5e", + "w_auth_8c_auth_7a", + "w_auth_trigger_schema_versioned", + "w_build_function_yarn_modern_auth_5g", + "w_configure_project_auth_5d", "w_containers_api_1", "w_containers_api_2", - "w_custom_transformers_with_babel_config", + "w_custom_policies_function_auth_1a", + "w_delete_auth_1b", "w_dynamodb_simulator_user_groups", + "w_env_1_auth_5c", "w_env_3", - "w_env_4_auth_5f", - "w_export_pull_b_auth_7b", - "w_feature_flags_auth_8c", + "w_env_5_auth_9", + "w_export_pull_a_api_7", + "w_export_pull_c_build_function", + "w_export_pull_d_auth_8a", + "w_frontend_config_drift_env_4", + "w_function_10_function_permissions", "w_function_11_api_connection_migration2", - "w_function_12_export_pull_c", - "w_function_14_function_13", + "w_function_13_function_12", + "w_function_2c_storage_2", + "w_function_2d_function_14", "w_function_5_schema_function_1", - "w_function_9a_export_pull_a", "w_function_9b_custom_policies_container", - "w_function_9c_function_10", - "w_function_migration_storage_3", - "w_function_permissions_env_5", - "w_geo_add_a_env_1", - "w_geo_add_b_auth_8b", - "w_geo_add_c_delete", - "w_geo_import_2_geo_import_1a", - "w_geo_import_3_geo_add_d", + "w_geo_add_d_geo_add_c", + "w_geo_headless_function_9a", + "w_geo_import_1a_function_9c", + "w_geo_import_1b_feature_flags", "w_geo_multi_env_searchable_datastore", "w_geo_remove_1", - "w_global_sandbox_a_geo_import_1b", - "w_global_sandbox_c_analytics_2", - "w_help_function_2d", + "w_global_sandbox_b_geo_import_2", + "w_hooks_b_global_sandbox_c", "w_hostingPROD", - "w_iam_permissions_boundary_node_function", + "w_hosting_geo_import_3", + "w_http_migration_schema_function_2", "w_import_dynamodb_1", "w_import_s3_1", "w_import_s3_3", - "w_init_c_configure_project", - "w_init_f_init_d", + "w_init_a_geo_add_a", + "w_init_b_container_hosting", + "w_init_d_amplify_configure", + "w_init_e_global_sandbox_a", + "w_init_force_push_help", + "w_init_special_case_export_pull_b", "w_js_frontend_config", - "w_layer_3_hosting", - "w_minify_cloudformation_init_force_push", - "w_model_migration_schema_auth_5c", - "w_notifications_analytics_compatibility_in_app_2_init_e", - "w_notifications_analytics_compatibility_sms_1_hooks_b", + "w_layer_4_init_c", + "w_node_function_schema_model_d", "w_notifications_analytics_compatibility_sms_2_notifications_analytics_compatibility_in_app_1", - "w_notifications_apns_init_b", + "w_notifications_fcm_notifications_apns", "w_notifications_in_app_messaging", - "w_notifications_in_app_messaging_env_2_notifications_fcm", + "w_notifications_in_app_messaging_env_1_custom_transformers", "w_notifications_lifecycle_auth_2f", - "w_notifications_sms_pull_notifications_in_app_messaging_env_1", - "w_notifications_sms_update_notifications_multi_env", - "w_parameter_store_2_parameter_store_1", - "w_predictions_migration_api_key_migration3", + "w_notifications_multi_env_minify_cloudformation", + "w_notifications_sms_iam_permissions_boundary", + "w_parameter_store_1_notifications_sms_update", + "w_plugin_notifications_analytics_compatibility_sms_1", + "w_predictions_layer_3", + "w_push_parameter_store_2", + "w_s3_sse_geo_add_b", "w_schema_auth_11_a", - "w_schema_auth_11_b_predictions", - "w_schema_auth_12_schema_iterative_update_3", + "w_schema_auth_11_c_notifications_analytics_compatibility_in_app_2", "w_schema_auth_15", - "w_schema_auth_1a_geo_headless", - "w_schema_auth_2a_schema_auth_1b", - "w_schema_auth_2b_schema_auth_11_c", - "w_schema_auth_4a_s3_sse", - "w_schema_auth_4b_notifications_sms", - "w_schema_auth_4c_init_a", - "w_schema_auth_4d_frontend_config_drift", - "w_schema_auth_5a_export_pull_d", - "w_schema_auth_5d_global_sandbox_b", - "w_schema_auth_6d_schema_auth_6c", - "w_schema_auth_7b_schema_auth_7a", - "w_schema_auth_8a_schema_auth_7c", - "w_schema_auth_8b_schema_auth_5b", - "w_schema_auth_8c_schema_auth_6b", - "w_schema_auth_9_c_schema_auth_9_a", + "w_schema_auth_1b_schema_auth_11_b", + "w_schema_auth_3_schema_auth_12", + "w_schema_auth_5b_schema_auth_1a", + "w_schema_auth_5c_schema_auth_4c", + "w_schema_auth_6a_schema_auth_4d", + "w_schema_auth_6b_schema_auth_5d", + "w_schema_auth_6c_schema_auth_2b", + "w_schema_auth_7a_schema_auth_2a", + "w_schema_auth_7c_schema_auth_6d", + "w_schema_auth_9_a_schema_auth_8b", + "w_schema_auth_9_b_schema_auth_7b", "w_schema_connection_1", "w_schema_connection_2_function_2a", - "w_schema_data_access_patterns_schema_auth_6a", - "w_schema_function_2_schema_auth_3", + "w_schema_iterative_update_3_schema_auth_5a", "w_schema_iterative_update_4_function_1", "w_schema_key_resolvers", - "w_schema_model_a_function_2c", - "w_schema_model_d_schema_model_b", - "w_schema_predictions_schema_model_c", + "w_schema_model_b_schema_auth_4a", + "w_schema_model_c_schema_data_access_patterns", + "w_schema_model_e_schema_auth_4b", "w_schema_searchable_apigw", - "w_schema_versioned_schema_model_e", "w_searchable_migration", "w_smoketest_ios_general_config_headless_init", "w_storage_1a_schema_iterative_update_2", - "w_storage_2_custom_policies_function", + "w_storage_3_schema_auth_9_c", "w_storage_4_containers_api_secrets", - "w_studio_modelgen_plugin", - "w_user_groups_s3_access_hosted_ui" + "w_studio_modelgen", + "w_tags_schema_model_a", + "w_user_groups_s3_access_hosted_ui", + "w_with_babel_config_notifications_in_app_messaging_env_2" ] diff --git a/scripts/split-e2e-tests-codebuild.ts b/scripts/split-e2e-tests-codebuild.ts index 3f03d5772dc..4b7eab9f8cb 100644 --- a/scripts/split-e2e-tests-codebuild.ts +++ b/scripts/split-e2e-tests-codebuild.ts @@ -9,6 +9,7 @@ const CODEBUILD_GENERATE_CONFIG_PATH = join(REPO_ROOT, 'codebuild_specs', 'e2e_w const RUN_SOLO = [ 'src/__tests__/auth_2c.test.ts', 'src/__tests__/auth_2e.test.ts', + 'src/__tests__/api_6c.test.ts', 'src/__tests__/aws-exports/js-frontend-config.test.ts', 'src/__tests__/containers-api-1.test.ts', 'src/__tests__/containers-api-2.test.ts', @@ -39,17 +40,10 @@ const RUN_SOLO = [ 'src/__tests__/schema-auth-11-a.test.ts', 'src/__tests__/schema-auth-15.test.ts', 'src/__tests__/schema-connection-1.test.ts', + 'src/__tests__/studio-modelgen.test.ts', 'src/__tests__/transformer-migrations/searchable-migration.test.ts', 'src/__tests__/uibuilder.test.ts', ]; -const RUN_DUO = [ - 'src/__tests__/api_6c.test.ts', - 'src/__tests__/auth_9.test.ts', - 'src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts', - 'src/__tests__/schema-iterative-update-4.test.ts', - 'src/__tests__/schema-searchable.test.ts', - 'src/__tests__/studio-modelgen.test.ts', -]; const DISABLE_COVERAGE = [ 'src/__tests__/datastore-modelgen.test.ts', 'src/__tests__/amplify-app.test.ts', @@ -203,7 +197,7 @@ const splitTestsV3 = ( const soloJobs = []; const osJobs = [createRandomJob(os)]; for (let test of testSuites) { - let currentJob = osJobs[osJobs.length - 1]; + const currentJob = osJobs[osJobs.length - 1]; // if the current test is excluded from this OS, skip it if (TEST_EXCLUSIONS[os].find((excluded) => test === excluded)) { @@ -229,16 +223,6 @@ const splitTestsV3 = ( continue; } - let maxWorkers = os === 'w' ? MAX_WORKERS_WINDOWS : MAX_WORKERS; - if (os === 'l' && (RUN_DUO.find((duo) => test === duo) || currentJob.tests.some((duo) => RUN_DUO.includes(duo)))) { - maxWorkers = 2; - // if a job already has 2 tests, set up a new job - this will mean some jobs that can run as 3 will be running as 2 - if (currentJob.tests.length === maxWorkers) { - osJobs.push(createRandomJob(os)); - currentJob = osJobs[osJobs.length - 1]; - } - } - // add the test currentJob.tests.push(test); if (FORCE_REGION) { @@ -248,6 +232,7 @@ const splitTestsV3 = ( currentJob.useParentAccount = true; } + const maxWorkers = os === 'w' ? MAX_WORKERS_WINDOWS : MAX_WORKERS; // create a new job once the current job is full; if (currentJob.tests.length >= maxWorkers) { osJobs.push(createRandomJob(os)); From aa9a917d23d5da70c1024e03a1e5ed45ae75b7fd Mon Sep 17 00:00:00 2001 From: aws-amplify-bot Date: Tue, 21 Oct 2025 15:35:46 -0400 Subject: [PATCH 51/51] fix: move more tests to run as duo --- codebuild_specs/e2e_workflow_generated.yml | 118 ++++++++++++--------- codebuild_specs/wait_for_ids.json | 54 +++++----- scripts/split-e2e-tests-codebuild.ts | 3 + 3 files changed, 97 insertions(+), 78 deletions(-) diff --git a/codebuild_specs/e2e_workflow_generated.yml b/codebuild_specs/e2e_workflow_generated.yml index 96b988e69be..3e5815101db 100644 --- a/codebuild_specs/e2e_workflow_generated.yml +++ b/codebuild_specs/e2e_workflow_generated.yml @@ -427,39 +427,46 @@ batch: TEST_SUITE: src/__tests__/schema-auth-1a.test.ts|src/__tests__/geo-headless.test.ts|src/__tests__/function_9a.test.ts depend-on: - upb - - identifier: l_export_pull_a_api_7_api_10 + - identifier: l_export_pull_a_api_7 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts|src/__tests__/api_10.test.ts + TEST_SUITE: src/__tests__/export-pull-a.test.ts|src/__tests__/api_7.test.ts depend-on: - upb - - identifier: l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b + - identifier: l_api_10_api_key_migration5_schema_iterative_rollback_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-iterative-rollback-1.test.ts|src/__tests__/schema-auth-9-b.test.ts + TEST_SUITE: src/__tests__/api_10.test.ts|src/__tests__/migration/api.key.migration5.test.ts|src/__tests__/schema-iterative-rollback-1.test.ts depend-on: - upb - - identifier: l_schema_auth_7b_schema_auth_7a_schema_auth_2a + - identifier: l_schema_auth_9_b_schema_auth_7b_schema_auth_7a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts|src/__tests__/schema-auth-2a.test.ts + TEST_SUITE: src/__tests__/schema-auth-9-b.test.ts|src/__tests__/schema-auth-7b.test.ts|src/__tests__/schema-auth-7a.test.ts depend-on: - upb - - identifier: l_schema_auth_1b_schema_auth_11_b_predictions + - identifier: l_schema_auth_2a_schema_auth_1b_schema_auth_11_b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts|src/__tests__/predictions.test.ts + TEST_SUITE: src/__tests__/schema-auth-2a.test.ts|src/__tests__/schema-auth-1b.test.ts|src/__tests__/schema-auth-11-b.test.ts depend-on: - upb - - identifier: l_layer_3_hosting_geo_import_3 + - identifier: l_predictions_layer_3 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/layer-3.test.ts|src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts + TEST_SUITE: src/__tests__/predictions.test.ts|src/__tests__/layer-3.test.ts + depend-on: + - upb + - identifier: l_hosting_geo_import_3 + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + TEST_SUITE: src/__tests__/hosting.test.ts|src/__tests__/geo-import-3.test.ts depend-on: - upb - identifier: l_geo_add_d_geo_add_c_delete @@ -560,152 +567,159 @@ batch: TEST_SUITE: src/__tests__/function_15.test.ts|src/__tests__/function_14.test.ts|src/__tests__/function_13.test.ts depend-on: - upb - - identifier: l_function_12_export_pull_c_custom_resource_with_storage + - identifier: l_function_12_export_pull_c buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts|src/__tests__/custom-resource-with-storage.test.ts + TEST_SUITE: src/__tests__/function_12.test.ts|src/__tests__/export-pull-c.test.ts + depend-on: + - upb + - identifier: l_custom_resource_with_storage_build_function_build_function_yarn_modern + buildspec: codebuild_specs/run_e2e_tests_linux.yml + env: + variables: + TEST_SUITE: src/__tests__/custom-resource-with-storage.test.ts|src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts CLI_REGION: us-west-2 depend-on: - upb - - identifier: l_build_function_build_function_yarn_modern_auth_5g + - identifier: l_auth_5g_auth_2h_auth_2g buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/build-function.test.ts|src/__tests__/build-function-yarn-modern.test.ts|src/__tests__/auth_5g.test.ts + TEST_SUITE: src/__tests__/auth_5g.test.ts|src/__tests__/auth_2h.test.ts|src/__tests__/auth_2g.test.ts depend-on: - upb - - identifier: l_auth_2h_auth_2g_auth_12 + - identifier: l_auth_12_api_9a buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth_2h.test.ts|src/__tests__/auth_2g.test.ts|src/__tests__/auth_12.test.ts + TEST_SUITE: src/__tests__/auth_12.test.ts|src/__tests__/api_9a.test.ts depend-on: - upb - - identifier: l_api_9a_api_6c + - identifier: l_api_6c_api_2b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_9a.test.ts|src/__tests__/api_6c.test.ts + TEST_SUITE: src/__tests__/api_6c.test.ts|src/__tests__/api_2b.test.ts depend-on: - upb - - identifier: l_api_2b_api_2a_amplify_remove + - identifier: l_api_2a_amplify_remove_S3server buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_2b.test.ts|src/__tests__/api_2a.test.ts|src/__tests__/amplify-remove.test.ts + TEST_SUITE: src/__tests__/api_2a.test.ts|src/__tests__/amplify-remove.test.ts|src/__tests__/storage-simulator/S3server.test.ts depend-on: - upb - - identifier: l_S3server_smoketest_smoketest_ios + - identifier: l_smoketest_smoketest_ios_javascript_notifications_pinpoint_config buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/storage-simulator/S3server.test.ts|src/__tests__/smoke-tests/smoketest.test.ts|src/__tests__/smoke-tests/smoketest-ios.test.ts + TEST_SUITE: src/__tests__/smoke-tests/smoketest.test.ts|src/__tests__/smoke-tests/smoketest-ios.test.ts|src/__tests__/pinpoint/javascript-notifications-pinpoint-config.test.ts depend-on: - upb - - identifier: l_javascript_notifications_pinpoint_config_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config + - identifier: l_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config_ios_analytics_pinpoint_config buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/pinpoint/javascript-notifications-pinpoint-config.test.ts|src/__tests__/pinpoint/javascript-analytics-pinpoint-config.test.ts|src/__tests__/pinpoint/ios-notifications-pinpoint-config.test.ts + TEST_SUITE: src/__tests__/pinpoint/javascript-analytics-pinpoint-config.test.ts|src/__tests__/pinpoint/ios-notifications-pinpoint-config.test.ts|src/__tests__/pinpoint/ios-analytics-pinpoint-config.test.ts depend-on: - upb - - identifier: l_ios_analytics_pinpoint_config_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config + - identifier: l_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config_android_notifications_pinpoint_config buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/pinpoint/ios-analytics-pinpoint-config.test.ts|src/__tests__/pinpoint/flutter-notifications-pinpoint-config.test.ts|src/__tests__/pinpoint/flutter-analytics-pinpoint-config.test.ts + TEST_SUITE: src/__tests__/pinpoint/flutter-notifications-pinpoint-config.test.ts|src/__tests__/pinpoint/flutter-analytics-pinpoint-config.test.ts|src/__tests__/pinpoint/android-notifications-pinpoint-config.test.ts depend-on: - upb - - identifier: l_android_notifications_pinpoint_config_android_analytics_pinpoint_config_opensearch_simulator + - identifier: l_android_analytics_pinpoint_config_opensearch_simulator_general_config_headless_init buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/pinpoint/android-notifications-pinpoint-config.test.ts|src/__tests__/pinpoint/android-analytics-pinpoint-config.test.ts|src/__tests__/opensearch-simulator/opensearch-simulator.test.ts + TEST_SUITE: src/__tests__/pinpoint/android-analytics-pinpoint-config.test.ts|src/__tests__/opensearch-simulator/opensearch-simulator.test.ts|src/__tests__/general-config/general-config-headless-init.test.ts depend-on: - upb - - identifier: l_general_config_headless_init_dynamodb_simulator_user_groups + - identifier: l_dynamodb_simulator_user_groups_user_groups_s3_access buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/general-config/general-config-headless-init.test.ts|src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts|src/__tests__/auth/user-groups.test.ts + TEST_SUITE: src/__tests__/dynamodb-simulator/dynamodb-simulator.test.ts|src/__tests__/auth/user-groups.test.ts|src/__tests__/auth/user-groups-s3-access.test.ts depend-on: - upb - - identifier: l_user_groups_s3_access_hosted_ui_admin_api + - identifier: l_hosted_ui_admin_api_schema_iterative_update_locking buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/auth/user-groups-s3-access.test.ts|src/__tests__/auth/hosted-ui.test.ts|src/__tests__/auth/admin-api.test.ts + TEST_SUITE: src/__tests__/auth/hosted-ui.test.ts|src/__tests__/auth/admin-api.test.ts|src/__tests__/schema-iterative-update-locking.test.ts depend-on: - upb - - identifier: l_schema_iterative_update_locking_function_8_api_8 + - identifier: l_function_8_api_8_schema_auth_13 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-iterative-update-locking.test.ts|src/__tests__/function_8.test.ts|src/__tests__/api_8.test.ts + TEST_SUITE: src/__tests__/function_8.test.ts|src/__tests__/api_8.test.ts|src/__tests__/schema-auth-13.test.ts depend-on: - upb - - identifier: l_schema_auth_13_layer_2_api_lambda_auth_2 + - identifier: l_layer_2_api_lambda_auth_2_schema_iterative_update_1 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-auth-13.test.ts|src/__tests__/layer-2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_2.test.ts + TEST_SUITE: src/__tests__/layer-2.test.ts|src/__tests__/graphql-v2/api_lambda_auth_2.test.ts|src/__tests__/schema-iterative-update-1.test.ts depend-on: - upb - - identifier: l_schema_iterative_update_1_function_5_schema_function_1 + - identifier: l_function_5_schema_function_1_schema_connection_2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-iterative-update-1.test.ts|src/__tests__/function_5.test.ts|src/__tests__/schema-function-1.test.ts + TEST_SUITE: src/__tests__/function_5.test.ts|src/__tests__/schema-function-1.test.ts|src/__tests__/schema-connection-2.test.ts depend-on: - upb - - identifier: l_schema_connection_2_function_2a_auth_6 + - identifier: l_function_2a_auth_6_storage_1b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/schema-connection-2.test.ts|src/__tests__/function_2a.test.ts|src/__tests__/auth_6.test.ts + TEST_SUITE: src/__tests__/function_2a.test.ts|src/__tests__/auth_6.test.ts|src/__tests__/storage-1b.test.ts depend-on: - upb - - identifier: l_storage_1b_storage_1a_schema_iterative_update_2 + - identifier: l_storage_1a_schema_iterative_update_2_function_9b buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/storage-1b.test.ts|src/__tests__/storage-1a.test.ts|src/__tests__/schema-iterative-update-2.test.ts + TEST_SUITE: src/__tests__/storage-1a.test.ts|src/__tests__/schema-iterative-update-2.test.ts|src/__tests__/function_9b.test.ts depend-on: - upb - - identifier: l_function_9b_custom_policies_container_api_9b + - identifier: l_custom_policies_container_api_9b_function_7 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_9b.test.ts|src/__tests__/custom_policies_container.test.ts|src/__tests__/api_9b.test.ts + TEST_SUITE: src/__tests__/custom_policies_container.test.ts|src/__tests__/api_9b.test.ts|src/__tests__/function_7.test.ts depend-on: - upb - - identifier: l_function_7_function_2b_function_11 + - identifier: l_function_2b_function_11_api_connection_migration2 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/function_7.test.ts|src/__tests__/function_2b.test.ts|src/__tests__/function_11.test.ts + TEST_SUITE: src/__tests__/function_2b.test.ts|src/__tests__/function_11.test.ts|src/__tests__/migration/api.connection.migration2.test.ts depend-on: - upb - - identifier: l_api_connection_migration2_storage_4_containers_api_secrets + - identifier: l_storage_4_containers_api_secrets_api_4 buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/migration/api.connection.migration2.test.ts|src/__tests__/storage-4.test.ts|src/__tests__/containers-api-secrets.test.ts + TEST_SUITE: src/__tests__/storage-4.test.ts|src/__tests__/containers-api-secrets.test.ts|src/__tests__/api_4.test.ts depend-on: - upb - - identifier: l_api_4_schema_auth_10_schema_key + - identifier: l_schema_auth_10_schema_key_resolvers buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/api_4.test.ts|src/__tests__/schema-auth-10.test.ts|src/__tests__/schema-key.test.ts + TEST_SUITE: src/__tests__/schema-auth-10.test.ts|src/__tests__/schema-key.test.ts|src/__tests__/resolvers.test.ts depend-on: - upb - - identifier: l_resolvers_geo_multi_env_searchable_datastore + - identifier: l_geo_multi_env_searchable_datastore buildspec: codebuild_specs/run_e2e_tests_linux.yml env: variables: - TEST_SUITE: src/__tests__/resolvers.test.ts|src/__tests__/geo-multi-env.test.ts|src/__tests__/graphql-v2/searchable-datastore.test.ts + TEST_SUITE: src/__tests__/geo-multi-env.test.ts|src/__tests__/graphql-v2/searchable-datastore.test.ts depend-on: - upb - identifier: l_schema_searchable_apigw diff --git a/codebuild_specs/wait_for_ids.json b/codebuild_specs/wait_for_ids.json index 17b05c5e793..a3b736e0f02 100644 --- a/codebuild_specs/wait_for_ids.json +++ b/codebuild_specs/wait_for_ids.json @@ -1,58 +1,61 @@ [ - "l_S3server_smoketest_smoketest_ios", "l_amplify_app", "l_analytics_pinpoint_flutter_analytics_kinesis_notifications_analytics_compatibility_sms_2", - "l_android_notifications_pinpoint_config_android_analytics_pinpoint_config_opensearch_simulator", - "l_api_2b_api_2a_amplify_remove", + "l_android_analytics_pinpoint_config_opensearch_simulator_general_config_headless_init", + "l_api_10_api_key_migration5_schema_iterative_rollback_1", + "l_api_2a_amplify_remove_S3server", "l_api_3_layer_1_api_1", - "l_api_4_schema_auth_10_schema_key", "l_api_5_api_key_migration2_api_lambda_auth_1", "l_api_6a_http_migration_schema_function_2", - "l_api_9a_api_6c", - "l_api_connection_migration2_storage_4_containers_api_secrets", + "l_api_6c_api_2b", "l_api_key_migration3_api_connection_migration_init_special_case", "l_api_key_migration4_schema_iterative_update_4", - "l_api_key_migration5_schema_iterative_rollback_1_schema_auth_9_b", "l_auth_10_init_f_init_d", + "l_auth_12_api_9a", "l_auth_1a_auth_trigger_schema_versioned", "l_auth_1b_auth_11_predictions_migration", "l_auth_2b_auth_2a_analytics_pinpoint_js", "l_auth_2c", "l_auth_2e", - "l_auth_2h_auth_2g_auth_12", "l_auth_4a_auth_3b_auth_3a", "l_auth_4c_auth_3c_schema_auth_8c", "l_auth_5b_schema_auth_8a_schema_auth_7c", "l_auth_5d_tags_schema_model_a", "l_auth_5e_auth_1c_schema_predictions", "l_auth_5f_model_migration_schema_auth_5c", + "l_auth_5g_auth_2h_auth_2g", "l_auth_8a_auth_4b_auth_migration", - "l_build_function_build_function_yarn_modern_auth_5g", "l_containers_api_1", "l_containers_api_2", + "l_custom_policies_container_api_9b_function_7", + "l_custom_resource_with_storage_build_function_build_function_yarn_modern", "l_custom_resources_auth_9", "l_datastore_modelgen", "l_diagnose_mock_api_hooks_a", + "l_dynamodb_simulator_user_groups_user_groups_s3_access", "l_env_1_auth_5c_auth_5a", "l_env_2_amplify_configure_layer_4", "l_env_3", - "l_export_pull_a_api_7_api_10", + "l_export_pull_a_api_7", "l_feature_flags_auth_8c_auth_7a", + "l_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config_android_notifications_pinpoint_config", "l_function_10_function_permissions_env_5", - "l_function_12_export_pull_c_custom_resource_with_storage", + "l_function_12_export_pull_c", "l_function_15_function_14_function_13", "l_function_1_storage_5", + "l_function_2a_auth_6_storage_1b", + "l_function_2b_function_11_api_connection_migration2", "l_function_3a_dotnet_export_pull_b_auth_7b", "l_function_3a_python_function_3a_nodejs_function_3a_go", "l_function_4_function_3b_function_2c", - "l_function_7_function_2b_function_11", - "l_function_9b_custom_policies_container_api_9b", + "l_function_5_schema_function_1_schema_connection_2", + "l_function_8_api_8_schema_auth_13", "l_function_migration_storage_3_schema_auth_9_c", - "l_general_config_headless_init_dynamodb_simulator_user_groups", "l_geo_add_d_geo_add_c_delete", "l_geo_add_e", "l_geo_add_f", "l_geo_import_2_geo_import_1a_function_9c", + "l_geo_multi_env_searchable_datastore", "l_geo_remove_1", "l_geo_remove_2", "l_geo_remove_3", @@ -60,7 +63,9 @@ "l_geo_update_2", "l_global_sandbox_c_analytics_2_pull", "l_hooks_c_help_function_2d", + "l_hosted_ui_admin_api_schema_iterative_update_locking", "l_hostingPROD", + "l_hosting_geo_import_3", "l_iam_permissions_boundary_export_node_function", "l_import_auth_1a", "l_import_auth_1b", @@ -78,10 +83,9 @@ "l_import_s3_3", "l_init_c_git_clone_attach_configure_project", "l_init_e_global_sandbox_a_geo_import_1b", - "l_ios_analytics_pinpoint_config_flutter_notifications_pinpoint_config_flutter_analytics_pinpoint_config", - "l_javascript_notifications_pinpoint_config_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config", + "l_javascript_analytics_pinpoint_config_ios_notifications_pinpoint_config_ios_analytics_pinpoint_config", "l_js_frontend_config", - "l_layer_3_hosting_geo_import_3", + "l_layer_2_api_lambda_auth_2_schema_iterative_update_1", "l_notifications_analytics_compatibility_in_app_1_studio_modelgen", "l_notifications_apns_init_b_container_hosting", "l_notifications_in_app_messaging", @@ -90,38 +94,36 @@ "l_notifications_sms_pull_notifications_in_app_messaging_env_1_custom_transformers", "l_parameter_store_2_parameter_store_1_notifications_sms_update", "l_plugin_notifications_analytics_compatibility_sms_1_hooks_b", + "l_predictions_layer_3", "l_push_pull_2_pr_previews_multi_env_1", - "l_resolvers_geo_multi_env_searchable_datastore", "l_s3_sse_geo_add_b_auth_8b", + "l_schema_auth_10_schema_key_resolvers", "l_schema_auth_11_a", "l_schema_auth_11_c_notifications_analytics_compatibility_in_app_2", - "l_schema_auth_13_layer_2_api_lambda_auth_2", "l_schema_auth_14_api_key_migration1_api_6b", "l_schema_auth_15", "l_schema_auth_1a_geo_headless_function_9a", - "l_schema_auth_1b_schema_auth_11_b_predictions", + "l_schema_auth_2a_schema_auth_1b_schema_auth_11_b", "l_schema_auth_3_schema_auth_12_schema_iterative_update_3", "l_schema_auth_4c_init_a_geo_add_a", "l_schema_auth_4d_frontend_config_drift_env_4", "l_schema_auth_6b_schema_auth_5d_global_sandbox_b", "l_schema_auth_6d_schema_auth_6c_schema_auth_2b", - "l_schema_auth_7b_schema_auth_7a_schema_auth_2a", "l_schema_auth_9_a_schema_auth_8b_schema_auth_5b", + "l_schema_auth_9_b_schema_auth_7b_schema_auth_7a", "l_schema_connection_1", - "l_schema_connection_2_function_2a_auth_6", "l_schema_iterative_rollback_2_schema_auth_5a_export_pull_d", - "l_schema_iterative_update_1_function_5_schema_function_1", - "l_schema_iterative_update_locking_function_8_api_8", "l_schema_model_c_schema_data_access_patterns_schema_auth_6a", "l_schema_model_d_schema_model_b_schema_auth_4a", "l_schema_model_e_schema_auth_4b_notifications_sms", "l_schema_searchable_apigw", "l_searchable_migration", "l_smoketest_amplify_app", - "l_storage_1b_storage_1a_schema_iterative_update_2", + "l_smoketest_smoketest_ios_javascript_notifications_pinpoint_config", + "l_storage_1a_schema_iterative_update_2_function_9b", "l_storage_2_function_6_custom_policies_function", + "l_storage_4_containers_api_secrets_api_4", "l_uibuilder", - "l_user_groups_s3_access_hosted_ui_admin_api", "l_with_babel_config_notifications_in_app_messaging_env_2_notifications_fcm", "w_admin_api_schema_iterative_update_locking", "w_amplify_configure_layer_4", diff --git a/scripts/split-e2e-tests-codebuild.ts b/scripts/split-e2e-tests-codebuild.ts index e1ab803effd..ffa2598f602 100644 --- a/scripts/split-e2e-tests-codebuild.ts +++ b/scripts/split-e2e-tests-codebuild.ts @@ -45,6 +45,9 @@ const RUN_SOLO = [ const RUN_DUO = [ 'src/__tests__/api_6c.test.ts', 'src/__tests__/auth_9.test.ts', + 'src/__tests__/export-pull-a.test.ts', + 'src/__tests__/export-pull-c.test.ts', + 'src/__tests__/hosting.test.ts', 'src/__tests__/notifications-analytics-compatibility-in-app-2.test.ts', 'src/__tests__/schema-iterative-update-4.test.ts', 'src/__tests__/schema-searchable.test.ts',