From 4dc97f1ffad4bd3327b13a73c73709045b3f71d0 Mon Sep 17 00:00:00 2001 From: phani-srikar Date: Tue, 27 Sep 2022 17:39:03 -0700 Subject: [PATCH 01/12] test: add e2e tests for sync expression behavior --- packages/amplify-e2e-core/src/index.ts | 1 + .../schemas/schema_with_index.graphql | 6 + .../graphql-v2/sync_query_datastore.test.ts | 171 ++++++++++++++++-- 3 files changed, 165 insertions(+), 13 deletions(-) diff --git a/packages/amplify-e2e-core/src/index.ts b/packages/amplify-e2e-core/src/index.ts index 90f0e61144..4e6c906359 100644 --- a/packages/amplify-e2e-core/src/index.ts +++ b/packages/amplify-e2e-core/src/index.ts @@ -27,6 +27,7 @@ declare global { const amplifyTestsDir = 'amplify-e2e-tests'; export function getCLIPath(testingWithLatestCodebase = false) { + testingWithLatestCodebase = true; if (!testingWithLatestCodebase) { if (process.env.AMPLIFY_PATH && fs.existsSync(process.env.AMPLIFY_PATH)) { return process.env.AMPLIFY_PATH; diff --git a/packages/amplify-e2e-tests/schemas/schema_with_index.graphql b/packages/amplify-e2e-tests/schemas/schema_with_index.graphql index 59aa295242..dd0c01eae8 100644 --- a/packages/amplify-e2e-tests/schemas/schema_with_index.graphql +++ b/packages/amplify-e2e-tests/schemas/schema_with_index.graphql @@ -7,3 +7,9 @@ type Song @model { name: String! genre: String! @index(name : "byGenre", queryField: "songInfoByGenre") } + +type SongWithSortKey @model { + id: ID! + name: String! @index(name : "byNameAndGenre", sortKeyFields: ["genre"]) + genre: String! +} diff --git a/packages/amplify-e2e-tests/src/__tests__/graphql-v2/sync_query_datastore.test.ts b/packages/amplify-e2e-tests/src/__tests__/graphql-v2/sync_query_datastore.test.ts index 2c03746692..1fa0969b26 100644 --- a/packages/amplify-e2e-tests/src/__tests__/graphql-v2/sync_query_datastore.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/graphql-v2/sync_query_datastore.test.ts @@ -7,6 +7,7 @@ import { addApiWithBlankSchemaAndConflictDetection, updateApiSchema, getProjectM import { createNewProjectDir, deleteProjectDir } from 'amplify-category-api-e2e-core'; import gql from 'graphql-tag'; import AWSAppSyncClient, { AUTH_TYPE } from 'aws-appsync'; +import { $TSAny } from 'amplify-cli-core'; (global as any).fetch = require('node-fetch'); const projectName = 'syncquerytest'; @@ -19,22 +20,21 @@ describe('Sync query V2 resolver tests', () => { await initJSProjectWithProfile(projRoot, { name: projectName, }); - // await addAuthWithDefault(projRoot, {}); + + const v2Schema = 'schema_with_index.graphql'; + await addApiWithBlankSchemaAndConflictDetection(projRoot, { transformerVersion: 2 }); + await updateApiSchema(projRoot, projectName, v2Schema); + await amplifyPush(projRoot); + + appSyncClient = getAppSyncClientFromProj(projRoot); }); afterEach(async () => { await deleteProject(projRoot); deleteProjectDir(projRoot); }); - + it('Able to sync latest updates with and without lastSync', async () => { - const v2Schema = 'schema_with_index.graphql'; - await addApiWithBlankSchemaAndConflictDetection(projRoot, { transformerVersion: 2 }); - await updateApiSchema(projRoot, projectName, v2Schema); - await amplifyPush(projRoot); - - appSyncClient = getAppSyncClientFromProj(projRoot); - const createResult = await createSong('song1', 'rock'); expect(createResult.data).not.toBeNull(); @@ -95,6 +95,60 @@ describe('Sync query V2 resolver tests', () => { // sync is re-started with the sync query expect(syncResultAfterUpdate.data.syncSongs.startedAt).toBeGreaterThan(syncStartedAt); }); + + it('Sync query with filter on GSI for model without sort key works', async () => { + const testSong = { + id: '', + name: 'song1', + genre: 'rock', + lastChangedAt: 0 + } + + const createResult = await createSong(testSong.name, testSong.genre); + verifyCreateSongResult(createResult, testSong, 'createSong'); + testSong.id = createResult.data.createSong.id; + testSong.lastChangedAt = createResult.data.createSong._lastChangedAt; + + // able to sync songs without lastSync specified. This will do a query on base table. + const syncResult = await syncSongs(null, { genre: { eq: testSong.genre } }); + verifySyncQueryResult(syncResult, testSong, 'syncSongs'); + }); + + it('Sync query with filter on primary key part of GSI for model with sort key works', async () => { + const testSong = { + id: '', + name: 'song1', + genre: 'rock', + lastChangedAt: 0 + } + + const createResult = await createSongWithSortKey(testSong.name, testSong.genre); + verifyCreateSongResult(createResult, testSong, 'createSongWithSortKey'); + testSong.id = createResult.data.createSongWithSortKey.id; + testSong.lastChangedAt = createResult.data.createSongWithSortKey._lastChangedAt; + + // able to sync songs without lastSync specified. This will do a query on base table. + const syncResult = await syncSongWithSortKeys(null, { name: { eq: testSong.name } }); + verifySyncQueryResult(syncResult, testSong, 'syncSongWithSortKeys'); + }); + + it('Sync query with filter on primary and sort keys of GSI for model works', async () => { + const testSong = { + id: '', + name: 'song1', + genre: 'rock', + lastChangedAt: 0 + } + + const createResult = await createSongWithSortKey(testSong.name, testSong.genre); + verifyCreateSongResult(createResult, testSong, 'createSongWithSortKey'); + testSong.id = createResult.data.createSongWithSortKey.id; + testSong.lastChangedAt = createResult.data.createSongWithSortKey._lastChangedAt; + + // able to sync songs without lastSync specified. This will do a query on base table. + const syncResult = await syncSongWithSortKeys(null, { and: { name: { eq: testSong.name }, genre: { eq: testSong.genre } } }); + verifySyncQueryResult(syncResult, testSong, 'syncSongWithSortKeys'); + }); const getAppSyncClientFromProj = (projRoot: string) => { const meta = getProjectMeta(projRoot); @@ -114,6 +168,33 @@ describe('Sync query V2 resolver tests', () => { }); }; + const verifySyncQueryResult = (syncResult: $TSAny, testSong: $TSAny, queryName: string) => { + expect(syncResult.data).not.toBeNull(); + expect(syncResult.errors).toBeUndefined(); + expect(syncResult.data[queryName]).not.toBeNull(); + expect(syncResult.data[queryName].items?.length).toEqual(1); + const songAfterFirstSync = syncResult.data[queryName].items[0]; + expect(songAfterFirstSync.id).toEqual(testSong.id); + expect(songAfterFirstSync.name).toEqual(testSong.name); + expect(songAfterFirstSync.genre).toEqual(testSong.genre); + expect(songAfterFirstSync._version).toEqual(1); + expect(songAfterFirstSync._lastChangedAt).toEqual(testSong.lastChangedAt); + // sync is started with the sync query post record creation + expect(syncResult.data[queryName].startedAt).toBeGreaterThan(testSong.lastChangedAt); + }; + + const verifyCreateSongResult = (createResult: $TSAny, testSong: $TSAny, mutationName: string) => { + expect(createResult.data).not.toBeNull(); + expect(createResult.errors).toBeUndefined(); + expect(createResult.data[mutationName]).not.toBeNull(); + expect(createResult.data[mutationName].id).toBeDefined(); + expect(createResult.data[mutationName].name).toEqual(testSong.name); + expect(createResult.data[mutationName].genre).toEqual(testSong.genre); + expect(createResult.data[mutationName]._version).toEqual(1); + expect(createResult.data[mutationName]._lastChangedAt).toBeDefined(); + expect(createResult.data[mutationName]._deleted).toBeNull(); + }; + const createSong = async ( name: string, genre: string ): Promise => { @@ -145,6 +226,37 @@ describe('Sync query V2 resolver tests', () => { return result; }; + const createSongWithSortKey = async ( + name: string, genre: string + ): Promise => { + const createMutation = /* GraphQL */ ` + mutation CreateSongWithSortKey($input: CreateSongWithSortKeyInput!, $condition: ModelSongWithSortKeyConditionInput) { + createSongWithSortKey(input: $input, condition: $condition) { + id + name + genre + _lastChangedAt + _version + _deleted + } + } + `; + + const createInput = { + input: { + name: name, + genre: genre + }, + }; + + const result: any = await appSyncClient.mutate({ + mutation: gql(createMutation), + fetchPolicy: 'no-cache', + variables: createInput, + }); + return result; + }; + const updateSong = async ( id: string, name: string, genre: string, version: number ): Promise => { @@ -178,10 +290,42 @@ describe('Sync query V2 resolver tests', () => { return result; }; - const syncSongs = async (lastSync?: number): Promise => { + const syncSongs = async (lastSync?: number, filter?: $TSAny): Promise => { + const syncQuery = /* GraphQL */ ` + query SyncSongs($limit: Int, $lastSync: AWSTimestamp, $filter: ModelSongFilterInput) { + syncSongs(limit: $limit, lastSync: $lastSync, filter: $filter) { + items { + id + name + genre + _version + _lastChangedAt + } + startedAt + } + } + `; + + const syncQueryInput = { + input: { + limit: 10, + lastSync: lastSync ? lastSync : null, + filter: filter ? filter: null + }, + }; + + const result: any = await appSyncClient.query({ + query: gql(syncQuery), + fetchPolicy: 'no-cache', + variables: syncQueryInput, + }); + return result; + }; + + const syncSongWithSortKeys = async (lastSync?: number, filter?: $TSAny): Promise => { const syncQuery = /* GraphQL */ ` - query SyncSongs($limit: Int, $lastSync: AWSTimestamp) { - syncSongs(limit: $limit, lastSync: $lastSync) { + query syncSongWithSortKeys($limit: Int, $lastSync: AWSTimestamp, $filter: ModelSongWithSortKeyFilterInput) { + syncSongWithSortKeys(limit: $limit, lastSync: $lastSync, filter: $filter) { items { id name @@ -197,7 +341,8 @@ describe('Sync query V2 resolver tests', () => { const syncQueryInput = { input: { limit: 10, - lastSync: lastSync ? lastSync : null + lastSync: lastSync ? lastSync : null, + filter: filter ? filter: null }, }; From a47d8fc5131844625dab8cedcc5632f96bac863e Mon Sep 17 00:00:00 2001 From: phani-srikar Date: Tue, 27 Sep 2022 17:43:34 -0700 Subject: [PATCH 02/12] chore: remove dev flag --- packages/amplify-e2e-core/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/amplify-e2e-core/src/index.ts b/packages/amplify-e2e-core/src/index.ts index 4e6c906359..90f0e61144 100644 --- a/packages/amplify-e2e-core/src/index.ts +++ b/packages/amplify-e2e-core/src/index.ts @@ -27,7 +27,6 @@ declare global { const amplifyTestsDir = 'amplify-e2e-tests'; export function getCLIPath(testingWithLatestCodebase = false) { - testingWithLatestCodebase = true; if (!testingWithLatestCodebase) { if (process.env.AMPLIFY_PATH && fs.existsSync(process.env.AMPLIFY_PATH)) { return process.env.AMPLIFY_PATH; From eb1295f2c50467b8ae36702e21e5387d01720369 Mon Sep 17 00:00:00 2001 From: Alexander Harris Date: Tue, 4 Oct 2022 14:46:33 -0700 Subject: [PATCH 03/12] feat: add metrics for canary success rate --- .circleci/config.base.yml | 22 ++++++++++++++++++++++ .circleci/config.yml | 22 ++++++++++++++++++++++ .circleci/local_publish_helpers.sh | 19 ++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/.circleci/config.base.yml b/.circleci/config.base.yml index 5b8865e2fe..fa979dc281 100644 --- a/.circleci/config.base.yml +++ b/.circleci/config.base.yml @@ -219,6 +219,9 @@ jobs: os: type: executor default: l + is_canary: + type: boolean + default: false executor: << parameters.os >> working_directory: ~/repo steps: @@ -232,6 +235,13 @@ jobs: key: amplify-verdaccio-cache-{{ .Branch }}-{{ .Revision }} - restore_cache: key: amplify-build-artifact-{{ .Revision }}-{{ arch }} + - when: + condition: << parameters.is_canary >> + steps: + - run: + name: Set Canary Metric + command: | + IS_CANARY=1 - install_yarn: os: << parameters.os >> - run: *install_cli_from_local_registry @@ -245,6 +255,17 @@ jobs: path: client-test-apps/js/api-model-relationship-app/cypress/screenshots - store_artifacts: path: client-test-apps/js/api-model-relationship-app/cypress/videos + - run: + name: Emit Canary Success Metric + command: | + source .circleci/local_publish_helpers.sh + emitCanarySuccessRate 1 + - run: + name: Emit Canary Failure Metric + command: | + source .circleci/local_publish_helpers.sh + emitCanarySuccessRate 0 + when: on_fail amplify_migration_tests_v5: <<: *defaults @@ -385,6 +406,7 @@ workflows: requires: - build - client_e2e_tests: + is_canary: true context: - api-cleanup-resources - e2e-auth-credentials diff --git a/.circleci/config.yml b/.circleci/config.yml index e215ad5f50..d38df6669d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -163,6 +163,10 @@ jobs: paths: - ~/repo/UNIFIED_CHANGELOG.md client_e2e_tests: + parameters: + is_canary: + type: boolean + default: true environment: AMPLIFY_PATH: /home/circleci/.npm-global/lib/node_modules/@aws-amplify/cli-internal/bin/amplify executor: 'linux' @@ -178,6 +182,13 @@ jobs: key: amplify-verdaccio-cache-{{ .Branch }}-{{ .Revision }} - restore_cache: key: amplify-build-artifact-{{ .Revision }}-{{ arch }} + - when: + condition: << parameters.is_canary >> + steps: + - run: + name: Set Canary Metric + command: | + IS_CANARY=1 - run: *install_cli_from_local_registry - run_client_tests - scan_e2e_test_artifacts @@ -187,6 +198,17 @@ jobs: path: client-test-apps/js/api-model-relationship-app/cypress/screenshots - store_artifacts: path: client-test-apps/js/api-model-relationship-app/cypress/videos + - run: + name: Emit Canary Success Metric + command: | + source .circleci/local_publish_helpers.sh + emitCanarySuccessRate 1 + - run: + name: Emit Canary Failure Metric + command: | + source .circleci/local_publish_helpers.sh + emitCanarySuccessRate 0 + when: on_fail # our single workflow, that triggers the setup job defined above workflows: diff --git a/.circleci/local_publish_helpers.sh b/.circleci/local_publish_helpers.sh index 300615b33c..2486503a6e 100644 --- a/.circleci/local_publish_helpers.sh +++ b/.circleci/local_publish_helpers.sh @@ -165,4 +165,21 @@ function runE2eTest { else yarn run e2e --detectOpenHandles --maxWorkers=3 $TEST_SUITE fi -} \ No newline at end of file +} + +# Accepts the value as an input parameter, i.e. 1 for success, 0 for failure. +# Only executes if IS_CANARY env variable is set +function emitCanarySuccessRate { + if [[ -v IS_CANARY ]]; then + USE_PARENT_ACCOUNT=1 + setAwsAccountCredentials + aws cloudwatch \ + put-metric-data \ + --metric-name CanarySuccessRate \ + --namespace amplify-category-api-e2e-tests \ + --unit Count \ + --value $1 \ + --dimensions branch=$CIRCLE_BRANCH \ + --region us-west-2 + fi +} From b217cdb8a8dbc070c3819d18ee67f972d20f1dc6 Mon Sep 17 00:00:00 2001 From: Kamil Sobol Date: Wed, 5 Oct 2022 08:43:48 -0700 Subject: [PATCH 04/12] chore: add .idea to git ignore list This is to cover WebStorm IDE. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1d60207a15..d61a026bf6 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ packages/amplify-dynamodb-simulator/__test__/dynamodb-data .vscode/* !.vscode/settings.json !.vscode/extensions.json +.idea packages/graphql*/lib packages/amplify-graphql-transformer-*/lib packages/amplify-appsync-simulator/lib From b96ca09d62958a8506d5408cb6db6f6dc513acfd Mon Sep 17 00:00:00 2001 From: Alexander Harris Date: Thu, 6 Oct 2022 09:23:01 -0700 Subject: [PATCH 05/12] fix: correct canary metric emission logic, remove all injected env variables to simplify calling --- .circleci/config.base.yml | 15 ++------------- .circleci/config.yml | 15 ++------------- .circleci/local_publish_helpers.sh | 23 +++++++++++++++++++---- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/.circleci/config.base.yml b/.circleci/config.base.yml index fa979dc281..599310d7b6 100644 --- a/.circleci/config.base.yml +++ b/.circleci/config.base.yml @@ -219,9 +219,6 @@ jobs: os: type: executor default: l - is_canary: - type: boolean - default: false executor: << parameters.os >> working_directory: ~/repo steps: @@ -235,13 +232,6 @@ jobs: key: amplify-verdaccio-cache-{{ .Branch }}-{{ .Revision }} - restore_cache: key: amplify-build-artifact-{{ .Revision }}-{{ arch }} - - when: - condition: << parameters.is_canary >> - steps: - - run: - name: Set Canary Metric - command: | - IS_CANARY=1 - install_yarn: os: << parameters.os >> - run: *install_cli_from_local_registry @@ -259,12 +249,12 @@ jobs: name: Emit Canary Success Metric command: | source .circleci/local_publish_helpers.sh - emitCanarySuccessRate 1 + emitCanarySuccessMetric - run: name: Emit Canary Failure Metric command: | source .circleci/local_publish_helpers.sh - emitCanarySuccessRate 0 + emitCanaryFailureMetric when: on_fail amplify_migration_tests_v5: @@ -406,7 +396,6 @@ workflows: requires: - build - client_e2e_tests: - is_canary: true context: - api-cleanup-resources - e2e-auth-credentials diff --git a/.circleci/config.yml b/.circleci/config.yml index d38df6669d..e5022c78fe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -163,10 +163,6 @@ jobs: paths: - ~/repo/UNIFIED_CHANGELOG.md client_e2e_tests: - parameters: - is_canary: - type: boolean - default: true environment: AMPLIFY_PATH: /home/circleci/.npm-global/lib/node_modules/@aws-amplify/cli-internal/bin/amplify executor: 'linux' @@ -182,13 +178,6 @@ jobs: key: amplify-verdaccio-cache-{{ .Branch }}-{{ .Revision }} - restore_cache: key: amplify-build-artifact-{{ .Revision }}-{{ arch }} - - when: - condition: << parameters.is_canary >> - steps: - - run: - name: Set Canary Metric - command: | - IS_CANARY=1 - run: *install_cli_from_local_registry - run_client_tests - scan_e2e_test_artifacts @@ -202,12 +191,12 @@ jobs: name: Emit Canary Success Metric command: | source .circleci/local_publish_helpers.sh - emitCanarySuccessRate 1 + emitCanarySuccessMetric - run: name: Emit Canary Failure Metric command: | source .circleci/local_publish_helpers.sh - emitCanarySuccessRate 0 + emitCanaryFailureMetric when: on_fail # our single workflow, that triggers the setup job defined above diff --git a/.circleci/local_publish_helpers.sh b/.circleci/local_publish_helpers.sh index 2486503a6e..d848cbceed 100644 --- a/.circleci/local_publish_helpers.sh +++ b/.circleci/local_publish_helpers.sh @@ -169,8 +169,8 @@ function runE2eTest { # Accepts the value as an input parameter, i.e. 1 for success, 0 for failure. # Only executes if IS_CANARY env variable is set -function emitCanarySuccessRate { - if [[ -v IS_CANARY ]]; then +function emitCanarySuccessMetric { + if [[ "$CIRCLE_BRANCH" = main ]]; then USE_PARENT_ACCOUNT=1 setAwsAccountCredentials aws cloudwatch \ @@ -178,8 +178,23 @@ function emitCanarySuccessRate { --metric-name CanarySuccessRate \ --namespace amplify-category-api-e2e-tests \ --unit Count \ - --value $1 \ - --dimensions branch=$CIRCLE_BRANCH \ + --value 1 \ + --dimensions branch=main \ + --region us-west-2 + fi +} + +function emitCanaryFailureMetric { + if [[ "$CIRCLE_BRANCH" = main ]]; then + USE_PARENT_ACCOUNT=1 + setAwsAccountCredentials + aws cloudwatch \ + put-metric-data \ + --metric-name CanarySuccessRate \ + --namespace amplify-category-api-e2e-tests \ + --unit Count \ + --value 0 \ + --dimensions branch=main \ --region us-west-2 fi } From 9bf32c21f8e7e7ea6e8d602846c1128f38fb9897 Mon Sep 17 00:00:00 2001 From: Christopher Sundersingh <83315412+sundersc@users.noreply.github.com> Date: Wed, 12 Oct 2022 09:48:33 -0700 Subject: [PATCH 06/12] fix(graphql): add rds datasource v1 fix (#853) * fix(graphql): add rds datasource v1 fix * remove unused variables * add e2e test * update the old comments --- packages/amplify-category-api/package.json | 6 ++++-- .../commands/api/add-graphql-datasource.ts | 11 ++++------ .../appSync-rds-walkthrough.ts | 5 +++-- .../amplify-e2e-core/src/categories/api.ts | 19 ++++++++++++++++++ .../src/__tests__/api_9.test.ts | 20 +++++++++++++++++++ 5 files changed, 50 insertions(+), 11 deletions(-) diff --git a/packages/amplify-category-api/package.json b/packages/amplify-category-api/package.json index 33042f3483..448b58d232 100644 --- a/packages/amplify-category-api/package.json +++ b/packages/amplify-category-api/package.json @@ -116,12 +116,14 @@ "amplify-headless-interface": "^1.15.0", "amplify-prompts": "^2.2.0", "amplify-provider-awscloudformation": "^6.6.0", - "amplify-util-headless-input": "^1.9.5" + "amplify-util-headless-input": "^1.9.5", + "@aws-amplify/amplify-environment-parameters": "^1.1.1" }, "devDependencies": { "@aws-cdk/assertions": "~1.124.0", "@types/js-yaml": "^4.0.0", - "amplify-util-headless-input": "^1.9.5" + "amplify-util-headless-input": "^1.9.5", + "@types/node": "^12.12.6" }, "jest": { "testURL": "http://localhost", diff --git a/packages/amplify-category-api/src/commands/api/add-graphql-datasource.ts b/packages/amplify-category-api/src/commands/api/add-graphql-datasource.ts index 31179381d3..d9383ac0de 100644 --- a/packages/amplify-category-api/src/commands/api/add-graphql-datasource.ts +++ b/packages/amplify-category-api/src/commands/api/add-graphql-datasource.ts @@ -14,9 +14,9 @@ import inquirer from 'inquirer'; import _ from 'lodash'; import * as path from 'path'; import { supportedDataSources } from '../../provider-utils/supported-datasources'; +import { getEnvParamManager } from '@aws-amplify/amplify-environment-parameters'; const subcommand = 'add-graphql-datasource'; -const categories = 'categories'; const category = 'api'; const providerName = 'awscloudformation'; @@ -44,21 +44,18 @@ export const run = async (context: $TSContext): Promise => { const { resourceName, databaseName } = answers; /** - * Write the new env specific datasource information into + * Setting the params using getEnvParamManager.getResourceParamManager.setParams updates * the team-provider-info file */ const currentEnv = context.amplify.getEnvInfo().envName; - const teamProviderInfo = stateManager.getTeamProviderInfo(); - - _.set(teamProviderInfo, [currentEnv, categories, category, resourceName], { + + getEnvParamManager(currentEnv).getResourceParamManager(category, resourceName).setParams({ rdsRegion: answers.region, rdsClusterIdentifier: answers.dbClusterArn, rdsSecretStoreArn: answers.secretStoreArn, rdsDatabaseName: answers.databaseName, }); - stateManager.setTeamProviderInfo(undefined, teamProviderInfo); - const backendConfig = stateManager.getBackendConfig(); backendConfig[category][resourceName].rdsInit = true; diff --git a/packages/amplify-category-api/src/provider-utils/awscloudformation/service-walkthroughs/appSync-rds-walkthrough.ts b/packages/amplify-category-api/src/provider-utils/awscloudformation/service-walkthroughs/appSync-rds-walkthrough.ts index 326e95c370..f4ddaee133 100644 --- a/packages/amplify-category-api/src/provider-utils/awscloudformation/service-walkthroughs/appSync-rds-walkthrough.ts +++ b/packages/amplify-category-api/src/provider-utils/awscloudformation/service-walkthroughs/appSync-rds-walkthrough.ts @@ -3,7 +3,8 @@ import { printer, prompter } from 'amplify-prompts'; import chalk from 'chalk'; import { DataApiParams } from 'graphql-relational-schema-transformer'; import ora from 'ora'; -import { cfnRootStackFileName } from 'amplify-provider-awscloudformation'; +import { rootStackFileName } from 'amplify-provider-awscloudformation'; +import * as path from 'path'; const spinner = ora(''); const category = 'api'; @@ -44,7 +45,7 @@ export async function serviceWalkthrough(context: $TSContext, datasourceMetadata const { inputs, availableRegions } = datasourceMetadata; // FIXME: We should NOT be treating CloudFormation templates as inputs to prompts! This a temporary exception while we move team-provider-info to a service. - const cfnJson: $TSAny = JSONUtilities.readJson(`${pathManager.getCurrentCloudRootStackDirPath(pathManager.findProjectRoot())}/${cfnRootStackFileName}`); + const cfnJson: $TSAny = JSONUtilities.readJson(path.join(pathManager.getCurrentCloudRootStackDirPath(pathManager.findProjectRoot()), rootStackFileName)); const cfnJsonParameters = cfnJson?.Resources[`api${appSyncApi}`]?.Properties?.Parameters || {}; let selectedRegion = cfnJsonParameters?.rdsRegion; // Region Question diff --git a/packages/amplify-e2e-core/src/categories/api.ts b/packages/amplify-e2e-core/src/categories/api.ts index db703f83f4..97093ec68e 100644 --- a/packages/amplify-e2e-core/src/categories/api.ts +++ b/packages/amplify-e2e-core/src/categories/api.ts @@ -742,6 +742,25 @@ export function addApi(projectDir: string, settings?: any) { }); } +export function addV1RDSDataSource(projectDir: string) { + return new Promise((resolve, reject) => { + // This test executes only partial workflow + // This helps to detect any regression with add graphql datasource command + // Make sure that the testing account doesn't contain a Aurora Serverless database. + spawn(getCLIPath(), ['add-graphql-datasource', 'api'], { cwd: projectDir, stripColors: true }) + .wait('Provide the region in which your cluster is located') + .sendKeyDown(5) // This will select 6th item on the region list 'ap-southeast-1' + .sendCarriageReturn() // This will throw an error 'No properly configured Aurora Serverless clusters found'. + .run((err: Error) => { + if (err && !/Killed the process as no output receive for/.test(err.message)) { + reject(err); + } else { + resolve(); + } + }); + }); +} + function setupAuthType(authType: string, chain: any, settings?: any) { switch (authType) { case 'API key': diff --git a/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts b/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts index 7272cfe4f0..e53b5f14f9 100644 --- a/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts @@ -16,6 +16,7 @@ import { amplifyPushUpdateForDependentModel, amplifyPushForce, createRandomName, + addV1RDSDataSource, } from 'amplify-category-api-e2e-core'; import path from 'path'; import { existsSync } from 'fs'; @@ -81,6 +82,25 @@ describe('amplify add api (GraphQL)', () => { expect(graphqlApi.apiId).toEqual(GraphQLAPIIdOutput); }); + it('init a project and add v1 rds datasource', async () => { + const appName = createRandomName(); + await initJSProjectWithProfile(projRoot, { name: appName }); + await addApiWithoutSchema(projRoot, { transformerVersion: 1 }); + await updateApiSchema(projRoot, appName, 'simple_model.graphql'); + await updateApiWithMultiAuth(projRoot, {}); + await amplifyPush(projRoot); + + const meta = getProjectMeta(projRoot); + const { output } = meta.api[appName]; + const { GraphQLAPIIdOutput } = output; + const { graphqlApi } = await getAppSyncApi(GraphQLAPIIdOutput, meta.providers.awscloudformation.Region); + + expect(graphqlApi).toBeDefined(); + expect(graphqlApi.apiId).toEqual(GraphQLAPIIdOutput); + + await expect(addV1RDSDataSource(projRoot)).rejects.toThrowError('Process exited with non zero exit code 1'); + }); + it('init a project and add the simple_model api, match transformer version to current version', async () => { const name = `simplemodelv${TRANSFORM_CURRENT_VERSION}`; await initJSProjectWithProfile(projRoot, { name }); From 14216cb88dbd95cd8338011ddbfb3ca3b9c56303 Mon Sep 17 00:00:00 2001 From: Marc VandenBerg Date: Wed, 12 Oct 2022 12:52:02 -0400 Subject: [PATCH 07/12] Fix: Allow single static group as string (#796) --- .../src/__tests__/group-auth.test.ts | 24 +++++++++++++++++++ .../src/utils/index.ts | 8 ++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/amplify-graphql-auth-transformer/src/__tests__/group-auth.test.ts b/packages/amplify-graphql-auth-transformer/src/__tests__/group-auth.test.ts index a0c7723aba..794935e1ec 100644 --- a/packages/amplify-graphql-auth-transformer/src/__tests__/group-auth.test.ts +++ b/packages/amplify-graphql-auth-transformer/src/__tests__/group-auth.test.ts @@ -34,6 +34,30 @@ test('happy case with static groups', () => { ); }); +test('Static groups with a single group provided as string does not error', () => { + const authConfig: AppSyncAuthConfiguration = { + defaultAuthentication: { + authenticationType: 'AMAZON_COGNITO_USER_POOLS', + }, + additionalAuthenticationProviders: [], + }; + const invalidSchema = ` + type Post @model @auth(rules: [{allow: groups, groups: "Admin"}]) { + id: ID! + title: String! + group: String + createdAt: String + updatedAt: String + }`; + const transformer = new GraphQLTransform({ + authConfig, + transformers: [new ModelTransformer(), new AuthTransformer()], + featureFlags, + }); + const out = transformer.transform(invalidSchema); + expect(out).toBeDefined(); +}); + test('happy case with dynamic groups', () => { const authConfig: AppSyncAuthConfiguration = { defaultAuthentication: { diff --git a/packages/amplify-graphql-auth-transformer/src/utils/index.ts b/packages/amplify-graphql-auth-transformer/src/utils/index.ts index 2c944bc9b9..59be3bf8dc 100644 --- a/packages/amplify-graphql-auth-transformer/src/utils/index.ts +++ b/packages/amplify-graphql-auth-transformer/src/utils/index.ts @@ -53,9 +53,15 @@ export const getAuthDirectiveRules = (authDir: DirectiveWrapper, options?: GetAu }; const { rules } = authDir.getArguments<{ rules: Array }>({ rules: [] }, options); - rules.forEach(rule => { + rules.forEach((rule) => { const operations: (ModelOperation | 'read')[] = rule.operations ?? MODEL_OPERATIONS; + // In case a customer defines a single dynamic group as a string, put it to an array + if (rule.groups && typeof rule.groups === 'string') { + // eslint-disable-next-line no-param-reassign + rule.groups = [rule.groups]; + } + if (options?.isField && rule.operations && (rule.operations.some((operation: ModelOperation | 'read') => operation !== 'read' && READ_MODEL_OPERATIONS.includes(operation)))) { const offendingOperation = operations.filter(operation => operation !== 'read' && READ_MODEL_OPERATIONS.includes(operation)); throw new InvalidDirectiveError( From e9bf2926e4bf91a3d5cebde002728b4ba6385ea2 Mon Sep 17 00:00:00 2001 From: Zeyu Li Date: Wed, 12 Oct 2022 09:53:21 -0700 Subject: [PATCH 08/12] fix(transformer): sort resolvers to avoid circular dependency (#797) --- .../schemas/circular_dependency_model.graphql | 11 +++++ .../graphql-v2/circular-dependency.test.ts | 42 +++++++++++++++++++ .../src/transformation/transform.ts | 19 +++++++-- .../src/transformer-context/resolver.ts | 6 +++ 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 packages/amplify-e2e-tests/schemas/circular_dependency_model.graphql create mode 100644 packages/amplify-e2e-tests/src/__tests__/graphql-v2/circular-dependency.test.ts diff --git a/packages/amplify-e2e-tests/schemas/circular_dependency_model.graphql b/packages/amplify-e2e-tests/schemas/circular_dependency_model.graphql new file mode 100644 index 0000000000..d546c9f6b5 --- /dev/null +++ b/packages/amplify-e2e-tests/schemas/circular_dependency_model.graphql @@ -0,0 +1,11 @@ +type Member @model @auth(rules: [{ allow: owner }]) +{ + owner: String! @primaryKey + secondaryIndex: String @index(name: "bySecondaryIndex", queryField: "memberBySecondaryIndex") + washCarTasks: [WashCarTask] @hasMany(indexName: "byOwner", fields: ["owner"]) +} + +type WashCarTask @model @auth(rules: [{ allow: owner }]) { + id: ID! @primaryKey + owner: String! @index(name: "byOwner", queryField: "washCarTaskByOwner") +} \ No newline at end of file diff --git a/packages/amplify-e2e-tests/src/__tests__/graphql-v2/circular-dependency.test.ts b/packages/amplify-e2e-tests/src/__tests__/graphql-v2/circular-dependency.test.ts new file mode 100644 index 0000000000..35ee3ef66d --- /dev/null +++ b/packages/amplify-e2e-tests/src/__tests__/graphql-v2/circular-dependency.test.ts @@ -0,0 +1,42 @@ +import { addApi, addApiWithoutSchema, amplifyPush, cancelAmplifyMockApi, createNewProjectDir, deleteProject, deleteProjectDir, initJSProjectWithProfile, updateApiSchema } from "amplify-category-api-e2e-core"; +import { existsSync } from "fs-extra"; +import path from 'path'; +import { addCodegen } from "../../codegen/add"; + +describe('Circurlar dependency tests', () => { + let projRoot: string; + let projFolderName: string; + beforeEach(async () => { + projFolderName = 'circulardependency'; + projRoot = await createNewProjectDir(projFolderName); + }); + + afterEach(async () => { + const metaFilePath = path.join(projRoot, 'amplify', '#current-cloud-backend', 'amplify-meta.json'); + if (existsSync(metaFilePath)) { + await deleteProject(projRoot); + } + deleteProjectDir(projRoot); + }); + it('should not have circular dependency error when mocking api with a specific GraphQL schema', async () => { + const projName = 'circulardependency'; + await initJSProjectWithProfile(projRoot, { name: projName }); + await addApi(projRoot, { + 'Amazon Cognito User Pool': {}, + transformerVersion: 2, + }); + await updateApiSchema(projRoot, projName, 'circular_dependency_model.graphql'); + await addCodegen(projRoot, {}); + await expect(cancelAmplifyMockApi(projRoot, {})).resolves.not.toThrow(); + }); + it('should not have circular dependency error when pushing api with a specific GraphQL schema', async () => { + const projName = 'circulardependency'; + await initJSProjectWithProfile(projRoot, { name: projName }); + await addApi(projRoot, { + 'Amazon Cognito User Pool': {}, + transformerVersion: 2, + }); + await updateApiSchema(projRoot, projName, 'circular_dependency_model.graphql'); + await expect(amplifyPush(projRoot)).resolves.not.toThrow(); + }); +}) \ No newline at end of file diff --git a/packages/amplify-graphql-transformer-core/src/transformation/transform.ts b/packages/amplify-graphql-transformer-core/src/transformation/transform.ts index 3bf631d0a8..92f6e9167e 100644 --- a/packages/amplify-graphql-transformer-core/src/transformation/transform.ts +++ b/packages/amplify-graphql-transformer-core/src/transformation/transform.ts @@ -34,7 +34,7 @@ import * as vm from 'vm2'; import { ResolverConfig, TransformConfig } from '../config/transformer-config'; import { InvalidTransformerError, SchemaValidationError, UnknownDirectiveError } from '../errors'; import { GraphQLApi } from '../graphql-api'; -import { TransformerContext } from '../transformer-context'; +import { TransformerContext, TransformerResolver } from '../transformer-context'; import { TransformerOutput } from '../transformer-context/output'; import { StackManager } from '../transformer-context/stack-manager'; import { ConstructResourceMeta } from '../types/types'; @@ -493,9 +493,20 @@ export class GraphQLTransform { } private collectResolvers(context: TransformerContext, api: GraphQLAPIProvider): void { - const resolverEntries = context.resolvers.collectResolvers(); - - for (const [resolverName, resolver] of resolverEntries) { + const resolverEntries = context.resolvers.collectResolvers() as Map; + //Sort resolvers by stack name to group each resolver before synthesis to avoid circular dependency + const sortedResolverEntries = new Map([...resolverEntries].sort((a,b) => { + const left = a[1].getStackName(); + const right = b[1].getStackName(); + if (left > right) { + return 1; + } + if (left === right) { + return 0 + } + return -1; + })); + for (const [resolverName, resolver] of sortedResolverEntries) { const userSlots = this.userDefinedSlots[resolverName] || []; userSlots.forEach(slot => { diff --git a/packages/amplify-graphql-transformer-core/src/transformer-context/resolver.ts b/packages/amplify-graphql-transformer-core/src/transformer-context/resolver.ts index 748965fb0a..03b29610e8 100644 --- a/packages/amplify-graphql-transformer-core/src/transformer-context/resolver.ts +++ b/packages/amplify-graphql-transformer-core/src/transformer-context/resolver.ts @@ -124,6 +124,7 @@ export class TransformerResolver implements TransformerResolverProvider { private readonly slotMap: Map = new Map(); private readonly slotNames: Set; private stack?: Stack; + private stackName?: string; constructor( private typeName: string, private fieldName: string, @@ -154,6 +155,11 @@ export class TransformerResolver implements TransformerResolverProvider { mapToStack = (stack: Stack) => { this.stack = stack; + this.stackName = stack.stackName; + }; + + getStackName = () => { + return this.stackName ?? ''; }; addToSlot = ( From 2655d39e27c905abe2aec57468c08ca0eb910cd6 Mon Sep 17 00:00:00 2001 From: Zeyu Li Date: Thu, 13 Oct 2022 09:36:34 -0700 Subject: [PATCH 09/12] chore: bump cdk dependency to ^1.159.0 (#873) * chore: bump cdk dependency to ^1.159.0 * fix e2e test for api_9 * rm only --- packages/amplify-category-api/package.json | 86 +- .../pipeline-with-awaiter.ts | 4 + .../amplify-e2e-core/src/categories/api.ts | 1 + .../src/__tests__/api_9.test.ts | 2 +- .../package.json | 2 +- .../package.json | 8 +- ...function-transformer-override.test.ts.snap | 108 +- ...plify-graphql-function-transformer.test.ts | 37 +- .../package.json | 6 +- .../package.json | 8 +- .../package.json | 8 +- .../package.json | 2 +- .../package.json | 30 +- .../model-transformer-override.test.ts.snap | 2 + .../package.json | 10 +- ...dictions-transformer-override.test.ts.snap | 28 +- ...aphql-predictions-transformer.test.ts.snap | 28 +- .../package.json | 2 +- .../package.json | 16 +- .../package.json | 48 +- .../package.json | 30 +- .../resources/jsonServer/package.json | 8 +- yarn.lock | 1009 ++++++++++++++--- 23 files changed, 1146 insertions(+), 337 deletions(-) diff --git a/packages/amplify-category-api/package.json b/packages/amplify-category-api/package.json index 448b58d232..4c64c2d01a 100644 --- a/packages/amplify-category-api/package.json +++ b/packages/amplify-category-api/package.json @@ -41,48 +41,48 @@ "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", "@aws-amplify/graphql-transformer-migrator": "1.4.7", - "@aws-cdk/assets": "~1.124.0", - "@aws-cdk/aws-apigateway": "~1.124.0", - "@aws-cdk/aws-apigatewayv2": "~1.124.0", - "@aws-cdk/aws-applicationautoscaling": "~1.124.0", - "@aws-cdk/aws-autoscaling": "~1.124.0", - "@aws-cdk/aws-autoscaling-hooktargets": "~1.124.0", - "@aws-cdk/aws-certificatemanager": "~1.124.0", - "@aws-cdk/aws-cloudformation": "~1.124.0", - "@aws-cdk/aws-cloudfront": "~1.124.0", - "@aws-cdk/aws-cloudwatch": "~1.124.0", - "@aws-cdk/aws-codebuild": "~1.124.0", - "@aws-cdk/aws-codeguruprofiler": "~1.124.0", - "@aws-cdk/aws-codepipeline": "~1.124.0", - "@aws-cdk/aws-codepipeline-actions": "~1.124.0", - "@aws-cdk/aws-cognito": "~1.124.0", - "@aws-cdk/aws-ec2": "~1.124.0", - "@aws-cdk/aws-ecr": "~1.124.0", - "@aws-cdk/aws-ecr-assets": "~1.124.0", - "@aws-cdk/aws-ecs": "~1.124.0", - "@aws-cdk/aws-efs": "~1.124.0", - "@aws-cdk/aws-elasticloadbalancing": "~1.124.0", - "@aws-cdk/aws-elasticloadbalancingv2": "~1.124.0", - "@aws-cdk/aws-events": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-kms": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/aws-logs": "~1.124.0", - "@aws-cdk/aws-route53": "~1.124.0", - "@aws-cdk/aws-route53-targets": "~1.124.0", - "@aws-cdk/aws-s3": "~1.124.0", - "@aws-cdk/aws-s3-assets": "~1.124.0", - "@aws-cdk/aws-secretsmanager": "~1.124.0", - "@aws-cdk/aws-servicediscovery": "~1.124.0", - "@aws-cdk/aws-sns": "~1.124.0", - "@aws-cdk/aws-sns-subscriptions": "~1.124.0", - "@aws-cdk/aws-sqs": "~1.124.0", - "@aws-cdk/aws-ssm": "~1.124.0", - "@aws-cdk/cloud-assembly-schema": "~1.124.0", - "@aws-cdk/core": "~1.124.0", - "@aws-cdk/custom-resources": "~1.124.0", - "@aws-cdk/cx-api": "~1.124.0", - "@aws-cdk/region-info": "~1.124.0", + "@aws-cdk/assets": "^1.159.0", + "@aws-cdk/aws-apigateway": "^1.159.0", + "@aws-cdk/aws-apigatewayv2": "^1.159.0", + "@aws-cdk/aws-applicationautoscaling": "^1.159.0", + "@aws-cdk/aws-autoscaling": "^1.159.0", + "@aws-cdk/aws-autoscaling-hooktargets": "^1.159.0", + "@aws-cdk/aws-certificatemanager": "^1.159.0", + "@aws-cdk/aws-cloudformation": "^1.159.0", + "@aws-cdk/aws-cloudfront": "^1.159.0", + "@aws-cdk/aws-cloudwatch": "^1.159.0", + "@aws-cdk/aws-codebuild": "^1.159.0", + "@aws-cdk/aws-codeguruprofiler": "^1.159.0", + "@aws-cdk/aws-codepipeline": "^1.159.0", + "@aws-cdk/aws-codepipeline-actions": "^1.159.0", + "@aws-cdk/aws-cognito": "^1.159.0", + "@aws-cdk/aws-ec2": "^1.159.0", + "@aws-cdk/aws-ecr": "^1.159.0", + "@aws-cdk/aws-ecr-assets": "^1.159.0", + "@aws-cdk/aws-ecs": "^1.159.0", + "@aws-cdk/aws-efs": "^1.159.0", + "@aws-cdk/aws-elasticloadbalancing": "^1.159.0", + "@aws-cdk/aws-elasticloadbalancingv2": "^1.159.0", + "@aws-cdk/aws-events": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-kms": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/aws-logs": "^1.159.0", + "@aws-cdk/aws-route53": "^1.159.0", + "@aws-cdk/aws-route53-targets": "^1.159.0", + "@aws-cdk/aws-s3": "^1.159.0", + "@aws-cdk/aws-s3-assets": "^1.159.0", + "@aws-cdk/aws-secretsmanager": "^1.159.0", + "@aws-cdk/aws-servicediscovery": "^1.159.0", + "@aws-cdk/aws-sns": "^1.159.0", + "@aws-cdk/aws-sns-subscriptions": "^1.159.0", + "@aws-cdk/aws-sqs": "^1.159.0", + "@aws-cdk/aws-ssm": "^1.159.0", + "@aws-cdk/cloud-assembly-schema": "^1.159.0", + "@aws-cdk/core": "^1.159.0", + "@aws-cdk/custom-resources": "^1.159.0", + "@aws-cdk/cx-api": "^1.159.0", + "@aws-cdk/region-info": "^1.159.0", "@graphql-tools/merge": "^6.0.18", "@octokit/rest": "^18.0.9", "chalk": "^4.1.1", @@ -120,7 +120,7 @@ "@aws-amplify/amplify-environment-parameters": "^1.1.1" }, "devDependencies": { - "@aws-cdk/assertions": "~1.124.0", + "@aws-cdk/assertions": "^1.159.0", "@types/js-yaml": "^4.0.0", "amplify-util-headless-input": "^1.9.5", "@types/node": "^12.12.6" diff --git a/packages/amplify-category-api/src/provider-utils/awscloudformation/pipeline-with-awaiter.ts b/packages/amplify-category-api/src/provider-utils/awscloudformation/pipeline-with-awaiter.ts index 2711c0f674..b6ed14b763 100644 --- a/packages/amplify-category-api/src/provider-utils/awscloudformation/pipeline-with-awaiter.ts +++ b/packages/amplify-category-api/src/provider-utils/awscloudformation/pipeline-with-awaiter.ts @@ -8,6 +8,7 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as s3 from '@aws-cdk/aws-s3'; import * as cdk from '@aws-cdk/core'; import * as custom from '@aws-cdk/custom-resources'; +import { RemovalPolicy } from '@aws-cdk/core'; import * as fs from 'fs-extra'; import * as path from 'path'; import { DEPLOYMENT_MECHANISM } from './base-api-stack'; @@ -256,6 +257,9 @@ export class PipelineWithAwaiter extends cdk.Construct { stack = cdk.Stack.of(this); env = {} as any; node = service.node; + public applyRemovalPolicy(policy: RemovalPolicy): void { + // TODO: This is added for CDK upgrade. Modify the behavior if required. + } })(this, 'tmpService'), input: buildOutput, }), diff --git a/packages/amplify-e2e-core/src/categories/api.ts b/packages/amplify-e2e-core/src/categories/api.ts index 97093ec68e..bed1e18945 100644 --- a/packages/amplify-e2e-core/src/categories/api.ts +++ b/packages/amplify-e2e-core/src/categories/api.ts @@ -751,6 +751,7 @@ export function addV1RDSDataSource(projectDir: string) { .wait('Provide the region in which your cluster is located') .sendKeyDown(5) // This will select 6th item on the region list 'ap-southeast-1' .sendCarriageReturn() // This will throw an error 'No properly configured Aurora Serverless clusters found'. + .wait('No properly configured Aurora Serverless clusters found') .run((err: Error) => { if (err && !/Killed the process as no output receive for/.test(err.message)) { reject(err); diff --git a/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts b/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts index e53b5f14f9..bd07f211a5 100644 --- a/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/api_9.test.ts @@ -98,7 +98,7 @@ describe('amplify add api (GraphQL)', () => { expect(graphqlApi).toBeDefined(); expect(graphqlApi.apiId).toEqual(GraphQLAPIIdOutput); - await expect(addV1RDSDataSource(projRoot)).rejects.toThrowError('Process exited with non zero exit code 1'); + await expect(addV1RDSDataSource(projRoot)).resolves; }); it('init a project and add the simple_model api, match transformer version to current version', async () => { diff --git a/packages/amplify-graphql-auth-transformer/package.json b/packages/amplify-graphql-auth-transformer/package.json index dc27cefb9a..c59faeba3c 100644 --- a/packages/amplify-graphql-auth-transformer/package.json +++ b/packages/amplify-graphql-auth-transformer/package.json @@ -32,7 +32,7 @@ "@aws-amplify/graphql-relational-transformer": "0.12.0", "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/core": "^1.159.0", "constructs": "^3.3.125", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", diff --git a/packages/amplify-graphql-function-transformer/package.json b/packages/amplify-graphql-function-transformer/package.json index 883023b1bf..c2966c2cf5 100644 --- a/packages/amplify-graphql-function-transformer/package.json +++ b/packages/amplify-graphql-function-transformer/package.json @@ -29,15 +29,15 @@ "dependencies": { "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0" + "@aws-cdk/assert": "^1.159.0" }, "jest": { "transform": { diff --git a/packages/amplify-graphql-function-transformer/src/__tests__/__snapshots__/amplify-graphql-function-transformer-override.test.ts.snap b/packages/amplify-graphql-function-transformer/src/__tests__/__snapshots__/amplify-graphql-function-transformer-override.test.ts.snap index 1c9e3da127..d7231dcbe3 100644 --- a/packages/amplify-graphql-function-transformer/src/__tests__/__snapshots__/amplify-graphql-function-transformer-override.test.ts.snap +++ b/packages/amplify-graphql-function-transformer/src/__tests__/__snapshots__/amplify-graphql-function-transformer-override.test.ts.snap @@ -88,24 +88,52 @@ Object { Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", - "Resource": Object { - "Fn::If": Array [ - "HasEnvironmentParameter", - Object { - "Fn::Sub": Array [ - "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction-\${env}", - Object { - "env": Object { - "Ref": "referencetotransformerrootstackenv10C5A902Ref", + "Resource": Array [ + Object { + "Fn::If": Array [ + "HasEnvironmentParameter", + Object { + "Fn::Sub": Array [ + "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction-\${env}", + Object { + "env": Object { + "Ref": "referencetotransformerrootstackenv10C5A902Ref", + }, }, + ], + }, + Object { + "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction", + }, + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::If": Array [ + "HasEnvironmentParameter", + Object { + "Fn::Sub": Array [ + "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction-\${env}", + Object { + "env": Object { + "Ref": "referencetotransformerrootstackenv10C5A902Ref", + }, + }, + ], + }, + Object { + "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction", + }, + ], }, + ":*", ], - }, - Object { - "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:echofunction", - }, - ], - }, + ], + }, + ], }, ], "Version": "2012-10-17", @@ -272,20 +300,44 @@ Object { Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", - "Resource": Object { - "Fn::If": Array [ - "HasEnvironmentParameter", - Object { - "Fn::Sub": Array [ - "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", - Object {}, + "Resource": Array [ + Object { + "Fn::If": Array [ + "HasEnvironmentParameter", + Object { + "Fn::Sub": Array [ + "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", + Object {}, + ], + }, + Object { + "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", + }, + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::If": Array [ + "HasEnvironmentParameter", + Object { + "Fn::Sub": Array [ + "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", + Object {}, + ], + }, + Object { + "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", + }, + ], + }, + ":*", ], - }, - Object { - "Fn::Sub": "arn:aws:lambda:\${AWS::Region}:\${AWS::AccountId}:function:otherfunction", - }, - ], - }, + ], + }, + ], }, ], "Version": "2012-10-17", diff --git a/packages/amplify-graphql-function-transformer/src/__tests__/amplify-graphql-function-transformer.test.ts b/packages/amplify-graphql-function-transformer/src/__tests__/amplify-graphql-function-transformer.test.ts index e959d1e016..cc23ae72fb 100644 --- a/packages/amplify-graphql-function-transformer/src/__tests__/amplify-graphql-function-transformer.test.ts +++ b/packages/amplify-graphql-function-transformer/src/__tests__/amplify-graphql-function-transformer.test.ts @@ -49,15 +49,34 @@ test('it generates the expected resources', () => { { Action: 'lambda:InvokeFunction', Effect: 'Allow', - Resource: { - 'Fn::If': [ - 'HasEnvironmentParameter', - { - 'Fn::Sub': ['arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction-${env}', { env: { Ref: anything() } }], - }, - { 'Fn::Sub': 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction' }, - ], - }, + Resource: [ + { + 'Fn::If': [ + 'HasEnvironmentParameter', + { + 'Fn::Sub': ['arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction-${env}', { env: { Ref: anything() } }], + }, + { 'Fn::Sub': 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction' }, + ], + }, + { + 'Fn::Join': [ + '', + [ + { + 'Fn::If': [ + 'HasEnvironmentParameter', + { + 'Fn::Sub': ['arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction-${env}', { env: { Ref: anything() } }], + }, + { 'Fn::Sub': 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:echofunction' }, + ], + }, + ':*', + ], + ], + }, + ], }, ], Version: '2012-10-17', diff --git a/packages/amplify-graphql-http-transformer/package.json b/packages/amplify-graphql-http-transformer/package.json index 5b2af04b00..73cab75b9a 100644 --- a/packages/amplify-graphql-http-transformer/package.json +++ b/packages/amplify-graphql-http-transformer/package.json @@ -29,14 +29,14 @@ "dependencies": { "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0" + "@aws-cdk/assert": "^1.159.0" }, "jest": { "transform": { diff --git a/packages/amplify-graphql-index-transformer/package.json b/packages/amplify-graphql-index-transformer/package.json index 47f8f32bb7..5ddb15731e 100644 --- a/packages/amplify-graphql-index-transformer/package.json +++ b/packages/amplify-graphql-index-transformer/package.json @@ -30,15 +30,15 @@ "@aws-amplify/graphql-model-transformer": "0.16.0", "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-dynamodb": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-dynamodb": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0" + "@aws-cdk/assert": "^1.159.0" }, "peerDependencies": { "amplify-cli-core": "^3.0.0" diff --git a/packages/amplify-graphql-maps-to-transformer/package.json b/packages/amplify-graphql-maps-to-transformer/package.json index 7d041ebe8d..2b3ac2e328 100644 --- a/packages/amplify-graphql-maps-to-transformer/package.json +++ b/packages/amplify-graphql-maps-to-transformer/package.json @@ -31,10 +31,10 @@ "dependencies": { "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, diff --git a/packages/amplify-graphql-migration-tests/package.json b/packages/amplify-graphql-migration-tests/package.json index b7a4a0c333..d87ba44388 100644 --- a/packages/amplify-graphql-migration-tests/package.json +++ b/packages/amplify-graphql-migration-tests/package.json @@ -47,7 +47,7 @@ "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", "@aws-amplify/graphql-transformer-migrator": "1.4.7", - "@aws-cdk/cloudformation-diff": "~1.124.0", + "@aws-cdk/cloudformation-diff": "^1.159.0", "fs-extra": "^8.1.0", "graphql-auth-transformer": "7.2.44", "graphql-connection-transformer": "5.2.43", diff --git a/packages/amplify-graphql-model-transformer/package.json b/packages/amplify-graphql-model-transformer/package.json index e7482f60f4..32074c3e35 100644 --- a/packages/amplify-graphql-model-transformer/package.json +++ b/packages/amplify-graphql-model-transformer/package.json @@ -30,27 +30,27 @@ "dependencies": { "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-applicationautoscaling": "~1.124.0", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-cloudwatch": "~1.124.0", - "@aws-cdk/aws-dynamodb": "~1.124.0", - "@aws-cdk/aws-ec2": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-kms": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/aws-s3-assets": "~1.124.0", - "@aws-cdk/cloud-assembly-schema": "~1.124.0", - "@aws-cdk/core": "~1.124.0", - "@aws-cdk/custom-resources": "~1.124.0", - "@aws-cdk/cx-api": "~1.124.0", - "@aws-cdk/region-info": "~1.124.0", + "@aws-cdk/aws-applicationautoscaling": "^1.159.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-cloudwatch": "^1.159.0", + "@aws-cdk/aws-dynamodb": "^1.159.0", + "@aws-cdk/aws-ec2": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-kms": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/aws-s3-assets": "^1.159.0", + "@aws-cdk/cloud-assembly-schema": "^1.159.0", + "@aws-cdk/core": "^1.159.0", + "@aws-cdk/custom-resources": "^1.159.0", + "@aws-cdk/cx-api": "^1.159.0", + "@aws-cdk/region-info": "^1.159.0", "constructs": "^3.3.125", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0", + "@aws-cdk/assert": "^1.159.0", "@types/node": "^12.12.6" }, "jest": { diff --git a/packages/amplify-graphql-model-transformer/src/__tests__/__snapshots__/model-transformer-override.test.ts.snap b/packages/amplify-graphql-model-transformer/src/__tests__/__snapshots__/model-transformer-override.test.ts.snap index f3d37c8c20..3a3bb15a16 100644 --- a/packages/amplify-graphql-model-transformer/src/__tests__/__snapshots__/model-transformer-override.test.ts.snap +++ b/packages/amplify-graphql-model-transformer/src/__tests__/__snapshots__/model-transformer-override.test.ts.snap @@ -766,6 +766,7 @@ $util.toJson({})", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", + "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ @@ -1472,6 +1473,7 @@ Object { "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", + "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ diff --git a/packages/amplify-graphql-predictions-transformer/package.json b/packages/amplify-graphql-predictions-transformer/package.json index a7ea3ab6c7..109897a1ba 100644 --- a/packages/amplify-graphql-predictions-transformer/package.json +++ b/packages/amplify-graphql-predictions-transformer/package.json @@ -29,16 +29,16 @@ "dependencies": { "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0", + "@aws-cdk/assert": "^1.159.0", "bestzip": "^2.1.5" }, "jest": { diff --git a/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer-override.test.ts.snap b/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer-override.test.ts.snap index 67e0ae8c3e..1dafdf9619 100644 --- a/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer-override.test.ts.snap +++ b/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer-override.test.ts.snap @@ -80,12 +80,28 @@ Object { Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "predictionsLambda8B880A74", - "Arn", - ], - }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "predictionsLambda8B880A74", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "predictionsLambda8B880A74", + "Arn", + ], + }, + ":*", + ], + ], + }, + ], }, ], "Version": "2012-10-17", diff --git a/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer.test.ts.snap b/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer.test.ts.snap index fdedaa4631..f0030e9dd0 100644 --- a/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer.test.ts.snap +++ b/packages/amplify-graphql-predictions-transformer/src/__tests__/__snapshots__/amplify-graphql-predictions-transformer.test.ts.snap @@ -182,12 +182,28 @@ Object { Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "predictionsLambda8B880A74", - "Arn", - ], - }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "predictionsLambda8B880A74", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "predictionsLambda8B880A74", + "Arn", + ], + }, + ":*", + ], + ], + }, + ], }, ], "Version": "2012-10-17", diff --git a/packages/amplify-graphql-relational-transformer/package.json b/packages/amplify-graphql-relational-transformer/package.json index e94dcb1cae..88cc1c9b1c 100644 --- a/packages/amplify-graphql-relational-transformer/package.json +++ b/packages/amplify-graphql-relational-transformer/package.json @@ -31,7 +31,7 @@ "@aws-amplify/graphql-model-transformer": "0.16.0", "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0", diff --git a/packages/amplify-graphql-searchable-transformer/package.json b/packages/amplify-graphql-searchable-transformer/package.json index 5c10d8b52e..9b089c0d27 100644 --- a/packages/amplify-graphql-searchable-transformer/package.json +++ b/packages/amplify-graphql-searchable-transformer/package.json @@ -30,19 +30,19 @@ "@aws-amplify/graphql-model-transformer": "0.16.0", "@aws-amplify/graphql-transformer-core": "0.17.12", "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-dynamodb": "~1.124.0", - "@aws-cdk/aws-ec2": "~1.124.0", - "@aws-cdk/aws-elasticsearch": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/core": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-dynamodb": "^1.159.0", + "@aws-cdk/aws-ec2": "^1.159.0", + "@aws-cdk/aws-elasticsearch": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/core": "^1.159.0", "graphql": "^14.5.8", "graphql-mapping-template": "4.20.5", "graphql-transformer-common": "4.24.0" }, "devDependencies": { - "@aws-cdk/assert": "~1.124.0", + "@aws-cdk/assert": "^1.159.0", "@types/node": "^12.12.6" }, "jest": { diff --git a/packages/amplify-graphql-transformer-core/package.json b/packages/amplify-graphql-transformer-core/package.json index 7e662cee42..352027d30d 100644 --- a/packages/amplify-graphql-transformer-core/package.json +++ b/packages/amplify-graphql-transformer-core/package.json @@ -28,30 +28,30 @@ }, "dependencies": { "@aws-amplify/graphql-transformer-interfaces": "1.14.7", - "@aws-cdk/aws-applicationautoscaling": "~1.124.0", - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-certificatemanager": "~1.124.0", - "@aws-cdk/aws-cloudwatch": "~1.124.0", - "@aws-cdk/aws-codeguruprofiler": "~1.124.0", - "@aws-cdk/aws-cognito": "~1.124.0", - "@aws-cdk/aws-dynamodb": "~1.124.0", - "@aws-cdk/aws-ec2": "~1.124.0", - "@aws-cdk/aws-efs": "~1.124.0", - "@aws-cdk/aws-elasticsearch": "~1.124.0", - "@aws-cdk/aws-events": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-kms": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/aws-logs": "~1.124.0", - "@aws-cdk/aws-route53": "~1.124.0", - "@aws-cdk/aws-s3": "~1.124.0", - "@aws-cdk/aws-s3-assets": "~1.124.0", - "@aws-cdk/aws-sqs": "~1.124.0", - "@aws-cdk/cloud-assembly-schema": "~1.124.0", - "@aws-cdk/core": "~1.124.0", - "@aws-cdk/custom-resources": "~1.124.0", - "@aws-cdk/cx-api": "~1.124.0", - "@aws-cdk/region-info": "~1.124.0", + "@aws-cdk/aws-applicationautoscaling": "^1.159.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-certificatemanager": "^1.159.0", + "@aws-cdk/aws-cloudwatch": "^1.159.0", + "@aws-cdk/aws-codeguruprofiler": "^1.159.0", + "@aws-cdk/aws-cognito": "^1.159.0", + "@aws-cdk/aws-dynamodb": "^1.159.0", + "@aws-cdk/aws-ec2": "^1.159.0", + "@aws-cdk/aws-efs": "^1.159.0", + "@aws-cdk/aws-elasticsearch": "^1.159.0", + "@aws-cdk/aws-events": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-kms": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/aws-logs": "^1.159.0", + "@aws-cdk/aws-route53": "^1.159.0", + "@aws-cdk/aws-s3": "^1.159.0", + "@aws-cdk/aws-s3-assets": "^1.159.0", + "@aws-cdk/aws-sqs": "^1.159.0", + "@aws-cdk/cloud-assembly-schema": "^1.159.0", + "@aws-cdk/core": "^1.159.0", + "@aws-cdk/custom-resources": "^1.159.0", + "@aws-cdk/cx-api": "^1.159.0", + "@aws-cdk/region-info": "^1.159.0", "constructs": "^3.3.125", "fs-extra": "^8.1.0", "graphql": "^14.5.8", diff --git a/packages/amplify-graphql-transformer-interfaces/package.json b/packages/amplify-graphql-transformer-interfaces/package.json index 693fada345..4df854e380 100644 --- a/packages/amplify-graphql-transformer-interfaces/package.json +++ b/packages/amplify-graphql-transformer-interfaces/package.json @@ -26,21 +26,21 @@ "clean": "rimraf ./lib" }, "dependencies": { - "@aws-cdk/aws-appsync": "~1.124.0", - "@aws-cdk/aws-cloudwatch": "~1.124.0", - "@aws-cdk/aws-dynamodb": "~1.124.0", - "@aws-cdk/aws-ec2": "~1.124.0", - "@aws-cdk/aws-elasticsearch": "~1.124.0", - "@aws-cdk/aws-events": "~1.124.0", - "@aws-cdk/aws-iam": "~1.124.0", - "@aws-cdk/aws-kms": "~1.124.0", - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/aws-logs": "~1.124.0", - "@aws-cdk/aws-rds": "~1.124.0", - "@aws-cdk/aws-s3": "~1.124.0", - "@aws-cdk/aws-secretsmanager": "~1.124.0", - "@aws-cdk/core": "~1.124.0", - "@aws-cdk/custom-resources": "~1.124.0", + "@aws-cdk/aws-appsync": "^1.159.0", + "@aws-cdk/aws-cloudwatch": "^1.159.0", + "@aws-cdk/aws-dynamodb": "^1.159.0", + "@aws-cdk/aws-ec2": "^1.159.0", + "@aws-cdk/aws-elasticsearch": "^1.159.0", + "@aws-cdk/aws-events": "^1.159.0", + "@aws-cdk/aws-iam": "^1.159.0", + "@aws-cdk/aws-kms": "^1.159.0", + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/aws-logs": "^1.159.0", + "@aws-cdk/aws-rds": "^1.159.0", + "@aws-cdk/aws-s3": "^1.159.0", + "@aws-cdk/aws-secretsmanager": "^1.159.0", + "@aws-cdk/core": "^1.159.0", + "@aws-cdk/custom-resources": "^1.159.0", "constructs": "^3.3.125", "graphql": "^14.5.8" }, diff --git a/packages/graphql-transformers-e2e-tests/resources/jsonServer/package.json b/packages/graphql-transformers-e2e-tests/resources/jsonServer/package.json index a9bdeaa361..d98a699999 100644 --- a/packages/graphql-transformers-e2e-tests/resources/jsonServer/package.json +++ b/packages/graphql-transformers-e2e-tests/resources/jsonServer/package.json @@ -3,13 +3,13 @@ "private": true, "version": "1.0.0", "devDependencies": { - "aws-cdk": "~1.124.0", + "aws-cdk": "^1.159.0", "@types/node": "^12.12.6", "typescript": "^3.8.3" }, "dependencies": { - "@aws-cdk/aws-lambda": "~1.124.0", - "@aws-cdk/aws-apigateway": "~1.124.0", - "@aws-cdk/core": "~1.124.0" + "@aws-cdk/aws-lambda": "^1.159.0", + "@aws-cdk/aws-apigateway": "^1.159.0", + "@aws-cdk/core": "^1.159.0" } } diff --git a/yarn.lock b/yarn.lock index 7e1a1d0de5..dc30722c85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -310,6 +310,16 @@ dependencies: "@aws-amplify/core" "4.7.5" +"@aws-cdk/assert@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/assert/-/assert-1.176.0.tgz#5fc822c8c30c6c2245730aad74f21fdaf9e5d93b" + integrity sha512-YLok4H5prtajXDehV/uVRJ/CErrm1PbgKJHe0BoQb024cmoZdAw8z6cHGzYPmR1GfQnV2nbjcSzmzpdJtcX8ng== + dependencies: + "@aws-cdk/cloudformation-diff" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/assert@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/assert/-/assert-1.124.0.tgz#1cc724a45666e29b58a269cab4176d41bedb2fd0" @@ -320,22 +330,18 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" -"@aws-cdk/assertions@~1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/assertions/-/assertions-1.124.0.tgz#4d61226f341cf4f8ba66238cf46fa9150cc87afb" - integrity sha512-jvJf701HizOu3gZHFeC0YQHED2P9aRzKuBk76kA07pAVxxLN7AWTbPrMBtC0ToCVnhazZ1sftxjnLOkxLyyloA== +"@aws-cdk/assertions@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/assertions/-/assertions-1.176.0.tgz#f15c8504125b0feb9e91218bea880fcccb2bbea7" + integrity sha512-jn2o/jfVpbV+5MQL6EKXj+MhT5GFAgYKOznB+lLvJPlJ+O9wcPG9SBm7Wpyc49U+eviNuvViQl13xs7i41sptg== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.124.0" - "@aws-cdk/core" "1.124.0" - "@aws-cdk/cx-api" "1.124.0" - colors "^1.4.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" constructs "^3.3.69" - diff "^5.0.0" - fast-deep-equal "^3.1.3" - string-width "^4.2.2" - table "^6.7.1" + fs-extra "^9.1.0" -"@aws-cdk/assets@1.124.0", "@aws-cdk/assets@~1.124.0": +"@aws-cdk/assets@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/assets/-/assets-1.124.0.tgz#eaeacef8f2c03b93e3b742b6fe767b69e3cad4b3" integrity sha512-3ObGSa+DAwBO0B81IWuGyjIveFak/eZjARKDR0ZxWqXXotrtC2NzT/cHsscqwLzTw0WdDBT9JT/r3ib+PxzZ7g== @@ -344,6 +350,23 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/assets@1.176.0", "@aws-cdk/assets@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/assets/-/assets-1.176.0.tgz#8e50f80c6abf672fb0f2a0b3f88336f53f0e3036" + integrity sha512-FGvXsbjyC5xoP4FU7/Skgoi8QsE3YvvbF/ziT0Ow2p8Kr986U+Ytxy8uNt5Y8Hp4wUpvug8KjN6uNRz+bFwTrg== + dependencies: + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-acmpca@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-acmpca/-/aws-acmpca-1.176.0.tgz#1ec767dbf16cab7486305e1a19929e1e540411a5" + integrity sha512-P4EqhwH9oNMvSP+VsaAH4X3rPQqs4qU5FDjnvzxfs2TBgWyVwCJCKWg9ty0lDGSYaPseyR7DmuK3hPBM6+0icQ== + dependencies: + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-apigateway@1.124.0", "@aws-cdk/aws-apigateway@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-apigateway/-/aws-apigateway-1.124.0.tgz#9e56aeb3b0d1a515b26adec5bd4da7035ad5e0e4" @@ -363,6 +386,39 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-apigateway@1.176.0", "@aws-cdk/aws-apigateway@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-apigateway/-/aws-apigateway-1.176.0.tgz#fb3885c8382423a11935be48998a91fc6ac181b8" + integrity sha512-qlN122VC62YaXA6E8tovNtDZXkO0zA5Xy2wOKhc/g72u0QIdoG3QcrlQuYoeIZ5vynTPmaX2ei0cYontybj1iw== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-cognito" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-stepfunctions" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-apigatewayv2@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-apigatewayv2/-/aws-apigatewayv2-1.176.0.tgz#a01fe0e6f61bf5390347e1c9549929249eae070f" + integrity sha512-r/GLoVK7zkUwxyxoou4vZnVSFIObUrOIOgfTbYxo3MIuWG8FpBjC6bEYy4sb5bJVxFfeuhEFVyyO9PAayGe3fw== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-apigatewayv2@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-apigatewayv2/-/aws-apigatewayv2-1.124.0.tgz#4e921a362c8c68efc4ae5b9fb6462d59cd2e683d" @@ -375,7 +431,7 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-applicationautoscaling@1.124.0", "@aws-cdk/aws-applicationautoscaling@~1.124.0": +"@aws-cdk/aws-applicationautoscaling@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.124.0.tgz#aed80d55fb0908d90113d45e8ea65352d039976d" integrity sha512-gllRWs1PzmF2b+YjexjNx5fOKGJi9MfT3ggdPl/kVBbyc7qhyC6p6RVB0Q+FcTF9p0vM7ATAJgYN3eBzlB04/w== @@ -386,6 +442,36 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-applicationautoscaling@1.176.0", "@aws-cdk/aws-applicationautoscaling@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.176.0.tgz#428ab7b70bbbf2018eaf0f1b4cd52b67567071ba" + integrity sha512-FPZa15TIYd3ygvrQKUZKjiRyc/3wloAQogZdwfI4nuI+WSKMWqNou5IYaOORaY4/VSc6yX4GTySoRfIlq7oZ5Q== + dependencies: + "@aws-cdk/aws-autoscaling-common" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-appsync@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-appsync/-/aws-appsync-1.176.0.tgz#814040fdcf74782ffec5d9c0ffa0a5e5717985c8" + integrity sha512-neRJMgHOSc7F6f27p45eUJMoIQgo1FJAUUB11L2wZoFXZHgduYCmg7vCzNkA40cLGdJMoy4+N81QVBHfr85bVQ== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cognito" "1.176.0" + "@aws-cdk/aws-dynamodb" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticsearch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-opensearchservice" "1.176.0" + "@aws-cdk/aws-rds" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-appsync@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-appsync/-/aws-appsync-1.124.0.tgz#cda1c0751a7cdad262ca9ad9e8a4d1d38b20b6a3" @@ -412,7 +498,16 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-autoscaling-hooktargets@1.124.0", "@aws-cdk/aws-autoscaling-hooktargets@~1.124.0": +"@aws-cdk/aws-autoscaling-common@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.176.0.tgz#0ef5fb676731ea88597e2b266c320818f8a2f14c" + integrity sha512-vIUE8G+SmJhpqroa0CgW4DWZxHphLUy7UHjJtXp869/YNxBba/vCZaQnxXx73mgC3Q4vHsTW6l+4v3ho86RCOg== + dependencies: + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-autoscaling-hooktargets@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-hooktargets/-/aws-autoscaling-hooktargets-1.124.0.tgz#b3441a97898a8846055929074943bdac599f4305" integrity sha512-g0q+Jv124/krjMqT8U5gAKGHJwZkg5/yiswfWIy4aqEOieSwOwii4YuFUUIyghe779ua1yXFyEWnSfYAymXWgA== @@ -427,6 +522,21 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-autoscaling-hooktargets@1.176.0", "@aws-cdk/aws-autoscaling-hooktargets@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-hooktargets/-/aws-autoscaling-hooktargets-1.176.0.tgz#76c9fe7ec87d1b094b52dadc1a0ad5c4c26c2495" + integrity sha512-sSWlAKDS7XEZWicaJA3e0vRt+lAqQN3nWnTA/y3oEeORnhYzWTsco0KgOaHl3dOENagUsF9biLKYCnqjM71+hQ== + dependencies: + "@aws-cdk/aws-autoscaling" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sns-subscriptions" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-autoscaling@1.124.0", "@aws-cdk/aws-autoscaling@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-autoscaling/-/aws-autoscaling-1.124.0.tgz#02aad40f5d0a3c9c8c9c6100d196965fdc505f5a" @@ -442,7 +552,22 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-certificatemanager@1.124.0", "@aws-cdk/aws-certificatemanager@~1.124.0": +"@aws-cdk/aws-autoscaling@1.176.0", "@aws-cdk/aws-autoscaling@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-autoscaling/-/aws-autoscaling-1.176.0.tgz#5bf4586befc7b3c81d3433b78d5531e6b9e93dcf" + integrity sha512-PdPdGqOPAmnn4MBcF8kszUP0FIUz8ESgxL7QrzH5Qz+gQrG+hb/3LQw7YvGFDy6Ed1Bd9MSaZynwjeoqKZQl+A== + dependencies: + "@aws-cdk/aws-autoscaling-common" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticloadbalancing" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-certificatemanager@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.124.0.tgz#080462a4b142996047081e43efeffcd85d1f7da9" integrity sha512-BICj4/t0BTOCMvbdJtBcMmvdAgTdOrzQbfO/BLAqz0naDKINISHcN7WwwC1de3b5WCDJ+NDfQVg9RGpgKO/NkQ== @@ -454,7 +579,20 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudformation@1.124.0", "@aws-cdk/aws-cloudformation@~1.124.0": +"@aws-cdk/aws-certificatemanager@1.176.0", "@aws-cdk/aws-certificatemanager@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.176.0.tgz#4cd123f7594d1093365f6e7a432c3c0e823b38e2" + integrity sha512-BCIJcdVa/punOM9iO5GpXl2KZEX7kzoftd2HTsNa7o5+VXL90o2JxLv3TRMTz2nxdU1GBFfPXW2OrN5QSDj61Q== + dependencies: + "@aws-cdk/aws-acmpca" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cloudformation@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.124.0.tgz#9fffd36d51c2af4ba0d4a1f63e39d48d1e2f201c" integrity sha512-7VCbW7e6zN4TjQxTM7iCOkx+NxlR6C8UShYrj79f2aWAmHU1qu5zcSKXeGvsC+jy63IW4w/becqG3TsM3L/Q4A== @@ -467,7 +605,20 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudfront@1.124.0", "@aws-cdk/aws-cloudfront@~1.124.0": +"@aws-cdk/aws-cloudformation@1.176.0", "@aws-cdk/aws-cloudformation@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.176.0.tgz#226e4fe32afff6cd3a0c5af7c606fa9dee76f587" + integrity sha512-XbUqZ2oBONbA1lyod/Ciijjk71SR0irPHowKA049ai5iyOQLQuyyqYf/WFSc+mZlWjE5ZiAZyKNylIoJ02kavg== + dependencies: + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cloudfront@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.124.0.tgz#81dd569112799ca5720ecb5efe502bddf06cd503" integrity sha512-vd0vSEfKVWRtUMOWi5micPuC3qhLC7z7Dre/+X7N/YNqA+U+NX/g5k7jd00UdRnBiSxE34WRezHKsADUw8Tz6w== @@ -484,6 +635,23 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-cloudfront@1.176.0", "@aws-cdk/aws-cloudfront@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.176.0.tgz#eb86db44464cd314b955abb4521c1ce30fd03da3" + integrity sha512-PHa0obO0i7PZZkvn/UxS18FuKaOerJppx8Po2athr3SPNtw5bjxb6tS7RmjKgQWQBjvQbdCrwlaQcU9fygii6Q== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-ssm" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-cloudwatch@1.124.0", "@aws-cdk/aws-cloudwatch@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.124.0.tgz#28ecbda8ebb2b890e50b7f7b278b57b29e9c15b3" @@ -493,58 +661,69 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-codebuild@1.124.0", "@aws-cdk/aws-codebuild@~1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-codebuild/-/aws-codebuild-1.124.0.tgz#e63078b159547f934b2f8390d8c1d9f7914ec1b7" - integrity sha512-6zhPkBQMMg5JJJuq9RZ/vL0KQmr+b3VgJOKBHG21vyRXkLLHYfeqjoKMF/yBSgvcwFkrnIko+c78DfVWKhZTkQ== +"@aws-cdk/aws-cloudwatch@1.176.0", "@aws-cdk/aws-cloudwatch@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.176.0.tgz#b6ab5e78a8763bf4307f89c300367d1a34a82558" + integrity sha512-NGtbvNPCvqhzhGN8UjjKlmxwElPAh+XhtlMo+HYeTYo2LMBk/cHtKg6an1yZxKJYZxu1t/z8/gKZ9O1s5yCwNQ== dependencies: - "@aws-cdk/aws-cloudwatch" "1.124.0" - "@aws-cdk/aws-codecommit" "1.124.0" - "@aws-cdk/aws-codestarnotifications" "1.124.0" - "@aws-cdk/aws-ec2" "1.124.0" - "@aws-cdk/aws-ecr" "1.124.0" - "@aws-cdk/aws-ecr-assets" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-kms" "1.124.0" - "@aws-cdk/aws-logs" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/aws-s3-assets" "1.124.0" - "@aws-cdk/aws-secretsmanager" "1.124.0" - "@aws-cdk/core" "1.124.0" - "@aws-cdk/region-info" "1.124.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-codebuild@1.176.0", "@aws-cdk/aws-codebuild@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codebuild/-/aws-codebuild-1.176.0.tgz#7375d9e90c65f92e48bff369b19c47a483fbfa9c" + integrity sha512-aJTXC6bVVznhW1i+OFPkB+jJ+HHTBgLkpRlZHwJ37QtEOe0cnAJXXNwudihBJNKKrCDQ4v8tvl3YH/6QlvDzqQ== + dependencies: + "@aws-cdk/assets" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-codecommit" "1.176.0" + "@aws-cdk/aws-codestarnotifications" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-ecr" "1.176.0" + "@aws-cdk/aws-ecr-assets" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/region-info" "1.176.0" constructs "^3.3.69" yaml "1.10.2" -"@aws-cdk/aws-codecommit@1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-codecommit/-/aws-codecommit-1.124.0.tgz#5835893ee93eba8ce7cc27ed1e362c4e0707f71d" - integrity sha512-ynEWzlCKFBB+bzzv7NwFGcBY1rchCRv+NLlturCM3ylsaYZzoZVSEPNJKBjQ4uvUnLPocLoepDHbS4dSfeOdOw== +"@aws-cdk/aws-codecommit@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codecommit/-/aws-codecommit-1.176.0.tgz#2edef5e5b64a4221819a771bc3a3f64b99674ef4" + integrity sha512-Pt80Mop92rL7+f+CPslxGllFyj5kYmXp4gK2EvfBJAuzH7nn5/mrrwBycOOSwGuCJccmQsRx/Y7nF3ofCByEkQ== dependencies: - "@aws-cdk/aws-codestarnotifications" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/core" "1.124.0" + "@aws-cdk/aws-codestarnotifications" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/core" "1.176.0" constructs "^3.3.69" -"@aws-cdk/aws-codedeploy@1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-codedeploy/-/aws-codedeploy-1.124.0.tgz#f4effb1148b010458cea987216cf15be0ceebe7f" - integrity sha512-BouN9XSNFo3L+tL+iWRHxaITnF6wLCIvDbmzfcgJoUEHQ04DAV7JP12NTZ7NbxP4VvcLo0HG0z/TURgTBZvjfg== - dependencies: - "@aws-cdk/aws-autoscaling" "1.124.0" - "@aws-cdk/aws-cloudwatch" "1.124.0" - "@aws-cdk/aws-ec2" "1.124.0" - "@aws-cdk/aws-elasticloadbalancing" "1.124.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-lambda" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/core" "1.124.0" - "@aws-cdk/custom-resources" "1.124.0" +"@aws-cdk/aws-codedeploy@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codedeploy/-/aws-codedeploy-1.176.0.tgz#b1852caf19606e4bb9ef11ec129da4cacd64cb9f" + integrity sha512-A4YsMhLaLg3lGEMN9bQx8V/xAZNpnKzNe5Kesmm38n8HXYgE6xF3YwlN7XIGjZUfIgH1RC3gK/shQbicXg7r9g== + dependencies: + "@aws-cdk/aws-autoscaling" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticloadbalancing" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" constructs "^3.3.69" -"@aws-cdk/aws-codeguruprofiler@1.124.0", "@aws-cdk/aws-codeguruprofiler@~1.124.0": +"@aws-cdk/aws-codeguruprofiler@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.124.0.tgz#bd146a5e3bb0b935f8a4e3386ea4e1c5f50e5809" integrity sha512-KSbxNZeIkp0C9PoSCpJAgFvX5BlrjRS62L9mMwaZZ3atzlrKJdvOhUPJ512UcA+y8GrsK4AU8cKlCznEtSWcsw== @@ -553,43 +732,52 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-codepipeline-actions@~1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-codepipeline-actions/-/aws-codepipeline-actions-1.124.0.tgz#db4675a85d58908d714df6b97d417a9ae91c2366" - integrity sha512-4nzIiYXKUEPYbCoVqmKo/U4JFHH1D+TUVB4nruy7qglBDAhF1HlJ3IpPudyHjzt2AIYXeB5MxWb7kr+q9i/2qA== +"@aws-cdk/aws-codeguruprofiler@1.176.0", "@aws-cdk/aws-codeguruprofiler@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.176.0.tgz#c6c501e92c361c6707281dafe363362602449602" + integrity sha512-mlZnBq9esNcEeOymVeGl14zol+CaGblqncsvUjOMxo1hr/JvjErjduF0RsdK+BWRhmR0AoT4wLJ1T2IfqTtkgg== dependencies: - "@aws-cdk/aws-cloudformation" "1.124.0" - "@aws-cdk/aws-codebuild" "1.124.0" - "@aws-cdk/aws-codecommit" "1.124.0" - "@aws-cdk/aws-codedeploy" "1.124.0" - "@aws-cdk/aws-codepipeline" "1.124.0" - "@aws-cdk/aws-ec2" "1.124.0" - "@aws-cdk/aws-ecr" "1.124.0" - "@aws-cdk/aws-ecs" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-events-targets" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-kms" "1.124.0" - "@aws-cdk/aws-lambda" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/aws-sns" "1.124.0" - "@aws-cdk/aws-sns-subscriptions" "1.124.0" - "@aws-cdk/aws-stepfunctions" "1.124.0" - "@aws-cdk/core" "1.124.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-codepipeline-actions@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codepipeline-actions/-/aws-codepipeline-actions-1.176.0.tgz#649df11e4a6c6643fff8dc643f746f81cd7f9500" + integrity sha512-c/ZBDz5mglOg79Hb3rW7gJmZp5GOkunKTqj3J9lCLvGjWSz7QeKqeyzUzSJwmOrFfS5W9Rez9PmAUvZ+LTxoNg== + dependencies: + "@aws-cdk/aws-cloudformation" "1.176.0" + "@aws-cdk/aws-codebuild" "1.176.0" + "@aws-cdk/aws-codecommit" "1.176.0" + "@aws-cdk/aws-codedeploy" "1.176.0" + "@aws-cdk/aws-codepipeline" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-ecr" "1.176.0" + "@aws-cdk/aws-ecs" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-events-targets" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sns-subscriptions" "1.176.0" + "@aws-cdk/aws-stepfunctions" "1.176.0" + "@aws-cdk/core" "1.176.0" case "1.6.3" constructs "^3.3.69" -"@aws-cdk/aws-codepipeline@1.124.0", "@aws-cdk/aws-codepipeline@~1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-codepipeline/-/aws-codepipeline-1.124.0.tgz#94fde76a9da0addaf1471939bc2a444fffb01555" - integrity sha512-MbNMl8vcQeoPVuE3ohg4ZRiCoFnC1UKyOgZT/GxxKhQpFUCggdAld+gK13ueuE0nGLooEYbfIgrxOcA+FFJyYg== - dependencies: - "@aws-cdk/aws-codestarnotifications" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-kms" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/core" "1.124.0" +"@aws-cdk/aws-codepipeline@1.176.0", "@aws-cdk/aws-codepipeline@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codepipeline/-/aws-codepipeline-1.176.0.tgz#f1c67e55121d51770b51a2aba0246d17f0f92b0c" + integrity sha512-ROeP93iHqeAfEEN8rMjQPLRZ7yZnCI9rb9NjKM1QZt428L4SIPxOVau4ia5+/TRgwoa0uXw+NnrnfaaDxgwJKg== + dependencies: + "@aws-cdk/aws-codestarnotifications" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" constructs "^3.3.69" "@aws-cdk/aws-codestarnotifications@1.124.0": @@ -600,6 +788,14 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-codestarnotifications@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-codestarnotifications/-/aws-codestarnotifications-1.176.0.tgz#f7d7fab92bf28449d68740fed8f141b4fca8ebb9" + integrity sha512-ZbsfmY5xxJPXL8xEb1dJEqE/tzEcZxoa05zybd8n1ShL+UXqVwK08j6YnYaP6RjMHLZS/D875nEaBvX1dp0iBg== + dependencies: + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-cognito@1.124.0", "@aws-cdk/aws-cognito@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-cognito/-/aws-cognito-1.124.0.tgz#73efcd0c223b1f16a2fa52bace680965a56d0ba7" @@ -613,6 +809,20 @@ constructs "^3.3.69" punycode "^2.1.1" +"@aws-cdk/aws-cognito@1.176.0", "@aws-cdk/aws-cognito@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-cognito/-/aws-cognito-1.176.0.tgz#35d8ff1c7c671743e09b4ad2112d16cfad0d8eec" + integrity sha512-6dN1Bhw87uhPo5wII0rCYWO4UCPsUuJREsEAvDH9QQsfykrUslMMpopeZId1bBsXnOTTY+VDqVsYwVbxePkG4A== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + punycode "^2.1.1" + "@aws-cdk/aws-dynamodb@1.124.0", "@aws-cdk/aws-dynamodb@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.124.0.tgz#4b5eb6759d04cc9d58d61549e40ca912327549ed" @@ -628,6 +838,21 @@ "@aws-cdk/custom-resources" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-dynamodb@1.176.0", "@aws-cdk/aws-dynamodb@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.176.0.tgz#9eaaba1e0a24c9e404783caf1b552df17cf2a3bd" + integrity sha512-NxjuW67z5UVCF/AVi8WW9DDWgWjMiFcHV+suj1VTCaffYLYefq5SleyZ7aFOPubo+AUK16cx2WhOnm3mpBNbHQ== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kinesis" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-ec2@1.124.0", "@aws-cdk/aws-ec2@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-ec2/-/aws-ec2-1.124.0.tgz#9bd5f1cc7d9efab4e9d1c7ac99f17e5ec5b2a8b8" @@ -646,6 +871,24 @@ "@aws-cdk/region-info" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-ec2@1.176.0", "@aws-cdk/aws-ec2@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-ec2/-/aws-ec2-1.176.0.tgz#c4a0a5f100b738df99296ab9fdebfdc0dd20b162" + integrity sha512-bHorCSLLcfmq3eEkJjnqSXa9wYkeAkHP+zpjA6NF+zttDKHi3nnS0CYc0d5ixu6f/8AIEJexrfi2FXBI6mh0+w== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-ssm" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-ecr-assets@1.124.0", "@aws-cdk/aws-ecr-assets@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.124.0.tgz#ad74b7afe91f07834d67b45410e53a74e8334e96" @@ -660,6 +903,19 @@ constructs "^3.3.69" minimatch "^3.0.4" +"@aws-cdk/aws-ecr-assets@1.176.0", "@aws-cdk/aws-ecr-assets@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.176.0.tgz#0e547606bc96570adc7ca3847db1d6aa9984978e" + integrity sha512-mP4nmRoyMMOBODw/dpH4G9umakuAuYPErWf8wqTDHnoKJYZjwy8ACdDsuwIJnH+s2EaW2HqMF7SFfxNIsitr/g== + dependencies: + "@aws-cdk/assets" "1.176.0" + "@aws-cdk/aws-ecr" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-ecr@1.124.0", "@aws-cdk/aws-ecr@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-ecr/-/aws-ecr-1.124.0.tgz#075f53ef70817867b1902ed06ff5f2c4c7d0e038" @@ -670,7 +926,50 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-ecs@1.124.0", "@aws-cdk/aws-ecs@~1.124.0": +"@aws-cdk/aws-ecr@1.176.0", "@aws-cdk/aws-ecr@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-ecr/-/aws-ecr-1.176.0.tgz#babbb1a9b946f7273adb86919aeb569d80285469" + integrity sha512-oMQ2EEaH24JLZVpjFy09I4yp1sn847h03ocZF6j2W+PrZQaeLQgUVWQgMkayJsDTgUcYV90j4wKU/uwRX50j6A== + dependencies: + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ecs@1.176.0", "@aws-cdk/aws-ecs@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-ecs/-/aws-ecs-1.176.0.tgz#9bf90e61200ffde46f642a39928c3317ecf91041" + integrity sha512-+eG/RsMxeR8cTOpKhLz9ZVqIG4JcSeGqgJbv2KF2mzjHDP5AwSRsVfCXoMGVeWdxvhkrrjRP2duScItDOgB/1Q== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.176.0" + "@aws-cdk/aws-autoscaling" "1.176.0" + "@aws-cdk/aws-autoscaling-hooktargets" "1.176.0" + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-ecr" "1.176.0" + "@aws-cdk/aws-ecr-assets" "1.176.0" + "@aws-cdk/aws-elasticloadbalancing" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/aws-route53-targets" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/aws-servicediscovery" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/aws-ssm" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ecs@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-ecs/-/aws-ecs-1.124.0.tgz#609e141542fbe9f4045ec7789e464b494a4ae54f" integrity sha512-uCW0oSJ6mQkyvIEXJKFcwkC5KxWVGEx3/1Un2NuUjjnoEaGg+PpO4/TkLUEJJyAFi8cS+KeZLPUD3PSzqXvB2Q== @@ -702,7 +1001,7 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-efs@1.124.0", "@aws-cdk/aws-efs@~1.124.0": +"@aws-cdk/aws-efs@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-efs/-/aws-efs-1.124.0.tgz#eb1d5ec6664d36d06ab88c755b96a40b3578d723" integrity sha512-bhzFlyTcFTxPO4eEqHh06DFR7kxqtUcTZe9Wbd/gGrksJIU6LpmFOvGzuxBtDb/YyrjQmDc3yU+aeQo9htCm6A== @@ -715,6 +1014,19 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-efs@1.176.0", "@aws-cdk/aws-efs@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-efs/-/aws-efs-1.176.0.tgz#4f48e94df32efc23c182d4541e2a345ecb6297e0" + integrity sha512-4kWRxaS4LML+QR9SavE2SuWidmvHCrzCWWmAp8dNuuJ3msAGAi2zcAn9GtCoLxu/7yFr75Nad1nTb2vWNv7sWg== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-elasticloadbalancing@1.124.0", "@aws-cdk/aws-elasticloadbalancing@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.124.0.tgz#09e28c88060a3ba5de00e66c6d5fd06972fbcd45" @@ -724,6 +1036,15 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-elasticloadbalancing@1.176.0", "@aws-cdk/aws-elasticloadbalancing@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.176.0.tgz#b0f3cd68167a29bdee9ca3927dd63f0eef42c778" + integrity sha512-7OoTJ7lZwuD9lrWzZ5SEiA6qyS+OR/39B1by/3k7osg4wLjLZ8SU2sLIeM10ThSCxdLf5yceWqWTvfWHwsNCKA== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-elasticloadbalancingv2@1.124.0", "@aws-cdk/aws-elasticloadbalancingv2@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.124.0.tgz#139eea27dd1fdbeeafe7318b2078a62dd7b00be7" @@ -741,6 +1062,24 @@ "@aws-cdk/region-info" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-elasticloadbalancingv2@1.176.0", "@aws-cdk/aws-elasticloadbalancingv2@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.176.0.tgz#390c3158ab9794b8fb70d428c3fb3fb520affa0e" + integrity sha512-OgW3nUgf4UP8AyfpMBcHdr1Dt324Zuht2Fb5IUute2gje/X0VCYznCtc3gT2riY7ECoP9fSoF2gJgGVVt6djRw== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-elasticsearch@1.124.0", "@aws-cdk/aws-elasticsearch@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticsearch/-/aws-elasticsearch-1.124.0.tgz#0a43ac017cd623d611f1df330b0b32bfdbd95249" @@ -758,29 +1097,47 @@ "@aws-cdk/custom-resources" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-events-targets@1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-events-targets/-/aws-events-targets-1.124.0.tgz#712980876ece51b386d17ecd441f700bfceb34f9" - integrity sha512-Ea/2LjwyaOI9rfnxeNUqd00Zvup+kaKSy2Ihvruymgb83rAq6EHdteXr5e05AgRhana6I+uXtbP7bX2YCKfAOw== - dependencies: - "@aws-cdk/aws-apigateway" "1.124.0" - "@aws-cdk/aws-codebuild" "1.124.0" - "@aws-cdk/aws-codepipeline" "1.124.0" - "@aws-cdk/aws-ec2" "1.124.0" - "@aws-cdk/aws-ecs" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-kinesis" "1.124.0" - "@aws-cdk/aws-kinesisfirehose" "1.124.0" - "@aws-cdk/aws-kms" "1.124.0" - "@aws-cdk/aws-lambda" "1.124.0" - "@aws-cdk/aws-logs" "1.124.0" - "@aws-cdk/aws-sns" "1.124.0" - "@aws-cdk/aws-sns-subscriptions" "1.124.0" - "@aws-cdk/aws-sqs" "1.124.0" - "@aws-cdk/aws-stepfunctions" "1.124.0" - "@aws-cdk/core" "1.124.0" - "@aws-cdk/custom-resources" "1.124.0" +"@aws-cdk/aws-elasticsearch@1.176.0", "@aws-cdk/aws-elasticsearch@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-elasticsearch/-/aws-elasticsearch-1.176.0.tgz#5eed0e4096503f59b0691fca1f002f37d5bd27e0" + integrity sha512-kISrLME5QjiGq8+d6oNRQCq3lgPdDublUZi0HkX18a55ROA512ZuH7ZTaRGgnL9/I5qcU4gpChnZsXlkZJhE6g== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-events-targets@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-events-targets/-/aws-events-targets-1.176.0.tgz#bd9d28fa71ea3e19f817449adf21d09003bb4d24" + integrity sha512-e3WwFfQ38FnfPKznfCp8MxniaX2x+zGFk2mZDSwA47yL+KhbHMvxlAoWtME2bGIToO+WaJQ71ArHsPiQUVOCUQ== + dependencies: + "@aws-cdk/aws-apigateway" "1.176.0" + "@aws-cdk/aws-autoscaling" "1.176.0" + "@aws-cdk/aws-codebuild" "1.176.0" + "@aws-cdk/aws-codepipeline" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-ecs" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kinesis" "1.176.0" + "@aws-cdk/aws-kinesisfirehose" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sns-subscriptions" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/aws-stepfunctions" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" constructs "^3.3.69" "@aws-cdk/aws-events@1.124.0", "@aws-cdk/aws-events@~1.124.0": @@ -792,6 +1149,15 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-events@1.176.0", "@aws-cdk/aws-events@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-events/-/aws-events-1.176.0.tgz#2a3cd642eaa7777afd652465693b180e4c275c57" + integrity sha512-ROhPFkL/4GTnn0m6FsF+lMjlTpj3JWYF2rQ5KlFfPEGGgh2+RZUdcPa7MDKZkQDCXXVvLFqZ038R9eLeXHAl1g== + dependencies: + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-globalaccelerator@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-globalaccelerator/-/aws-globalaccelerator-1.124.0.tgz#8f2993cc908fd4ca46e416c9e01d75a9cdb775ad" @@ -802,6 +1168,16 @@ "@aws-cdk/custom-resources" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-globalaccelerator@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-globalaccelerator/-/aws-globalaccelerator-1.176.0.tgz#eceb7df2bdfebaadb2a697ab1cd78c7e432a4150" + integrity sha512-nx1IJ/XsJ9GeblC9PTaD2/11UbrI1EV5/RZwADPfs7+OeU/7OrgK0qibWu9UcDNa1jkkD1QIxZqsu5qiiaIChQ== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-iam@1.124.0", "@aws-cdk/aws-iam@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-iam/-/aws-iam-1.124.0.tgz#98ea03211843f06d6f8eb1f33faed9536dc3444f" @@ -811,6 +1187,16 @@ "@aws-cdk/region-info" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-iam@1.176.0", "@aws-cdk/aws-iam@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-iam/-/aws-iam-1.176.0.tgz#a83639a010231a4e1b169f1143ce7bc6af059049" + integrity sha512-fiOxE2xRYH/HjK6bf/QrLMvguAmYwMhxsnV3gYNEMX1Jz8UD7/soiMVXmUIfR3vx8cBaUkvcnmymXTrU99c4/g== + dependencies: + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-kinesis@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-kinesis/-/aws-kinesis-1.124.0.tgz#48acc4193285310a95e23df19fcef5636ab1846a" @@ -823,21 +1209,33 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-kinesisfirehose@1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-kinesisfirehose/-/aws-kinesisfirehose-1.124.0.tgz#e6c29746f12b17e94fc00cd087d90b840ee7e8cd" - integrity sha512-VOpyytJIuthU3k4p5IPLMQXHGcRvJc5NiNbOaudNVXBepH3utaVuu55kDhowVFVrYMF1ZhP9ZC+Gp+yG1auUEA== +"@aws-cdk/aws-kinesis@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-kinesis/-/aws-kinesis-1.176.0.tgz#0f0fe7fe4c75dd3fa596c36af39de84bf1d4d0de" + integrity sha512-UxoRV8RYMnxKgFLr3JHhWVUyP8hRgnrR3zgOEzzUI53Nuknlgh6wkuVBWz6H3FIVGldkPmJ93hLhtFBMNL/hwg== dependencies: - "@aws-cdk/aws-cloudwatch" "1.124.0" - "@aws-cdk/aws-ec2" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-kinesis" "1.124.0" - "@aws-cdk/aws-kms" "1.124.0" - "@aws-cdk/aws-lambda" "1.124.0" - "@aws-cdk/aws-logs" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/core" "1.124.0" - "@aws-cdk/region-info" "1.124.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-kinesisfirehose@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-kinesisfirehose/-/aws-kinesisfirehose-1.176.0.tgz#0bf722a83d596facc43771186d0d13d75509e27b" + integrity sha512-5ANIw9jbvhh5qio2NOtPFAX5c80eMscGq5WO2VAcpGUEwEX/Kjo7bDVJQF9d6k6/2f8yIOaSp1b5DLwLUWgx+w== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kinesis" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/region-info" "1.176.0" constructs "^3.3.69" "@aws-cdk/aws-kms@1.124.0", "@aws-cdk/aws-kms@~1.124.0": @@ -851,6 +1249,17 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-kms@1.176.0", "@aws-cdk/aws-kms@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-kms/-/aws-kms-1.176.0.tgz#d75e0bd7ab43dc51f83bb39c198abf4daf0c408e" + integrity sha512-UmVQNwPYIlV4d1rDLDZZuxDs/YQWZfKAoQ+EyMpTmMq1mSYE2l+TLLe8WLwJB/IRkAgwMT62sc36IgHk7uauQw== + dependencies: + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-lambda@1.124.0", "@aws-cdk/aws-lambda@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-lambda/-/aws-lambda-1.124.0.tgz#2dd2df0160a935a3af1eb9873e91ce45e0ba6f98" @@ -876,6 +1285,32 @@ "@aws-cdk/region-info" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-lambda@1.176.0", "@aws-cdk/aws-lambda@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-lambda/-/aws-lambda-1.176.0.tgz#91e7317640f78e39400135a97b2fb319c5bb786c" + integrity sha512-DmQaqvW4mEK2jQid6wdIHRVtfM+VUEAmb2FbRZQ/K8V1uc8CjKeUfv9+p+ZTJk9CRe5rgGH4Xirhno4LcKotYw== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-codeguruprofiler" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-ecr" "1.176.0" + "@aws-cdk/aws-ecr-assets" "1.176.0" + "@aws-cdk/aws-efs" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/aws-signer" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-logs@1.124.0", "@aws-cdk/aws-logs@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-logs/-/aws-logs-1.124.0.tgz#f51579f2e6fb3c209500e0bff781e7e9408b1cde" @@ -888,7 +1323,37 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-rds@1.124.0", "@aws-cdk/aws-rds@~1.124.0": +"@aws-cdk/aws-logs@1.176.0", "@aws-cdk/aws-logs@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-logs/-/aws-logs-1.176.0.tgz#9e2517ee94fe2e5c47302356d3d1440719f734b9" + integrity sha512-i02n8YL5T/V8gXhWXRkfGwP9a5KIncbbgsSJQr8TgE7h/99zMaujoGqzqxXpVYK5HAoh3DvjhYrl8eJts4nhCA== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-s3-assets" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-opensearchservice@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-opensearchservice/-/aws-opensearchservice-1.176.0.tgz#4f28f1b63aaf3b7acf057879d0409dd9870e911f" + integrity sha512-3gM6o0ISqh2x9cXQLrNpv6WRPcJw8KRBADGp/nOlq/GhhqNqvJ6wxO46YZcaYcNcC/QCxieEqGEA7yHRrbW5nQ== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.176.0" + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-rds@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-rds/-/aws-rds-1.124.0.tgz#578262bc132ccbd9a48b84907306d802d75d921e" integrity sha512-ndr4XkS+wdI6vz5a2z0J9pdytdnYqQsFh0gpyP0rc9b1ANzYw/j9oMV/By9c6hhdUU4h5pKyMMqtHiWKMaoNlw== @@ -905,7 +1370,24 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-route53-targets@1.124.0", "@aws-cdk/aws-route53-targets@~1.124.0": +"@aws-cdk/aws-rds@1.176.0", "@aws-cdk/aws-rds@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-rds/-/aws-rds-1.176.0.tgz#29b8e98f21b61b7bacb5c798a2cd14b98472976a" + integrity sha512-DsvC0NBBfoTa6fYPLmb78cfcBL3aia7TtARcph+Od1VXloXOuLRXBdbH3/fLqOEF76oove0XDn2fxBPjtFU1Xg== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/aws-secretsmanager" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-route53-targets@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.124.0.tgz#fa1ddcce2af9c552574ab96d1af946ca717b9021" integrity sha512-6+hN0zYlDmdXUZHmn5zVFD/sfH788212nLfRUo3V4Lg/XsV4vS3OV8b8wsctZCehuF1lagSIIF7rQJlGoYSBnA== @@ -924,6 +1406,25 @@ "@aws-cdk/region-info" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-route53-targets@1.176.0", "@aws-cdk/aws-route53-targets@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.176.0.tgz#ec3545512e8881a00bfcebbbf042a3b071504aca" + integrity sha512-xbHzviouNpj6op3nmNFwBby1E2zhjb2hd4oz2zqz+Y54qIDe1M3BSIdd4F+aeJPldr/ECE8WIFu40EOeLUeEKw== + dependencies: + "@aws-cdk/aws-apigateway" "1.176.0" + "@aws-cdk/aws-cloudfront" "1.176.0" + "@aws-cdk/aws-cognito" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticloadbalancing" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-globalaccelerator" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-route53@1.124.0", "@aws-cdk/aws-route53@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-route53/-/aws-route53-1.124.0.tgz#a55b16dd21a67e5212640977bb9f41eb7824f4c6" @@ -937,6 +1438,19 @@ "@aws-cdk/custom-resources" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-route53@1.176.0", "@aws-cdk/aws-route53@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-route53/-/aws-route53-1.176.0.tgz#58e503857605f221e28d587cac91633590117ad9" + integrity sha512-ZunWQGHE2qWEYCs4lo5/Tg5CfkV3QCCn/0UT3pu0m14vD0TSMSQ78sCKnOYTwlMzeoTEZ+uU3BrHPdHF5MfXSA== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/custom-resources" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-s3-assets@1.124.0", "@aws-cdk/aws-s3-assets@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.124.0.tgz#43a3308b84bf6e10c9c8c90948d705591819d3a9" @@ -950,6 +1464,19 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-s3-assets@1.176.0", "@aws-cdk/aws-s3-assets@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.176.0.tgz#43f76c7b82642a94e50d1aefd9a0aef81c825f72" + integrity sha512-V3wtIoE8en5lZ1sOF7bTfiCfO2zvwanZMBWl/b1MNt1P/h0jo33f29VlU1LiyQgmQuLfEXxJyPbq2HRTW/wMkA== + dependencies: + "@aws-cdk/assets" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-s3@1.124.0", "@aws-cdk/aws-s3@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-s3/-/aws-s3-1.124.0.tgz#19c8d2af484ec0db6eb8715b837ec3ae371173dc" @@ -962,6 +1489,18 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-s3@1.176.0", "@aws-cdk/aws-s3@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-s3/-/aws-s3-1.176.0.tgz#2681328be61790ef4b232a5f2236486f46ae5a99" + integrity sha512-zAIX6nxPJBHh33dVTCUVu43a77wonsdHEQRo3Hice4BFrfqAOTaWwCRsjiU29dD4lIwEGGdXpm6SECFjJih3rw== + dependencies: + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-sam@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-sam/-/aws-sam-1.124.0.tgz#cc20765fb556f1691ca64963a146c1fb106da66b" @@ -970,6 +1509,14 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-sam@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-sam/-/aws-sam-1.176.0.tgz#d4f223078f06ae8d606bfd595d70309bb44f5e4c" + integrity sha512-wyiCvg4melYevFfaPYs7s2xz70KIWPxk9IotvAeBihsq+6Q4uH+skcOsLRVpDnmeTTjS7HynyQXh9aLQisljWQ== + dependencies: + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-secretsmanager@1.124.0", "@aws-cdk/aws-secretsmanager@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.124.0.tgz#6d8f7b5af54799fa6333863d4ba2503785d0af6e" @@ -984,6 +1531,20 @@ "@aws-cdk/cx-api" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-secretsmanager@1.176.0", "@aws-cdk/aws-secretsmanager@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.176.0.tgz#928211550beff34d2b0777190176911da8ba473d" + integrity sha512-RqGe7D80l62No9nNGLKfp81UqYZoRykB+JbQ+oIa6Y4i+SAQsuMVAKcv76s8H0k9mHEE5qN/0OpnLvPMxY6eBg== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-sam" "1.176.0" + "@aws-cdk/core" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-servicediscovery@1.124.0", "@aws-cdk/aws-servicediscovery@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-servicediscovery/-/aws-servicediscovery-1.124.0.tgz#5e3389ddcdf01afbcf043a4145655f6a9037e163" @@ -995,6 +1556,17 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-servicediscovery@1.176.0", "@aws-cdk/aws-servicediscovery@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-servicediscovery/-/aws-servicediscovery-1.176.0.tgz#6eecad099e6763d90bd0944a1f8574941ebcefb9" + integrity sha512-qDDATtN2iPvvF8KUW0wei3Xw0R1/yRs7ENB0gC/dgmhO4A/P63qdRFgIHGBvi+09eqX1A4rsudzaNQSOcHaBTw== + dependencies: + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.176.0" + "@aws-cdk/aws-route53" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-signer@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-signer/-/aws-signer-1.124.0.tgz#7acba70bb0bf4d24e4a6df1a0628487698ca9187" @@ -1003,7 +1575,15 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-sns-subscriptions@1.124.0", "@aws-cdk/aws-sns-subscriptions@~1.124.0": +"@aws-cdk/aws-signer@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-signer/-/aws-signer-1.176.0.tgz#69a8c905900cada67c95518789cf93b21eb56f82" + integrity sha512-2UemVwWtpGMRt/HbEoS21+DgnG2rZiFUWSm9gA/L0bLScX2XmAtdZPUmp/2DVYvYmmC07D9GMIqk3M6UHL3sSA== + dependencies: + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-sns-subscriptions@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.124.0.tgz#1668d3f7ca56c56eab923fe26fe7f5c5029f9016" integrity sha512-7ycJOzCwNZIx8lYOunCVvU5rXv5dtUnayvMNeVKlKz+3in1p+7/XmCxDsDibVg6mbd0yE+G6LF+HToc0iFEc9A== @@ -1016,6 +1596,19 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-sns-subscriptions@1.176.0", "@aws-cdk/aws-sns-subscriptions@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.176.0.tgz#78ddb7ede4b97ee7a3b6068f1cc667262dab5e96" + integrity sha512-RsBMoLr7COsJ90ZQGqxc2WdMJVD9Gjd5K+glBoU2jp+qYzd0zu8Fw0Qr9sI6ROQB9R7xihQNY9hr4VKdXB0ehA== + dependencies: + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-sns@1.124.0", "@aws-cdk/aws-sns@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-sns/-/aws-sns-1.124.0.tgz#e445797e72f48f7b6ceca5ec6b97230045c95f5b" @@ -1030,6 +1623,20 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" +"@aws-cdk/aws-sns@1.176.0", "@aws-cdk/aws-sns@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-sns/-/aws-sns-1.176.0.tgz#a831830f6ff193a2560e4d6028391b623c2a84fc" + integrity sha512-XPqO2HhvFnCX1hFccLwM330kxvHPZ18VTdmNiZmKV2LPbTb1uPKQmgKY92jaWIH3pXcAZDrrGevYNJ8ZyLOFiA== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-codestarnotifications" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/aws-sqs" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + "@aws-cdk/aws-sqs@1.124.0", "@aws-cdk/aws-sqs@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-sqs/-/aws-sqs-1.124.0.tgz#984d5e42d275b11f4f4ecbe1fd643e93c2f85430" @@ -1041,7 +1648,18 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-ssm@1.124.0", "@aws-cdk/aws-ssm@~1.124.0": +"@aws-cdk/aws-sqs@1.176.0", "@aws-cdk/aws-sqs@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-sqs/-/aws-sqs-1.176.0.tgz#7d9ecb9f61aae3b97fe10f5dbc67cbcafae1a137" + integrity sha512-EFI4vogmLD3N5RbyY7g821czm/yhZoFgHbh8hYjEFLNPfrLnTaKZB55oStFXj+NN9mGnKK5jcVAVudN521R4Cg== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ssm@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/aws-ssm/-/aws-ssm-1.124.0.tgz#54c6f6959ea0327b38a865bec76445aa23bbda51" integrity sha512-41mopAh9ZTg3SL04P0WOO1d3sCDYJL3A/fPWCxDuzizSojdI2EWqvKf/5Lu1NY1jYZG+2ls7xqgG4b8x9BDILw== @@ -1052,17 +1670,28 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/aws-stepfunctions@1.124.0": - version "1.124.0" - resolved "https://registry.npmjs.org/@aws-cdk/aws-stepfunctions/-/aws-stepfunctions-1.124.0.tgz#44421deb4ff92aae020ffa0bcd6126087a2c523b" - integrity sha512-mnihKu0zm36GhrR7hNMIsw6uGUQwyn4cYezjyz+YPicIGLO+qTcre1X5hzhXE63bv1nYJKWMhEd9ZVfoP2RJNQ== +"@aws-cdk/aws-ssm@1.176.0", "@aws-cdk/aws-ssm@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-ssm/-/aws-ssm-1.176.0.tgz#9f4e378165ad0a2801deaa12107ed0b377dd03ee" + integrity sha512-aGfS7wG9NHCIpdxdJrKk1Ts+V3xLURVX9PwNiaTJyuaMQXWwLrZhYbo3A6KsUSyYNackwGFnmhpXDVQVNAzzbA== dependencies: - "@aws-cdk/aws-cloudwatch" "1.124.0" - "@aws-cdk/aws-events" "1.124.0" - "@aws-cdk/aws-iam" "1.124.0" - "@aws-cdk/aws-logs" "1.124.0" - "@aws-cdk/aws-s3" "1.124.0" - "@aws-cdk/core" "1.124.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-kms" "1.176.0" + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/aws-stepfunctions@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/aws-stepfunctions/-/aws-stepfunctions-1.176.0.tgz#6021fd1237170a91e2a619b66895562b4f32a98c" + integrity sha512-97mhrYH9Oh9a3B3K+0LuZjYCRzwVryKs47thpvXq4clncn6QQwN7IyTThYlmzo9wdqAT+hYW4URCXpjNmBcegQ== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.176.0" + "@aws-cdk/aws-events" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-s3" "1.176.0" + "@aws-cdk/core" "1.176.0" constructs "^3.3.69" "@aws-cdk/cfnspec@1.124.0": @@ -1072,7 +1701,15 @@ dependencies: md5 "^2.3.0" -"@aws-cdk/cloud-assembly-schema@1.124.0", "@aws-cdk/cloud-assembly-schema@~1.124.0": +"@aws-cdk/cfnspec@1.176.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-1.176.0.tgz#21aae5c1a37b563b3e1261b99aaa6003f5997701" + integrity sha512-IiYsZns/ynhuj0DPNcvacBvj5I46v5X+sxJF0x7gw0gdaSrFTJOLu3Lbfc7yi3q/os7uOhnURQfcwAVL4TTgKA== + dependencies: + fs-extra "^9.1.0" + md5 "^2.3.0" + +"@aws-cdk/cloud-assembly-schema@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.124.0.tgz#fcfa4051933a914073bc841af5b462bf74f309ea" integrity sha512-emrkfHetGoh6lhrT7ato06VAZun1UVYjJueL9avHxFgzX5qiobP4iWk6M0EZpk7yHlDOtJtp86MJalYYMS6Oww== @@ -1080,7 +1717,15 @@ jsonschema "^1.4.0" semver "^7.3.5" -"@aws-cdk/cloudformation-diff@1.124.0", "@aws-cdk/cloudformation-diff@~1.124.0": +"@aws-cdk/cloud-assembly-schema@1.176.0", "@aws-cdk/cloud-assembly-schema@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.176.0.tgz#1fcd689d3ac78016125419492edd802dd94e1213" + integrity sha512-luAxm6bZFHwyz/8cviTbLiLzpNdUH4VFeAEruxiHnpyHq33haI7kuXl4J6mcHf3V37AgKsdouhIh8dfyby/GLg== + dependencies: + jsonschema "^1.4.1" + semver "^7.3.7" + +"@aws-cdk/cloudformation-diff@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.124.0.tgz#3cd7d6229220ea5bd1e4200bce6916ac12ecdec7" integrity sha512-gUmhwfHE/AolTiVtjPCJGf0Gsp5nV+PDAtcJ7ZtjrLMJ2vIKonT29qbeFclyw8EBCCfX5SLH7ByeaUiFFocj2w== @@ -1093,6 +1738,19 @@ string-width "^4.2.2" table "^6.7.1" +"@aws-cdk/cloudformation-diff@1.176.0", "@aws-cdk/cloudformation-diff@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.176.0.tgz#4998c6926c6580a23318147ec24b288b0f708b9d" + integrity sha512-It5fP2sscmTzmwWpYzD8D9Tm3tN0qXejMHHTrIlf5l7sSBgQPlbuA/U3Yr9Uf/p5M6d81DxsITLYxwmC5RM0bg== + dependencies: + "@aws-cdk/cfnspec" "1.176.0" + "@types/node" "^10.17.60" + chalk "^4" + diff "^5.1.0" + fast-deep-equal "^3.1.3" + string-width "^4.2.3" + table "^6.8.0" + "@aws-cdk/core@1.124.0", "@aws-cdk/core@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/core/-/core-1.124.0.tgz#9187e0ce69225ad58feb11ec95c92cebaeddca53" @@ -1107,7 +1765,21 @@ ignore "^5.1.8" minimatch "^3.0.4" -"@aws-cdk/custom-resources@1.124.0", "@aws-cdk/custom-resources@~1.124.0": +"@aws-cdk/core@1.176.0", "@aws-cdk/core@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/core/-/core-1.176.0.tgz#0da9b8bd2f1b76eabc7bbf7cda56bb361ac2ec02" + integrity sha512-5ou6aUqeFihacDREM0VWCN1n0SglNxKY/Xs+bUMPgrOc99vuU8am+XC4VZLaSZbH/MnXWodmJX69YZL8xBfwtQ== + dependencies: + "@aws-cdk/cloud-assembly-schema" "1.176.0" + "@aws-cdk/cx-api" "1.176.0" + "@aws-cdk/region-info" "1.176.0" + "@balena/dockerignore" "^1.0.2" + constructs "^3.3.69" + fs-extra "^9.1.0" + ignore "^5.2.0" + minimatch "^3.1.2" + +"@aws-cdk/custom-resources@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/custom-resources/-/custom-resources-1.124.0.tgz#924cf3e2fbe15204266f00727cc23f45fb8d6102" integrity sha512-sR9igvDNXTscRs3YjXab32u5vs1SLtOr6pxxnzxt53wZ6vkzOwEUGpXMY5seXd/IWKe5vV1LhTfFZ+U+lG7tsQ== @@ -1121,7 +1793,21 @@ "@aws-cdk/core" "1.124.0" constructs "^3.3.69" -"@aws-cdk/cx-api@1.124.0", "@aws-cdk/cx-api@~1.124.0": +"@aws-cdk/custom-resources@1.176.0", "@aws-cdk/custom-resources@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/custom-resources/-/custom-resources-1.176.0.tgz#66b7ef41580507202ec33afe021114ccd7560d3d" + integrity sha512-61jG/kfCU4G8dAMF9exMx9DcQ1xuj8c4btnzMMxdilHfdgrPS+kTBuF2RZqqEp3rm/1pz6AEfMTbsHRhqjsNxQ== + dependencies: + "@aws-cdk/aws-cloudformation" "1.176.0" + "@aws-cdk/aws-ec2" "1.176.0" + "@aws-cdk/aws-iam" "1.176.0" + "@aws-cdk/aws-lambda" "1.176.0" + "@aws-cdk/aws-logs" "1.176.0" + "@aws-cdk/aws-sns" "1.176.0" + "@aws-cdk/core" "1.176.0" + constructs "^3.3.69" + +"@aws-cdk/cx-api@1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.124.0.tgz#456877af5fe5d9eef8e9ce1d896ee15960024b24" integrity sha512-InBcAoFJ0Ail7/IhJhhw2OwGyWgBv4HShRA20/czxvlQ2pOezcUxQOCJr5USM6dGvTOlDL38XVrw469m9boUzw== @@ -1129,11 +1815,24 @@ "@aws-cdk/cloud-assembly-schema" "1.124.0" semver "^7.3.5" +"@aws-cdk/cx-api@1.176.0", "@aws-cdk/cx-api@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.176.0.tgz#9b8eb2297e1f5b5812c18d17b2d3cefd0c4b70e8" + integrity sha512-oEIy8NRyDabTTgVPEYuklqGaDGUH0xzdY/i4JJzXGD3BcRNbawSe0HeBeCf6dpjj8+caV6yiBJ6tk/dyQjtXaA== + dependencies: + "@aws-cdk/cloud-assembly-schema" "1.176.0" + semver "^7.3.7" + "@aws-cdk/region-info@1.124.0", "@aws-cdk/region-info@~1.124.0": version "1.124.0" resolved "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.124.0.tgz#541a6372b89a3385cc0cf3e2d71f1b917503be24" integrity sha512-v8Msal5kCv5Juscj6Dxjzx4HHiYKD3rWDLBAvaDN/V3zCNGga3s8M2aM/n7po7HLjVW333VzyuOCHBYnSrtMIg== +"@aws-cdk/region-info@1.176.0", "@aws-cdk/region-info@^1.159.0": + version "1.176.0" + resolved "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.176.0.tgz#0063a75f1a5fdebc6a09b864d33675b17d93fb42" + integrity sha512-pBGFWKxTbEl8X8yViSM2Jw7UVfs5L/N+P63cJU53KXWepVUS0BRUEctGNmUfy5EghiWp+9hIU2ZiP2UhrTW8+w== + "@aws-crypto/crc32@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz#4ad432a3c03ec3087c5540ff6e41e6565d2dc153" @@ -9021,7 +9720,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -10082,7 +10781,7 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0: +diff@^5.0.0, diff@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== @@ -13306,7 +14005,7 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jsonschema@^1.4.0: +jsonschema@^1.4.0, jsonschema@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== @@ -16939,7 +17638,7 @@ symbol-tree@^3.2.4: resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^6.0.9, table@^6.7.1: +table@^6.0.9, table@^6.7.1, table@^6.8.0: version "6.8.0" resolved "https://registry.npmjs.org/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== From 64a9c0efb79253246f5b85c78d1e32c5330ec906 Mon Sep 17 00:00:00 2001 From: Zeyu Li Date: Mon, 17 Oct 2022 09:54:25 -0700 Subject: [PATCH 10/12] fix(e2e): set longer timeout for searchable migration (#885) --- .../transformer-migrations/searchable-migration.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/amplify-e2e-tests/src/__tests__/transformer-migrations/searchable-migration.test.ts b/packages/amplify-e2e-tests/src/__tests__/transformer-migrations/searchable-migration.test.ts index da26020051..639fecdc2f 100644 --- a/packages/amplify-e2e-tests/src/__tests__/transformer-migrations/searchable-migration.test.ts +++ b/packages/amplify-e2e-tests/src/__tests__/transformer-migrations/searchable-migration.test.ts @@ -13,6 +13,8 @@ import gql from 'graphql-tag'; import AWSAppSyncClient, { AUTH_TYPE } from 'aws-appsync'; (global as any).fetch = require('node-fetch'); +jest.setTimeout(120 * 60 * 1000); // Set timeout to 2 hour because of creating/deleting searchable instance + describe('transformer model searchable migration test', () => { let projRoot: string; let projectName: string; From 00d03a4bcb6973225a88e18697f4aa080cb43e88 Mon Sep 17 00:00:00 2001 From: Alexander Harris Date: Tue, 18 Oct 2022 15:53:38 -0700 Subject: [PATCH 11/12] chore: migrate data forced updates into api category package --- .../force-updates/auth-notifications.ts | 200 +++++++++++ .../src/force-updates/auth-notifications.ts | 340 ++++++++++++++++++ .../src/force-updates/index.ts | 25 ++ packages/amplify-category-api/src/index.ts | 1 + 4 files changed, 566 insertions(+) create mode 100644 packages/amplify-category-api/src/__tests__/force-updates/auth-notifications.ts create mode 100644 packages/amplify-category-api/src/force-updates/auth-notifications.ts create mode 100644 packages/amplify-category-api/src/force-updates/index.ts diff --git a/packages/amplify-category-api/src/__tests__/force-updates/auth-notifications.ts b/packages/amplify-category-api/src/__tests__/force-updates/auth-notifications.ts new file mode 100644 index 0000000000..f2d06ed0da --- /dev/null +++ b/packages/amplify-category-api/src/__tests__/force-updates/auth-notifications.ts @@ -0,0 +1,200 @@ +import { collectDirectivesByType } from 'graphql-transformer-core'; +import { parse } from 'graphql'; +import { + $TSContext, + FeatureFlags, + pathManager, + stateManager, +} from 'amplify-cli-core'; +import { + displayAuthNotification, + hasFieldAuthDirectives, + notifyFieldAuthSecurityChange, + notifyListQuerySecurityChange, + notifySecurityEnhancement, +} from '../../force-updates/auth-notifications'; + +jest.mock('amplify-cli-core'); + +const FeatureFlagsMock = FeatureFlags as jest.Mocked; +FeatureFlagsMock.getNumber.mockReturnValue(2); + +const stateManagerMock = stateManager as jest.Mocked; +// eslint-disable-next-line spellcheck/spell-checker +stateManagerMock.getCLIJSON.mockReturnValue({ features: { graphqltransformer: {} } }); + +const contextMock = { + amplify: {}, + parameters: { + first: 'resourceName', + }, +} as unknown as $TSContext; + +describe('displayAuthNotification', () => { + it('level "off" returns true', () => { + const map: any = collectDirectivesByType(` + type MyModel @model(subscriptions: { level: off }) { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(true); + }); + + it('level "null" returns true', () => { + const map: any = collectDirectivesByType(` + type MyModel @model(subscriptions: { level: null }) { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(true); + }); + + it('subscriptions is null returns true', () => { + const map: any = collectDirectivesByType(` + type MyModel @model(subscriptions: null) { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(true); + }); + + it('"public" returns false', () => { + const map: any = collectDirectivesByType(` + type MyModel @model(subscriptions: { level: public }) { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(false); + }); + + it('"on" returns false', () => { + const map: any = collectDirectivesByType(` + type MyModel @model(subscriptions: { level: on }) { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(false); + }); + + it('absent value returns false', () => { + const map: any = collectDirectivesByType(` + type MyModel @model { + id: ID! + } + `); + const set: Set = new Set(['MyModel']); + + expect(displayAuthNotification(map, set)).toBe(false); + }); +}); + +describe('hasFieldAuthDirectives', () => { + it('returns types with field auth directives', () => { + const doc = parse(` + type TypeWithFieldAuth @auth(rules: { allow: private, operations: [read] }) { + fieldWithAuth: String! @auth(rules: { allow: groups, group: "admin" }) + } + + type TypeWithoutFieldAuth @auth(rules: { allow: private, operations: [read] }) { + fieldWithoutAuth: String! + } + `); + + const result = hasFieldAuthDirectives(doc); + + expect(result).toContain('TypeWithFieldAuth'); + expect(result).not.toContain('TypeWithoutFieldAuth'); + }); + + it('returns empty set when no field auth', () => { + const doc = parse(` + type TypeWithoutFieldAuth @auth(rules: { allow: private, operations: [read] }) { + fieldWithoutAuth: String! + } + `); + + const result = hasFieldAuthDirectives(doc); + expect(result.size).toBe(0); + }); + + it('returns empty set with nullable and field auth', () => { + const doc = parse(` + type TypeWithFieldAuth @auth(rules: { allow: private, operations: [read] }) { + fieldWithAuth: String @auth(rules: { allow: groups, group: "admin" }) + } + `); + + const result = hasFieldAuthDirectives(doc); + expect(result.size).toBe(0); + }); +}); + +describe('push notifications', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('notifyFieldAuthSecurityChange should exit without fail when there is not api resource directory', async () => { + (FeatureFlags.getBoolean).mockReturnValue(true); + (pathManager.getResourceDirectoryPath).mockReturnValue('path-to-non-existing-resource-directory'); + (stateManager.getMeta).mockReturnValue({ + api: { + 'test-api-dev': { + service: 'AppSync', + output: { + name: 'test-api-dev', + }, + }, + }, + }); + (FeatureFlags.ensureFeatureFlag).mockImplementation(() => { /* noop */ }); + await notifyFieldAuthSecurityChange(contextMock); + // eslint-disable-next-line spellcheck/spell-checker + expect(FeatureFlags.ensureFeatureFlag).toHaveBeenCalledWith('graphqltransformer', 'showFieldAuthNotification'); + }); + + it('notifyListQuerySecurityChange should exit without fail when there is not api resource directory', async () => { + (pathManager.getResourceDirectoryPath).mockReturnValue('path-to-non-existing-resource-directory'); + (stateManager.getMeta).mockReturnValue({ + api: { + 'test-api-dev': { + service: 'AppSync', + output: { + name: 'test-api-dev', + }, + }, + }, + }); + (FeatureFlags.ensureFeatureFlag).mockImplementation(() => { /* noop */ }); + await notifyListQuerySecurityChange(contextMock); + }); + + it('notifySecurityEnhancement should exit without fail when there is not api resource directory', async () => { + (FeatureFlags.getBoolean).mockReturnValue(true); + (pathManager.getResourceDirectoryPath).mockReturnValue('path-to-non-existing-resource-directory'); + (stateManager.getMeta).mockReturnValue({ + api: { + 'test-api-dev': { + service: 'AppSync', + output: { + name: 'test-api-dev', + }, + }, + }, + }); + (FeatureFlags.ensureFeatureFlag).mockImplementation(() => { /* noop */ }); + await notifySecurityEnhancement(contextMock); + // eslint-disable-next-line spellcheck/spell-checker + expect(FeatureFlags.ensureFeatureFlag).toHaveBeenCalledWith('graphqltransformer', 'securityEnhancementNotification'); + }); +}); diff --git a/packages/amplify-category-api/src/force-updates/auth-notifications.ts b/packages/amplify-category-api/src/force-updates/auth-notifications.ts new file mode 100644 index 0000000000..05c2a1b2e7 --- /dev/null +++ b/packages/amplify-category-api/src/force-updates/auth-notifications.ts @@ -0,0 +1,340 @@ +/* eslint-disable array-callback-return, consistent-return, no-await-in-loop */ +import { + $TSAny, + $TSContext, + exitOnNextTick, + FeatureFlags, + pathManager, + stateManager, +} from 'amplify-cli-core'; +import { printer, prompter } from 'amplify-prompts'; +import fs from 'fs-extra'; +import { + DirectiveNode, + DocumentNode, + FieldDefinitionNode, + FieldNode, + parse, +} from 'graphql'; +import { + collectDirectivesByType, + collectDirectivesByTypeNames, + readProjectConfiguration, +} from 'graphql-transformer-core'; +import path from 'path'; + +const setNotificationFlag = async (projectPath: string, flagName: string, value: boolean): Promise => { + await FeatureFlags.ensureFeatureFlag('graphqltransformer', flagName); + + const config = stateManager.getCLIJSON(projectPath, undefined, { + throwIfNotExist: false, + preserveComments: true, + }); + + if (config) { + config.features.graphqltransformer[flagName] = value; + stateManager.setCLIJSON(projectPath, config); + await FeatureFlags.reloadValues(); + } +}; + +const loadResolvers = async (apiResourceDirectory: string): Promise> => { + const resolvers = {}; + + const resolverDirectory = path.join(apiResourceDirectory, 'build', 'resolvers'); + const resolverDirExists = fs.existsSync(resolverDirectory); + if (resolverDirExists) { + const resolverFiles = await fs.readdir(resolverDirectory); + for (const resolverFile of resolverFiles) { + if (resolverFile.indexOf('.') === 0) { + // eslint-disable-next-line no-continue + continue; + } + const resolverFilePath = path.join(resolverDirectory, resolverFile); + resolvers[resolverFile] = await fs.readFile(resolverFilePath, 'utf8'); + } + } + + return resolvers; +}; + +const containsGraphQLApi = async (): Promise => { + const projectPath = pathManager.findProjectRoot() ?? process.cwd(); + const meta = stateManager.getMeta(projectPath); + + const apiNames = Object.entries(meta?.api || {}) + .filter(([_, apiResource]) => (apiResource as $TSAny).service === 'AppSync') + .map(([name]) => name); + + const doesNotHaveGqlApi = apiNames.length < 1; + + if (doesNotHaveGqlApi) { + return false; + } + + const apiName = apiNames[0]; + const apiResourceDir = pathManager.getResourceDirectoryPath(projectPath, 'api', apiName); + + if (!fs.existsSync(apiResourceDir)) { + return false; + } + + return true; +}; + +const getApiResourceDir = async (): Promise => { + const hasGraphQLApi = await containsGraphQLApi(); + if (!hasGraphQLApi) { + return undefined; + } + + const projectPath = pathManager.findProjectRoot() ?? process.cwd(); + const meta = stateManager.getMeta(projectPath); + + const apiNames = Object.entries(meta?.api || {}) + .filter(([_, apiResource]) => (apiResource as $TSAny).service === 'AppSync') + .map(([name]) => name); + + const apiName = apiNames[0]; + const apiResourceDir = pathManager.getResourceDirectoryPath(projectPath, 'api', apiName); + + return apiResourceDir; +}; + +const modifyGraphQLSchemaDirectory = async (schemaDirectoryPath: string): Promise => { + const files = await fs.readdir(schemaDirectoryPath); + + for (const fileName of files) { + const isHiddenFile = fileName.indexOf('.') === 0; + + if (isHiddenFile) { + // eslint-disable-next-line no-continue + continue; + } + + const fullPath = path.join(schemaDirectoryPath, fileName); + const stats = await fs.lstat(fullPath); + + if (stats.isDirectory() && (await modifyGraphQLSchemaDirectory(fullPath))) { + return true; + } + + if (stats.isFile()) { + fs.appendFile(fullPath, ' '); + return true; + } + } + + return false; +}; + +const modifyGraphQLSchema = async (apiResourceDir: string): Promise => { + const schemaFilePath = path.join(apiResourceDir, 'schema.graphql'); + const schemaDirectoryPath = path.join(apiResourceDir, 'schema'); + const schemaFileExists = fs.existsSync(schemaFilePath); + const schemaDirectoryExists = fs.existsSync(schemaDirectoryPath); + + if (schemaFileExists) { + fs.appendFile(schemaFilePath, ' '); + } else if (schemaDirectoryExists) { + await modifyGraphQLSchemaDirectory(schemaDirectoryPath); + } +}; + +/** + * checks if we should display auth notification + */ +export const displayAuthNotification = (directiveMap: $TSAny, fieldDirectives: Set): boolean => { + const usesTransformerV2 = FeatureFlags.getNumber('graphqltransformer.transformerVersion') === 2; + const schemaHasValues = Object.keys(directiveMap).some((typeName: string) => { + const typeObj = directiveMap[typeName]; + const modelDirective = typeObj.find((dir: DirectiveNode) => dir.name.value === 'model'); + + const subscriptionOff: boolean = (modelDirective?.arguments || []).some((arg: $TSAny) => { + if (arg.name.value === 'subscriptions') { + const subscriptionNull = arg.value.kind === 'NullValue'; + const levelFieldOffOrNull = arg.value?.fields?.some(({ name, value }) => name.value === 'level' && (value.value === 'off' || value.kind === 'NullValue')); + + return levelFieldOffOrNull || subscriptionNull; + } + }); + + return subscriptionOff && fieldDirectives.has(typeName); + }); + + return schemaHasValues && usesTransformerV2; +}; + +/** + * checks if the schema has the auth directives + */ +export const hasFieldAuthDirectives = (doc: DocumentNode): Set => { + const haveFieldAuthDir: Set = new Set(); + + doc.definitions?.forEach((def: $TSAny) => { + const withAuth: FieldNode[] = (def.fields || []).filter((field: FieldDefinitionNode) => { + const nonNullable = field.type.kind === 'NonNullType'; + const hasAuth = field.directives?.some((dir) => dir.name.value === 'auth'); + return hasAuth && nonNullable; + }); + + if (withAuth.length > 0) { + haveFieldAuthDir.add(def.name.value); + } + }); + + return haveFieldAuthDir; +}; + +/** + * security notification + */ +export const notifyFieldAuthSecurityChange = async (context: $TSContext): Promise => { + const flagName = 'showFieldAuthNotification'; + const dontShowNotification = !FeatureFlags.getBoolean(`graphqltransformer.${flagName}`); + + if (dontShowNotification) return false; + + const projectPath = pathManager.findProjectRoot() ?? process.cwd(); + const apiResourceDir = await getApiResourceDir(); + if (!apiResourceDir) { + await setNotificationFlag(projectPath, flagName, false); + return false; + } + + const project = await readProjectConfiguration(apiResourceDir); + const directiveMap = collectDirectivesByType(project.schema); + const doc: DocumentNode = parse(project.schema); + const fieldDirectives: Set = hasFieldAuthDirectives(doc); + + let schemaModified = false; + if (displayAuthNotification(directiveMap, fieldDirectives)) { + printer.blankLine(); + const continueChange = await prompter.yesOrNo( + 'This version of Amplify CLI introduces additional security enhancements for your GraphQL API. ' + + 'The changes are applied automatically with this deployment. This change won\'t impact your client code. Continue?', + ); + + if (!continueChange) { + await context.usageData.emitSuccess(); + exitOnNextTick(0); + } + modifyGraphQLSchema(apiResourceDir); + schemaModified = true; + } + + await setNotificationFlag(projectPath, flagName, false); + return schemaModified; +}; + +/** + * checks if the schema has the V2 auth directives + */ +const hasV2AuthDirectives = (doc: DocumentNode): boolean => { + let containsAuthDir = false; + const usesTransformerV2 = FeatureFlags.getNumber('graphqltransformer.transformerVersion') === 2; + + doc.definitions?.forEach((def: $TSAny) => { + if (def.directives?.some((dir) => dir.name.value === 'auth')) { + containsAuthDir = true; + } + }); + + return containsAuthDir && usesTransformerV2; +}; + +/** + * security notification + */ +export const notifyListQuerySecurityChange = async (context: $TSContext): Promise => { + const apiResourceDir = await getApiResourceDir(); + if (!apiResourceDir) { + return false; + } + + const project = await readProjectConfiguration(apiResourceDir); + const resolvers = await loadResolvers(apiResourceDir); + + const resolversToCheck = Object.entries(resolvers) + .filter(([resolverFileName, _]) => resolverFileName.startsWith('Query.list') && resolverFileName.endsWith('.req.vtl')) + .map(([_, resolverCode]) => resolverCode); + const listQueryPattern = /#set\( \$filterExpression = \$util\.parseJson\(\$util\.transform\.toDynamoDBFilterExpression\(\$filter\)\) \)\s*(?!\s*#if\( \$util\.isNullOrEmpty\(\$filterExpression\) \))/gm; + const resolversToSecure = resolversToCheck.filter((resolver) => listQueryPattern.test(resolver)); + if (resolversToSecure.length === 0) { + return false; + } + + const doc: DocumentNode = parse(project.schema); + + let schemaModified = false; + if (hasV2AuthDirectives(doc)) { + printer.blankLine(); + const continueChange = await prompter.yesOrNo( + 'This version of Amplify CLI introduces additional security enhancements for your GraphQL API. ' + + 'The changes are applied automatically with this deployment. This change won\'t impact your client code. Continue?', + ); + + if (!continueChange) { + await context.usageData.emitSuccess(); + exitOnNextTick(0); + } + + modifyGraphQLSchema(apiResourceDir); + schemaModified = true; + } + + return schemaModified; +}; + +/** + * Checks for security enhancements in the schema and displays a warning if they are found. + */ +export const notifySecurityEnhancement = async (context: $TSContext): Promise => { + if (FeatureFlags.getBoolean('graphqltransformer.securityEnhancementNotification')) { + const projectPath = pathManager.findProjectRoot() ?? process.cwd(); + const meta = stateManager.getMeta(); + + const apiNames = Object.entries(meta?.api || {}) + .filter(([_, apiResource]) => (apiResource as $TSAny).service === 'AppSync') + .map(([name]) => name); + + if (apiNames.length !== 1) { + await setNotificationFlag(projectPath, 'securityEnhancementNotification', false); + return; + } + + const apiName = apiNames[0]; + + const apiResourceDir = pathManager.getResourceDirectoryPath(projectPath, 'api', apiName); + + if (!fs.existsSync(apiResourceDir)) { + await setNotificationFlag(projectPath, 'securityEnhancementNotification', false); + return; + } + + const project = await readProjectConfiguration(apiResourceDir); + + const directiveMap = collectDirectivesByTypeNames(project.schema); + const notifyAuthWithKey = Object.keys(directiveMap.types).some( + (type) => directiveMap.types[type].includes('auth') && directiveMap.types[type].includes('primaryKey'), + ); + + if (meta?.auth && notifyAuthWithKey) { + printer.blankLine(); + const shouldContinue = await prompter.yesOrNo( + 'This version of Amplify CLI introduces additional security enhancements for your GraphQL API. @auth authorization rules applied on primary keys and indexes are scoped down further. The changes are applied automatically with this deployment. This change won\'t impact your client code. Continue', + ); + + if (!shouldContinue) { + await context.usageData.emitSuccess(); + exitOnNextTick(0); + } + + await modifyGraphQLSchema(apiResourceDir); + + await setNotificationFlag(projectPath, 'securityEnhancementNotification', false); + } else { + await setNotificationFlag(projectPath, 'securityEnhancementNotification', false); + } + } +}; diff --git a/packages/amplify-category-api/src/force-updates/index.ts b/packages/amplify-category-api/src/force-updates/index.ts new file mode 100644 index 0000000000..2cdea586bf --- /dev/null +++ b/packages/amplify-category-api/src/force-updates/index.ts @@ -0,0 +1,25 @@ +import { $TSContext } from 'amplify-cli-core'; +import { + notifySecurityEnhancement, + notifyFieldAuthSecurityChange, + notifyListQuerySecurityChange, +} from './auth-notifications'; + +/** + * Extracted data force update logic from the `push` command in CLI. + * Runs through expected force updates in order. + */ +export const checkForcedUpdates = async (context: $TSContext): Promise => { + await notifySecurityEnhancement(context); + + /** + * The following two checks use similar phrasing for the customer. This isn't ideal moving forward, but + * leaving these two as-is since they were added in CLI version 7.6.19. + */ + let securityChangeNotified = false; + securityChangeNotified = await notifyFieldAuthSecurityChange(context); + + if (!securityChangeNotified) { + securityChangeNotified = await notifyListQuerySecurityChange(context); + } +}; diff --git a/packages/amplify-category-api/src/index.ts b/packages/amplify-category-api/src/index.ts index 8e492388b0..d1d20a11a0 100644 --- a/packages/amplify-category-api/src/index.ts +++ b/packages/amplify-category-api/src/index.ts @@ -40,6 +40,7 @@ export { getAuthConfig } from './provider-utils/awscloudformation/utils/get-apps export { getResolverConfig } from './provider-utils/awscloudformation/utils/get-appsync-resolver-config'; export { getGitHubOwnerRepoFromPath } from './provider-utils/awscloudformation/utils/github'; export * from './graphql-transformer'; +export * from './force-updates'; const category = AmplifyCategories.API; const categories = 'categories'; From f65e925ee5d3eb6165263ca150706f76f010edeb Mon Sep 17 00:00:00 2001 From: Marc VandenBerg Date: Fri, 21 Oct 2022 15:07:33 -0400 Subject: [PATCH 12/12] Fix E2E core for changed CLI output (#908) * fix: matching iterative deploy cancel e2e --- packages/amplify-e2e-core/src/init/amplifyPush.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/amplify-e2e-core/src/init/amplifyPush.ts b/packages/amplify-e2e-core/src/init/amplifyPush.ts index 2e2179fab3..93726e3336 100644 --- a/packages/amplify-e2e-core/src/init/amplifyPush.ts +++ b/packages/amplify-e2e-core/src/init/amplifyPush.ts @@ -138,8 +138,8 @@ export function cancelIterativeAmplifyPush( spawn(getCLIPath(testingWithLatestCodebase), ['push'], { cwd, stripColors: true, noOutputTimeout: pushTimeoutMS }) .wait('Are you sure you want to continue?') .sendConfirmYes() - .wait(`Deploying (${idx.current} of ${idx.max})`) - .wait(/.*UPDATE_IN_PROGRESS GraphQLSchema*/) + .wait(`Deploying iterative update ${idx.current} of ${idx.max} into`) + .wait(/.*AWS::AppSync::GraphQLSchema.*UPDATE_IN_PROGRESS.*/) .sendCtrlC() .run((err: Error) => { if (err && !/Killed the process as no output receive for/.test(err.message)) {