diff --git a/CHANGELOG.md b/CHANGELOG.md index 75d595e31..31b5cdccf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.31.0](https://github.com/aws/aws-rfdk/compare/v0.30.0...v0.31.0) (2021-05-11) + + +### Supported CDK Version + +* [1.102.0](https://github.com/aws/aws-cdk/releases/tag/v1.102.0) + + +### Officially Supported Deadline Versions + +* [10.1.9.2 to 10.1.15.2](https://docs.thinkboxsoftware.com/products/deadline/10.1/1_User%20Manual/manual/release-notes.html) + + +### Bug Fixes + +* **core:** added securty group property to HealthMonitor ([#408](https://github.com/aws/aws-rfdk/issues/408)) ([c2ed9e7](https://github.com/aws/aws-rfdk/commit/c2ed9e71e1bf60b01cee4621ac088d7cc08a7bbe)) + ## [0.30.0](https://github.com/aws/aws-rfdk/compare/v0.29.0...v0.30.0) (2021-04-21) diff --git a/README.md b/README.md index fe2266fd0..e370b755a 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ If you discover a potential security issue in this project we ask that you notif Contributions to the RFDK are encouraged. If you want to fix a problem, or want to enhance the library in any way, then we are happy to accept your contribution. Information on contributing to the RFDK can be found -[in CONTRIBUTING.md](https://github.com/aws/aws-rfdk/blob/mainline/CONTRIBUTING.md). +[in CONTRIBUTING.md](https://github.com/aws/aws-rfdk/blob/release/CONTRIBUTING.md). ## Code of Conduct diff --git a/examples/deadline/All-In-AWS-Infrastructure-Basic/python/package/config.py b/examples/deadline/All-In-AWS-Infrastructure-Basic/python/package/config.py index 30e366eff..0c6d94777 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-Basic/python/package/config.py +++ b/examples/deadline/All-In-AWS-Infrastructure-Basic/python/package/config.py @@ -40,10 +40,10 @@ def __init__(self): # to pin to. Some examples of pinned version values are "10", "10.1", or "10.1.12" self.deadline_version: Optional[str] = None - # A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.13.2 AMI ID + # A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.15.2 AMI ID # from us-west-2 is filled in. It can be used as-is, added to, or replaced. Ideally the version here should match the version of # Deadline used in any connected Deadline constructs. - self.deadline_client_linux_ami_map: Mapping[str, str] = {'us-west-2': 'ami-0237f13ce87af168e'} + self.deadline_client_linux_ami_map: Mapping[str, str] = {'us-west-2': 'ami-0c8431fc72742c110'} # A secret (in binary form) in SecretsManager that stores the UBL certificates in a .zip file. self.ubl_certificate_secret_arn: str =\ diff --git a/examples/deadline/All-In-AWS-Infrastructure-Basic/python/setup.py b/examples/deadline/All-In-AWS-Infrastructure-Basic/python/setup.py index 62c889291..1e3380e0f 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-Basic/python/setup.py +++ b/examples/deadline/All-In-AWS-Infrastructure-Basic/python/setup.py @@ -17,8 +17,8 @@ packages=setuptools.find_packages(where="package"), install_requires=[ - "aws-cdk.core==1.99.0", - "aws-rfdk==0.30.0" + "aws-cdk.core==1.102.0", + "aws-rfdk==0.31.0" ], python_requires=">=3.7", diff --git a/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/bin/config.ts b/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/bin/config.ts index d6482bab4..3bab1831e 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/bin/config.ts +++ b/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/bin/config.ts @@ -41,11 +41,11 @@ class AppConfig { public readonly deadlineVersion?: string; /** - * A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.13.2 AMI ID from us-west-2 + * A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.15.2 AMI ID from us-west-2 * is filled in. It can be used as-is, added to, or replaced. Ideally the version here should match the version of * Deadline used in any connected Deadline constructs. */ - public readonly deadlineClientLinuxAmiMap: Record = {['us-west-2']: 'ami-0237f13ce87af168e'}; + public readonly deadlineClientLinuxAmiMap: Record = {['us-west-2']: 'ami-0c8431fc72742c110'}; /** * (Optional) A secret (in binary form) in SecretsManager that stores the UBL certificates in a .zip file. diff --git a/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/package.json b/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/package.json index adafaafcd..e7355cc60 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/package.json +++ b/examples/deadline/All-In-AWS-Infrastructure-Basic/ts/package.json @@ -1,6 +1,6 @@ { "name": "all-in-farm-basic", - "version": "0.30.0", + "version": "0.31.0", "bin": { "app": "bin/app.js" }, @@ -14,13 +14,13 @@ }, "devDependencies": { "@types/node": "^14.14.41", - "aws-cdk": "1.99.0", + "aws-cdk": "1.102.0", "ts-node": "^9.1.1", "typescript": "~4.2.4" }, "dependencies": { - "@aws-cdk/core": "1.99.0", - "aws-rfdk": "0.30.0", + "@aws-cdk/core": "1.102.0", + "aws-rfdk": "0.31.0", "source-map-support": "^0.5.19" } } diff --git a/examples/deadline/All-In-AWS-Infrastructure-SEP/python/package/config.py b/examples/deadline/All-In-AWS-Infrastructure-SEP/python/package/config.py index af52afa66..a6de7e007 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-SEP/python/package/config.py +++ b/examples/deadline/All-In-AWS-Infrastructure-SEP/python/package/config.py @@ -14,10 +14,10 @@ class AppConfig: TODO: Fill these in with your own values. """ def __init__(self): - # A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.12.1 AMI ID + # A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.15.2 AMI ID # from us-west-2 is filled in. It can be used as-is, added to, or replaced. Ideally the version here # should match the one used for staging the render queue and usage based licensing recipes. - self.deadline_client_linux_ami_map: Mapping[str, str] = {'us-west-2': 'ami-039f0c1faba28b015'} + self.deadline_client_linux_ami_map: Mapping[str, str] = {'us-west-2': 'ami-0c8431fc72742c110'} config: AppConfig = AppConfig() diff --git a/examples/deadline/All-In-AWS-Infrastructure-SEP/python/setup.py b/examples/deadline/All-In-AWS-Infrastructure-SEP/python/setup.py index 5abafb861..765cf5143 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-SEP/python/setup.py +++ b/examples/deadline/All-In-AWS-Infrastructure-SEP/python/setup.py @@ -17,8 +17,8 @@ packages=setuptools.find_packages(where="package"), install_requires=[ - "aws-cdk.core==1.99.0", - "aws-rfdk==0.30.0" + "aws-cdk.core==1.102.0", + "aws-rfdk==0.31.0" ], python_requires=">=3.7", diff --git a/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/bin/config.ts b/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/bin/config.ts index f0a05b062..c79c60a07 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/bin/config.ts +++ b/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/bin/config.ts @@ -12,10 +12,10 @@ import 'source-map-support/register'; */ class AppConfig { /** - * A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.12.1 AMI ID from us-west-2 + * A map of regions to Deadline Client Linux AMIs. As an example, the Linux Deadline 10.1.15.2 AMI ID from us-west-2 * is filled in. It can be used as-is, added to, or replaced. */ - public readonly deadlineClientLinuxAmiMap: Record = {['us-west-2']: 'ami-039f0c1faba28b015'}; + public readonly deadlineClientLinuxAmiMap: Record = {['us-west-2']: 'ami-0c8431fc72742c110'}; } export const config = new AppConfig(); diff --git a/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/package.json b/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/package.json index 65a27724a..58c59c5be 100644 --- a/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/package.json +++ b/examples/deadline/All-In-AWS-Infrastructure-SEP/ts/package.json @@ -1,6 +1,6 @@ { "name": "all-in-farm-sep", - "version": "0.30.0", + "version": "0.31.0", "bin": { "app": "bin/app.js" }, @@ -19,13 +19,13 @@ }, "devDependencies": { "@types/node": "^14.14.41", - "aws-cdk": "1.99.0", + "aws-cdk": "1.102.0", "ts-node": "^9.1.1", "typescript": "~4.2.4" }, "dependencies": { - "@aws-cdk/core": "1.99.0", - "aws-rfdk": "0.30.0", + "@aws-cdk/core": "1.102.0", + "aws-rfdk": "0.31.0", "source-map-support": "^0.5.19" } } diff --git a/examples/deadline/EC2-Image-Builder/python/setup.py b/examples/deadline/EC2-Image-Builder/python/setup.py index aa4193145..3e864b5a7 100644 --- a/examples/deadline/EC2-Image-Builder/python/setup.py +++ b/examples/deadline/EC2-Image-Builder/python/setup.py @@ -17,12 +17,12 @@ packages=setuptools.find_packages(where="package"), install_requires=[ - "aws-cdk.aws-iam==1.99.0", - "aws-cdk.aws-imagebuilder==1.99.0", - "aws-cdk.aws-ec2==1.99.0", - "aws-cdk.aws-s3-assets==1.99.0", - "aws-cdk.core==1.99.0", - "aws-rfdk==0.30.0", + "aws-cdk.aws-iam==1.102.0", + "aws-cdk.aws-imagebuilder==1.102.0", + "aws-cdk.aws-ec2==1.102.0", + "aws-cdk.aws-s3-assets==1.102.0", + "aws-cdk.core==1.102.0", + "aws-rfdk==0.31.0", ], python_requires=">=3.7", diff --git a/examples/deadline/EC2-Image-Builder/ts/package.json b/examples/deadline/EC2-Image-Builder/ts/package.json index 916586cb4..4b1fce78f 100644 --- a/examples/deadline/EC2-Image-Builder/ts/package.json +++ b/examples/deadline/EC2-Image-Builder/ts/package.json @@ -1,6 +1,6 @@ { "name": "all-in-farm-image-builder", - "version": "0.30.0", + "version": "0.31.0", "bin": { "app": "bin/app.js" }, @@ -15,16 +15,16 @@ }, "devDependencies": { "@types/node": "^14.14.41", - "aws-cdk": "1.99.0", + "aws-cdk": "1.102.0", "ts-node": "^9.1.1", "typescript": "~4.2.4" }, "dependencies": { - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-imagebuilder": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/core": "1.99.0", - "aws-rfdk": "0.30.0" + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-imagebuilder": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/core": "1.102.0", + "aws-rfdk": "0.31.0" } } diff --git a/integ/components/deadline/deadline_01_repository/bin/deadline_01_repository.ts b/integ/components/deadline/deadline_01_repository/bin/deadline_01_repository.ts index a0143d86d..823bf5a01 100644 --- a/integ/components/deadline/deadline_01_repository/bin/deadline_01_repository.ts +++ b/integ/components/deadline/deadline_01_repository/bin/deadline_01_repository.ts @@ -3,12 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { App, Stack } from '@aws-cdk/core'; +import { App, Stack, Aspects } from '@aws-cdk/core'; import { Stage, ThinkboxDockerRecipes, } from 'aws-rfdk/deadline'; +import { SSMInstancePolicyAspect } from '../../../../lib/ssm-policy-aspect'; import { DatabaseType, StorageStruct } from '../../../../lib/storage-struct'; import { RepositoryTestingTier } from '../lib/repository-testing-tier'; @@ -46,3 +47,6 @@ const structs: Array = [ ]; new RepositoryTestingTier(app, 'RFDKInteg-DL-TestingTier' + integStackTag, { env, integStackTag, structs }); + +// Adds IAM Policy to Instance and ASG Roles +Aspects.of(app).add(new SSMInstancePolicyAspect()); diff --git a/integ/components/deadline/deadline_02_renderQueue/bin/deadline_02_renderQueue.ts b/integ/components/deadline/deadline_02_renderQueue/bin/deadline_02_renderQueue.ts index d4aff6826..f355fe4ac 100644 --- a/integ/components/deadline/deadline_02_renderQueue/bin/deadline_02_renderQueue.ts +++ b/integ/components/deadline/deadline_02_renderQueue/bin/deadline_02_renderQueue.ts @@ -3,13 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { App, Stack } from '@aws-cdk/core'; +import { App, Stack, Aspects } from '@aws-cdk/core'; import { Stage, ThinkboxDockerRecipes, } from 'aws-rfdk/deadline'; import { RenderStruct } from '../../../../lib/render-struct'; +import { SSMInstancePolicyAspect } from '../../../../lib/ssm-policy-aspect'; import { DatabaseType, StorageStruct } from '../../../../lib/storage-struct'; import { RenderQueueTestingTier } from '../lib/renderQueue-testing-tier'; @@ -57,3 +58,6 @@ const structs: Array = [ ]; new RenderQueueTestingTier(app, 'RFDKInteg-RQ-TestingTier' + integStackTag, { env, integStackTag, structs }); + +// Adds IAM Policy to Instance and ASG Roles +Aspects.of(app).add(new SSMInstancePolicyAspect()); diff --git a/integ/components/deadline/deadline_03_workerFleetHttp/bin/deadline_03_workerFleetHttp.ts b/integ/components/deadline/deadline_03_workerFleetHttp/bin/deadline_03_workerFleetHttp.ts index 3ed7d5194..d48d51975 100644 --- a/integ/components/deadline/deadline_03_workerFleetHttp/bin/deadline_03_workerFleetHttp.ts +++ b/integ/components/deadline/deadline_03_workerFleetHttp/bin/deadline_03_workerFleetHttp.ts @@ -3,13 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { App, Stack } from '@aws-cdk/core'; +import { App, Stack, Aspects } from '@aws-cdk/core'; import { Stage, ThinkboxDockerRecipes, } from 'aws-rfdk/deadline'; import { RenderStruct } from '../../../../lib/render-struct'; +import { SSMInstancePolicyAspect } from '../../../../lib/ssm-policy-aspect'; import { DatabaseType, StorageStruct } from '../../../../lib/storage-struct'; import { WorkerStruct } from '../../../../lib/worker-struct'; import { WorkerFleetTestingTier } from '../lib/workerFleetHttp-testing-tier'; @@ -61,3 +62,6 @@ oss.forEach( (os, index) => { }); new WorkerFleetTestingTier(app, 'RFDKInteg-WF-TestingTier' + integStackTag, {env, integStackTag, structs}); + +// Adds IAM Policy to Instance and ASG Roles +Aspects.of(app).add(new SSMInstancePolicyAspect()); diff --git a/integ/components/deadline/deadline_04_workerFleetHttps/bin/deadline_04_workerFleetHttps.ts b/integ/components/deadline/deadline_04_workerFleetHttps/bin/deadline_04_workerFleetHttps.ts index 8bde9e49a..c2888dba3 100644 --- a/integ/components/deadline/deadline_04_workerFleetHttps/bin/deadline_04_workerFleetHttps.ts +++ b/integ/components/deadline/deadline_04_workerFleetHttps/bin/deadline_04_workerFleetHttps.ts @@ -3,13 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { App, Stack } from '@aws-cdk/core'; +import { App, Stack, Aspects } from '@aws-cdk/core'; import { Stage, ThinkboxDockerRecipes, } from 'aws-rfdk/deadline'; import { RenderStruct } from '../../../../lib/render-struct'; +import { SSMInstancePolicyAspect } from '../../../../lib/ssm-policy-aspect'; import { DatabaseType, StorageStruct } from '../../../../lib/storage-struct'; import { WorkerStruct } from '../../../../lib/worker-struct'; import { WorkerFleetTestingTier } from '../lib/workerFleetHttps-testing-tier'; @@ -61,3 +62,6 @@ oss.forEach( (os, index) => { }); new WorkerFleetTestingTier(app, 'RFDKInteg-WFS-TestingTier' + integStackTag, {env, integStackTag, structs}); + +// Adds IAM Policy to Instance and ASG Roles +Aspects.of(app).add(new SSMInstancePolicyAspect()); diff --git a/integ/lib/ssm-policy-aspect.ts b/integ/lib/ssm-policy-aspect.ts new file mode 100644 index 000000000..1c52a00a7 --- /dev/null +++ b/integ/lib/ssm-policy-aspect.ts @@ -0,0 +1,18 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +import { AutoScalingGroup } from '@aws-cdk/aws-autoscaling'; +import { Instance } from '@aws-cdk/aws-ec2'; +import { ManagedPolicy } from '@aws-cdk/aws-iam'; +import * as cdk from '@aws-cdk/core'; + +export class SSMInstancePolicyAspect implements cdk.IAspect { + private static readonly SSM_POLICY = ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore'); + public visit(node: cdk.IConstruct): void { + if (node instanceof Instance || node instanceof AutoScalingGroup) { + node.role.addManagedPolicy(SSMInstancePolicyAspect.SSM_POLICY); + } + } +} diff --git a/integ/package.json b/integ/package.json index 1fdb9b1b1..0c5be2e99 100644 --- a/integ/package.json +++ b/integ/package.json @@ -1,6 +1,6 @@ { "name": "integ", - "version": "0.30.0", + "version": "0.31.0", "private": false, "description": "Integration tests for RFDK constructs", "bin": { @@ -55,53 +55,54 @@ "pkglint": "pkglint -f" }, "devDependencies": { - "@aws-cdk/assert": "1.99.0", + "@aws-cdk/assert": "1.102.0", "@types/jest": "^26.0.22", "@types/node": "^14.14.41", "@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", - "aws-cdk": "1.99.0", + "aws-cdk": "1.102.0", "eslint": "^7.24.0", "eslint-import-resolver-node": "^0.3.4", "eslint-import-resolver-typescript": "^2.4.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-license-header": "^0.2.0", "jest": "^26.6.3", - "pkglint": "0.30.0", + "pkglint": "0.31.0", "ts-jest": "^26.5.4" }, "dependencies": { - "@aws-cdk/aws-docdb": "1.99.0", - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-ecr": "1.99.0", - "@aws-cdk/aws-ecs": "1.99.0", - "@aws-cdk/aws-efs": "1.99.0", - "@aws-cdk/aws-elasticloadbalancingv2": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-logs": "1.99.0", - "@aws-cdk/aws-route53": "1.99.0", - "@aws-cdk/aws-s3": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/aws-secretsmanager": "1.99.0", - "@aws-cdk/core": "1.99.0", - "aws-rfdk": "0.30.0", + "@aws-cdk/aws-autoscaling": "1.102.0", + "@aws-cdk/aws-docdb": "1.102.0", + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-ecr": "1.102.0", + "@aws-cdk/aws-ecs": "1.102.0", + "@aws-cdk/aws-efs": "1.102.0", + "@aws-cdk/aws-elasticloadbalancingv2": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-logs": "1.102.0", + "@aws-cdk/aws-route53": "1.102.0", + "@aws-cdk/aws-s3": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/aws-secretsmanager": "1.102.0", + "@aws-cdk/core": "1.102.0", + "aws-rfdk": "0.31.0", "aws-sdk": "^2.889.0" }, "peerDependencies": { - "@aws-cdk/aws-docdb": "1.99.0", - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-ecr": "1.99.0", - "@aws-cdk/aws-ecs": "1.99.0", - "@aws-cdk/aws-efs": "1.99.0", - "@aws-cdk/aws-elasticloadbalancingv2": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-logs": "1.99.0", - "@aws-cdk/aws-route53": "1.99.0", - "@aws-cdk/aws-s3": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/aws-secretsmanager": "1.99.0", - "@aws-cdk/core": "1.99.0", - "aws-rfdk": "0.30.0", + "@aws-cdk/aws-docdb": "1.102.0", + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-ecr": "1.102.0", + "@aws-cdk/aws-ecs": "1.102.0", + "@aws-cdk/aws-efs": "1.102.0", + "@aws-cdk/aws-elasticloadbalancingv2": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-logs": "1.102.0", + "@aws-cdk/aws-route53": "1.102.0", + "@aws-cdk/aws-s3": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/aws-secretsmanager": "1.102.0", + "@aws-cdk/core": "1.102.0", + "aws-rfdk": "0.31.0", "aws-sdk": "^2.889.0" }, "engines": { diff --git a/lambda-layers/package.json b/lambda-layers/package.json index 48724dde4..f7dabfae3 100644 --- a/lambda-layers/package.json +++ b/lambda-layers/package.json @@ -1,6 +1,6 @@ { "name": "lambda-layers", - "version": "0.30.0", + "version": "0.31.0", "private": false, "description": "Package containing scripts for building and publishing Lambda Layers", "main": "lib/index.js", @@ -30,9 +30,9 @@ "maturity": "stable", "devDependencies": { "@types/node": "^14.14.35", - "typescript": "~4.2.3" + "typescript": "~4.2.4" }, "dependencies": { - "aws-sdk": "^2.869.0" + "aws-sdk": "^2.903.0" } } diff --git a/lerna.json b/lerna.json index 38dec403d..09641c82b 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "npmClient": "yarn", "useWorkspaces": true, "rejectCycles": "true", - "version": "0.30.0" + "version": "0.31.0" } diff --git a/package.json b/package.json index f8f038015..db95941fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aws-rfdk-project", - "version": "0.30.0", + "version": "0.31.0", "license": "Apache-2.0", "author": { "name": "Amazon Web Services", @@ -26,72 +26,72 @@ } }, "devDependencies": { - "@aws-cdk/assets": "1.99.0", - "@aws-cdk/aws-apigateway": "1.99.0", - "@aws-cdk/aws-apigatewayv2": "1.99.0", - "@aws-cdk/aws-apigatewayv2-integrations": "1.99.0", - "@aws-cdk/aws-applicationautoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling-common": "1.99.0", - "@aws-cdk/aws-autoscaling-hooktargets": "1.99.0", - "@aws-cdk/aws-batch": "1.99.0", - "@aws-cdk/aws-certificatemanager": "1.99.0", - "@aws-cdk/aws-cloudformation": "1.99.0", - "@aws-cdk/aws-cloudfront": "1.99.0", - "@aws-cdk/aws-cloudwatch": "1.99.0", - "@aws-cdk/aws-cloudwatch-actions": "1.99.0", - "@aws-cdk/aws-codebuild": "1.99.0", - "@aws-cdk/aws-codecommit": "1.99.0", - "@aws-cdk/aws-codeguruprofiler": "1.99.0", - "@aws-cdk/aws-codepipeline": "1.99.0", - "@aws-cdk/aws-cognito": "1.99.0", - "@aws-cdk/aws-databrew": "1.99.0", - "@aws-cdk/aws-docdb": "1.99.0", - "@aws-cdk/aws-dynamodb": "1.99.0", - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-ecr": "1.99.0", - "@aws-cdk/aws-ecr-assets": "1.99.0", - "@aws-cdk/aws-ecs": "1.99.0", - "@aws-cdk/aws-ecs-patterns": "1.99.0", - "@aws-cdk/aws-efs": "1.99.0", - "@aws-cdk/aws-eks": "1.99.0", - "@aws-cdk/aws-elasticloadbalancing": "1.99.0", - "@aws-cdk/aws-elasticloadbalancingv2": "1.99.0", - "@aws-cdk/aws-events": "1.99.0", - "@aws-cdk/aws-events-targets": "1.99.0", - "@aws-cdk/aws-globalaccelerator": "1.99.0", - "@aws-cdk/aws-glue": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-kinesis": "1.99.0", - "@aws-cdk/aws-kinesisfirehose": "1.99.0", - "@aws-cdk/aws-kms": "1.99.0", - "@aws-cdk/aws-lambda": "1.99.0", - "@aws-cdk/aws-logs": "1.99.0", - "@aws-cdk/aws-route53": "1.99.0", - "@aws-cdk/aws-route53-targets": "1.99.0", - "@aws-cdk/aws-s3": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/aws-sam": "1.99.0", - "@aws-cdk/aws-secretsmanager": "1.99.0", - "@aws-cdk/aws-servicediscovery": "1.99.0", - "@aws-cdk/aws-signer": "1.99.0", - "@aws-cdk/aws-sns": "1.99.0", - "@aws-cdk/aws-sns-subscriptions": "1.99.0", - "@aws-cdk/aws-sqs": "1.99.0", - "@aws-cdk/aws-ssm": "1.99.0", - "@aws-cdk/aws-stepfunctions": "1.99.0", - "@aws-cdk/aws-stepfunctions-tasks": "1.99.0", - "@aws-cdk/cloud-assembly-schema": "1.99.0", - "@aws-cdk/core": "1.99.0", - "@aws-cdk/custom-resources": "1.99.0", - "@aws-cdk/cx-api": "1.99.0", - "@aws-cdk/lambda-layer-awscli": "1.99.0", - "@aws-cdk/lambda-layer-kubectl": "1.99.0", - "@aws-cdk/region-info": "1.99.0", + "@aws-cdk/assets": "1.102.0", + "@aws-cdk/aws-apigateway": "1.102.0", + "@aws-cdk/aws-apigatewayv2": "1.102.0", + "@aws-cdk/aws-apigatewayv2-integrations": "1.102.0", + "@aws-cdk/aws-applicationautoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling-common": "1.102.0", + "@aws-cdk/aws-autoscaling-hooktargets": "1.102.0", + "@aws-cdk/aws-batch": "1.102.0", + "@aws-cdk/aws-certificatemanager": "1.102.0", + "@aws-cdk/aws-cloudformation": "1.102.0", + "@aws-cdk/aws-cloudfront": "1.102.0", + "@aws-cdk/aws-cloudwatch": "1.102.0", + "@aws-cdk/aws-cloudwatch-actions": "1.102.0", + "@aws-cdk/aws-codebuild": "1.102.0", + "@aws-cdk/aws-codecommit": "1.102.0", + "@aws-cdk/aws-codeguruprofiler": "1.102.0", + "@aws-cdk/aws-codepipeline": "1.102.0", + "@aws-cdk/aws-cognito": "1.102.0", + "@aws-cdk/aws-databrew": "1.102.0", + "@aws-cdk/aws-docdb": "1.102.0", + "@aws-cdk/aws-dynamodb": "1.102.0", + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-ecr": "1.102.0", + "@aws-cdk/aws-ecr-assets": "1.102.0", + "@aws-cdk/aws-ecs": "1.102.0", + "@aws-cdk/aws-ecs-patterns": "1.102.0", + "@aws-cdk/aws-efs": "1.102.0", + "@aws-cdk/aws-eks": "1.102.0", + "@aws-cdk/aws-elasticloadbalancing": "1.102.0", + "@aws-cdk/aws-elasticloadbalancingv2": "1.102.0", + "@aws-cdk/aws-events": "1.102.0", + "@aws-cdk/aws-events-targets": "1.102.0", + "@aws-cdk/aws-globalaccelerator": "1.102.0", + "@aws-cdk/aws-glue": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-kinesis": "1.102.0", + "@aws-cdk/aws-kinesisfirehose": "1.102.0", + "@aws-cdk/aws-kms": "1.102.0", + "@aws-cdk/aws-lambda": "1.102.0", + "@aws-cdk/aws-logs": "1.102.0", + "@aws-cdk/aws-route53": "1.102.0", + "@aws-cdk/aws-route53-targets": "1.102.0", + "@aws-cdk/aws-s3": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/aws-sam": "1.102.0", + "@aws-cdk/aws-secretsmanager": "1.102.0", + "@aws-cdk/aws-servicediscovery": "1.102.0", + "@aws-cdk/aws-signer": "1.102.0", + "@aws-cdk/aws-sns": "1.102.0", + "@aws-cdk/aws-sns-subscriptions": "1.102.0", + "@aws-cdk/aws-sqs": "1.102.0", + "@aws-cdk/aws-ssm": "1.102.0", + "@aws-cdk/aws-stepfunctions": "1.102.0", + "@aws-cdk/aws-stepfunctions-tasks": "1.102.0", + "@aws-cdk/cloud-assembly-schema": "1.102.0", + "@aws-cdk/core": "1.102.0", + "@aws-cdk/custom-resources": "1.102.0", + "@aws-cdk/cx-api": "1.102.0", + "@aws-cdk/lambda-layer-awscli": "1.102.0", + "@aws-cdk/lambda-layer-kubectl": "1.102.0", + "@aws-cdk/region-info": "1.102.0", "@types/jest": "^26.0.22", "@types/node": "^14.14.41", "@types/nodeunit": "^0.0.31", - "aws-cdk": "1.99.0", + "aws-cdk": "1.102.0", "aws-sdk": "^2.889.0", "constructs": "^3.3.69", "conventional-changelog-cli": "^2.1.1", diff --git a/packages/aws-rfdk/README.md b/packages/aws-rfdk/README.md index 8ba0e6aa7..c47a05f3c 100644 --- a/packages/aws-rfdk/README.md +++ b/packages/aws-rfdk/README.md @@ -13,6 +13,6 @@ via AWS CloudFormation by the CDK toolkit. The parameters of an object’s creat Please see the following sources for additional information: * The [RFDK Developer Guide](https://docs.aws.amazon.com/rfdk/latest/guide/what-is-rfdk.html) * The [RFDK API Documentation](https://docs.aws.amazon.com/rfdk/api/latest/docs/aws-rfdk-construct-library.html) -* The [README for the main module](https://github.com/aws/aws-rfdk/blob/mainline/packages/aws-rfdk/lib/core/README.md) -* The [README for the Deadline module](https://github.com/aws/aws-rfdk/blob/mainline/packages/aws-rfdk/lib/deadline/README.md) -* The [RFDK Upgrade Documentation](./docs/upgrade/index.md) +* The [README for the main module](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/lib/core/README.md) +* The [README for the Deadline module](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/lib/deadline/README.md) +* The [RFDK Upgrade Documentation](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/docs/upgrade/index.md) diff --git a/packages/aws-rfdk/lib/core/lib/health-monitor.ts b/packages/aws-rfdk/lib/core/lib/health-monitor.ts index a98cd61dc..b112c3cfa 100644 --- a/packages/aws-rfdk/lib/core/lib/health-monitor.ts +++ b/packages/aws-rfdk/lib/core/lib/health-monitor.ts @@ -14,6 +14,7 @@ import { import {SnsAction} from '@aws-cdk/aws-cloudwatch-actions'; import { IConnectable, + ISecurityGroup, IVpc, Port, SubnetSelection, @@ -211,6 +212,13 @@ export interface HealthMonitorProps { * @default: The VPC default strategy */ readonly vpcSubnets?: SubnetSelection; + + /** + * Security group for the health monitor. This is security group is associated with the health monitor's load balancer. + * + * @default: A security group is created + */ + readonly securityGroup?: ISecurityGroup; } /** diff --git a/packages/aws-rfdk/lib/core/lib/load-balancer-manager.ts b/packages/aws-rfdk/lib/core/lib/load-balancer-manager.ts index 22c577639..74c3f7242 100644 --- a/packages/aws-rfdk/lib/core/lib/load-balancer-manager.ts +++ b/packages/aws-rfdk/lib/core/lib/load-balancer-manager.ts @@ -200,6 +200,7 @@ export class LoadBalancerFactory { internetFacing: false, vpcSubnets: healthMonitorProps.vpcSubnets, deletionProtection: healthMonitorProps.deletionProtection ?? true, + securityGroup: healthMonitorProps.securityGroup, }); // Enabling dropping of invalid HTTP header fields on the load balancer to prevent http smuggling attacks. loadBalancer.setAttribute('routing.http.drop_invalid_header_fields.enabled', 'true'); diff --git a/packages/aws-rfdk/lib/core/test/health-monitor.test.ts b/packages/aws-rfdk/lib/core/test/health-monitor.test.ts index f86d9cc8b..682857a0d 100644 --- a/packages/aws-rfdk/lib/core/test/health-monitor.test.ts +++ b/packages/aws-rfdk/lib/core/test/health-monitor.test.ts @@ -32,6 +32,7 @@ import { InstanceSize, InstanceType, IVpc, + SecurityGroup, SubnetType, Vpc, } from '@aws-cdk/aws-ec2'; @@ -567,6 +568,31 @@ describe('HealthMonitor', () => { })); }); + test('specifying a security group', () => { + // GIVEN + const securityGroup = new SecurityGroup(infraStack, 'LBSecurityGroup', { vpc }); + const fleet = new TestMonitorableFleet(wfStack, 'workerFleet', { + vpc, + }); + + // WHEN + healthMonitor = new HealthMonitor(hmStack, 'healthMonitor2', { + vpc, + securityGroup, + }); + healthMonitor.registerFleet(fleet, {}); + + // THEN + // Make sure it has the security group + expectCDK(hmStack).to(haveResourceLike('AWS::ElasticLoadBalancingV2::LoadBalancer', { + SecurityGroups: arrayWith( + hmStack.resolve(securityGroup.securityGroupId), + ), + })); + // HealthMonitor should not create its own security group + expectCDK(hmStack).notTo(haveResource('AWS::EC2::SecurityGroup')); + }); + describe('tagging', () => { testConstructTags({ constructName: 'HealthMonitor', diff --git a/packages/aws-rfdk/lib/deadline/README.md b/packages/aws-rfdk/lib/deadline/README.md index fef549380..884dce11d 100644 --- a/packages/aws-rfdk/lib/deadline/README.md +++ b/packages/aws-rfdk/lib/deadline/README.md @@ -317,11 +317,11 @@ const fleet = new SpotEventPluginFleet(this, 'SpotEventPluginFleet', { ## Stage -A stage is a directory that conforms to a [conventional structure](../../docs/DockerImageRecipes.md#stage-directory-convention) that RFDK requires to deploy Deadline. This directory contains the Docker image recipes that RFDK uses to build Docker images. +A stage is a directory that conforms to a [conventional structure](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/docs/DockerImageRecipes.md#stage-directory-convention) that RFDK requires to deploy Deadline. This directory contains the Docker image recipes that RFDK uses to build Docker images. ### Staging Docker Recipes -Docker image recipes required by various constructs in Deadline (e.g. `RenderQueue`, `UsageBasedLicensing`, etc.) must be staged to a local directory that RFDK can consume. For information on what a Docker image recipe is and how it should be organized, see [Docker Image Recipes](../../docs/DockerImageRecipes.md). You can either stage your own recipes or use ones provided by AWS Thinkbox via `ThinkboxDockerRecipes`. +Docker image recipes required by various constructs in Deadline (e.g. `RenderQueue`, `UsageBasedLicensing`, etc.) must be staged to a local directory that RFDK can consume. For information on what a Docker image recipe is and how it should be organized, see [Docker Image Recipes](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/docs/DockerImageRecipes.md). You can either stage your own recipes or use ones provided by AWS Thinkbox via `ThinkboxDockerRecipes`. #### Using Thinkbox Docker Recipes @@ -528,7 +528,7 @@ The `WorkerInstanceFleet` uses Elastic Load Balancing (ELB) health checks with i 1. **EC2 Status Checks** - Amazon EC2 identifies any hardware or software issues on instances. If a status check fails for an instance, it will be replaced. For more information, see [here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html). 2. **Load Balancer Health Checks** - Load balancers send periodic pings to instances in the `AutoScalingGroup`. If a ping to an instance fails, the instance is considered unhealthy. For more information, see [here](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-add-elb-healthcheck.html). -EC2 status checks are great for detecting lower level issues with instances and automatically replacing them. If you also want to detect any issues with Deadline on your instances, you can do this by setting up a health monitoring options on the `WorkerInstanceFleet` along with a `HealthMonitor` (see [`aws-rfdk`](../core/README.md)). The `HealthMonitor` will ensure that your `WorkerInstanceFleet` remains healthy by checking that a minimum number of hosts are healthy for a given grace period. If the fleet is found to be unhealthy, its capacity will set to 0, meaning that all instances will be terminated. This is a precaution to save on costs in the case of a misconfigured render farm. +EC2 status checks are great for detecting lower level issues with instances and automatically replacing them. If you also want to detect any issues with Deadline on your instances, you can do this by configuring health monitoring options on the `WorkerInstanceFleet` along with a `HealthMonitor` (see [aws-rfdk](https://github.com/aws/aws-rfdk/blob/release/packages/aws-rfdk/lib/core/README.md)). The `HealthMonitor` will ensure that your `WorkerInstanceFleet` remains healthy by checking that a minimum number of hosts are healthy for a given grace period. If the fleet is found to be unhealthy, its capacity will set to 0, meaning that all instances will be terminated. This is a precaution to save on costs in the case of a misconfigured render farm. Below is an example of setting up health monitoring in a `WorkerInstanceFleet`. ```ts diff --git a/packages/aws-rfdk/lib/deadline/test/version.test.ts b/packages/aws-rfdk/lib/deadline/test/version.test.ts index 10b1e74b5..2f9a4020a 100644 --- a/packages/aws-rfdk/lib/deadline/test/version.test.ts +++ b/packages/aws-rfdk/lib/deadline/test/version.test.ts @@ -143,8 +143,8 @@ describe('Version', () => { expect(result).toEqual(true); }); - describe('constructor validation', () => { - test.each<[string, { version: number[], expectedException?: RegExp }]>([ + describe('throws exception for invalid components', () => { + test.each<[string, { version: number[], expectedException: RegExp }]>([ [ 'incorrect component count', { @@ -163,25 +163,40 @@ describe('Version', () => { version: [10, 1, 9.2, 2], expectedException: /Invalid version format. None of the version components can contain decimal values./, }, - ], [ - 'correct value', - { - version: [10, 1, 9, 2], - }, ], ])('%s', (_name, testcase) => { const { version, expectedException } = testcase; // WHEN - if (expectedException) { - expect(() => new Version(version)).toThrow(expectedException); - } else { - const versionObj = new Version(version); - expect(versionObj.majorVersion).toEqual(version[0]); - expect(versionObj.minorVersion).toEqual(version[1]); - expect(versionObj.releaseVersion).toEqual(version[2]); - expect(versionObj.patchVersion).toEqual(version[3]); - } + expect(() => new Version(version)).toThrow(expectedException); + }); + }); + + describe('components are mapped to correct properties', () => { + // GIVEN + const versionComponents = [10, 1, 9, 2]; + let version: Version; + + // WHEN + beforeEach(() => { + version = new Version(versionComponents); + }); + + // THEN + test('majorVersion', () => { + expect(version.majorVersion).toEqual(versionComponents[0]); + }); + + test('minorVersion', () => { + expect(version.minorVersion).toEqual(versionComponents[1]); + }); + + test('releaseVersion', () => { + expect(version.releaseVersion).toEqual(versionComponents[2]); + }); + + test('patchVersion', () => { + expect(version.patchVersion).toEqual(versionComponents[3]); }); }); @@ -205,21 +220,26 @@ describe('Version', () => { version: '10.-1.9.2', expectedException: /Invalid version format/, }, - ], [ - 'correct version', - { - version: '10.1.9.2', - }, ], ])('%s', (_name, testcase) => { const { version, expectedException } = testcase; // WHEN - if(expectedException) { - expect(() => Version.parse(version)).toThrow(expectedException); - } else { - expect(() => Version.parse(version)).not.toThrow(); - } + expect(() => Version.parse(version)).toThrow(expectedException); }); }); + + test('.parse() works', () => { + // GIVEN + const versionString = '10.1.9.2'; + + // WHEN + const version = Version.parse(versionString); + + // THEN + expect(version.majorVersion).toBe(10); + expect(version.minorVersion).toBe(1); + expect(version.releaseVersion).toBe(9); + expect(version.patchVersion).toBe(2); + }); }); diff --git a/packages/aws-rfdk/lib/lambdas/nodejs/lib/deadline-client/test/deadline-client.test.ts b/packages/aws-rfdk/lib/lambdas/nodejs/lib/deadline-client/test/deadline-client.test.ts index 55b52aa59..d5fa6f528 100644 --- a/packages/aws-rfdk/lib/lambdas/nodejs/lib/deadline-client/test/deadline-client.test.ts +++ b/packages/aws-rfdk/lib/lambdas/nodejs/lib/deadline-client/test/deadline-client.test.ts @@ -378,67 +378,71 @@ describe('DeadlineClient', () => { jest.requireMock('https').request.mockReset(); }); - test.each([ - ['HTTP', 'GET'], - ['HTTP', 'POST'], - ['HTTPS', 'GET'], - ['HTTPS', 'POST'], - ])('with %p %p', async (protocol: string, requestType: string) => { - // GIVEN - response = new MockResponse(400); - deadlineClient = new DeadlineClient({ - host: 'hostname', - port: 0, - protocol: protocol, + describe('returns a rejected promise on 400 responses', () => { + test.each([ + ['HTTP', 'GET'], + ['HTTP', 'POST'], + ['HTTPS', 'GET'], + ['HTTPS', 'POST'], + ])('for %p %p', async (protocol: string, requestType: string) => { + // GIVEN + response = new MockResponse(400); + deadlineClient = new DeadlineClient({ + host: 'hostname', + port: 0, + protocol: protocol, + }); + + // WHEN + function performRequest() { + if (requestType === 'GET') { return deadlineClient.GetRequest('anypath'); } + return deadlineClient.PostRequest('anypath', 'anydata'); + } + const promise = performRequest(); + + // THEN + await expect(promise) + .rejects + .toEqual(response.statusMessage); + + expect(consoleLogMock.mock.calls.length).toBe(0); }); - - // WHEN - function performRequest() { - if (requestType === 'GET') { return deadlineClient.GetRequest('anypath'); } - return deadlineClient.PostRequest('anypath', 'anydata'); - } - const promise = performRequest(); - - // THEN - await expect(promise) - .rejects - .toEqual(response.statusMessage); - - expect(consoleLogMock.mock.calls.length).toBe(0); }); - test.each([ - ['HTTP', 'GET'], - ['HTTP', 'POST'], - ['HTTPS', 'GET'], - ['HTTPS', 'POST'], - ])('with %p %p', async (protocol: string, requestType: string) => { - // GIVEN - response = new MockResponse(503); - const retries = 3; - deadlineClient = new DeadlineClient({ - host: 'hostname', - port: 0, - protocol: protocol, - retries, - retryWaitMs: 0, + describe('retries on 503 responses', () => { + test.each([ + ['HTTP', 'GET'], + ['HTTP', 'POST'], + ['HTTPS', 'GET'], + ['HTTPS', 'POST'], + ])('for %p %p', async (protocol: string, requestType: string) => { + // GIVEN + response = new MockResponse(503); + const retries = 3; + deadlineClient = new DeadlineClient({ + host: 'hostname', + port: 0, + protocol: protocol, + retries, + retryWaitMs: 0, + }); + + // WHEN + function performRequest() { + if (requestType === 'GET') { return deadlineClient.GetRequest('anypath'); } + return deadlineClient.PostRequest('anypath', 'anydata'); + } + const promise = performRequest(); + + // THEN + await expect(promise) + .rejects + .toEqual(response.statusMessage); + + expect(consoleLogMock.mock.calls.length).toBe(retries * 2); + expect(consoleLogMock.mock.calls[0][0]).toMatch(/Request failed with/); + expect(consoleLogMock.mock.calls[1][0]).toMatch(/Retries left:/); }); - - // WHEN - function performRequest() { - if (requestType === 'GET') { return deadlineClient.GetRequest('anypath'); } - return deadlineClient.PostRequest('anypath', 'anydata'); - } - const promise = performRequest(); - - // THEN - await expect(promise) - .rejects - .toEqual(response.statusMessage); - - expect(consoleLogMock.mock.calls.length).toBe(retries * 2); - expect(consoleLogMock.mock.calls[0][0]).toMatch(/Request failed with/); - expect(consoleLogMock.mock.calls[1][0]).toMatch(/Retries left:/); }); }); }); diff --git a/packages/aws-rfdk/lib/lambdas/nodejs/lib/dynamodb/test/composite-table.test.ts b/packages/aws-rfdk/lib/lambdas/nodejs/lib/dynamodb/test/composite-table.test.ts index 8b178a44f..c6de541e8 100644 --- a/packages/aws-rfdk/lib/lambdas/nodejs/lib/dynamodb/test/composite-table.test.ts +++ b/packages/aws-rfdk/lib/lambdas/nodejs/lib/dynamodb/test/composite-table.test.ts @@ -168,21 +168,27 @@ describe('Tests using dynalite', () => { expect(table.tableName).toBeUndefined(); }); - test.each([ - [GOOD_TABLE_NAME, false], - [BAD_TABLE1_NAME, true], - [BAD_TABLE2_NAME, true], - [BAD_TABLE3_NAME, true], - ])('fromExisting table %p', async (tableName: string, expectedToThrow: boolean) => { - - if (expectedToThrow) { - await expect(CompositeStringIndexTable.fromExisting(dynamoClient, tableName)).rejects.toThrow(); - } else { - await expect(CompositeStringIndexTable.fromExisting(dynamoClient, tableName)).resolves.not.toThrow(); - const table = await CompositeStringIndexTable.fromExisting(dynamoClient, tableName); - expect(table.primaryKey).toBe('PrimKey'); - expect(table.sortKey).toBe('SortKey'); - } + describe('fromExisting fails on bad table name', () => { + test.each([ + [BAD_TABLE1_NAME], + [BAD_TABLE2_NAME], + [BAD_TABLE3_NAME], + ])('tableName = %p', async (tableName: string) => { + // WHEN + await expect(CompositeStringIndexTable.fromExisting(dynamoClient, tableName)) + // THEN + .rejects + .toThrow(); + }); + }); + + test('fromExising succeeds on good table name', async () => { + // WHEN + const table = await CompositeStringIndexTable.fromExisting(dynamoClient, GOOD_TABLE_NAME); + + // THEN + expect(table.primaryKey).toBe('PrimKey'); + expect(table.sortKey).toBe('SortKey'); }); test('putItem/getItem success', async () => { diff --git a/packages/aws-rfdk/lib/lambdas/nodejs/mongodb/test/handler.test.ts b/packages/aws-rfdk/lib/lambdas/nodejs/mongodb/test/handler.test.ts index 93bffb161..8fe79a5a7 100644 --- a/packages/aws-rfdk/lib/lambdas/nodejs/mongodb/test/handler.test.ts +++ b/packages/aws-rfdk/lib/lambdas/nodejs/mongodb/test/handler.test.ts @@ -421,9 +421,26 @@ describe('createUser', () => { describe('createPasswordAuthUser', () => { let consoleLogMock: jest.SpyInstance; + // GIVEN + const username = 'testuser'; + const password = 'testpassword'; + const roles = [ { role: 'readwrite', db: 'somedb' } ]; + const userData = { + username, + password, + roles, + }; + const secretContents = { + SecretString: JSON.stringify(userData), + }; + beforeEach(() => { + // GIVEN setSDKInstance(AWS); consoleLogMock = jest.spyOn(console, 'log').mockReturnValue(undefined); + + const mockGetSecret = jest.fn( (request) => successRequestMock(request, secretContents) ); + mock('SecretsManager', 'getSecretValue', mockGetSecret); }); afterEach(() => { @@ -431,34 +448,57 @@ describe('createPasswordAuthUser', () => { jest.clearAllMocks(); }); - test.each([ - [ - [], true, - ], - [ - [ + test('existing user', async () => { + // GIVEN + const userExistsResponse = { + users: [], + ok: 1, + }; + const addUserResponse = { + ok: 1, + }; + async function commandMock(request: { [key: string]: string}): Promise<{ [key: string]: any }> { + if ('createUser' in request) { + return addUserResponse; + } + return userExistsResponse; + } + const mockDb = { + command: jest.fn( (request) => commandMock(request) ), + }; + const handler = new MongoDbConfigure(new AWS.SecretsManager()); + + // WHEN + // tslint:disable-next-line: no-string-literal + const result = await handler['createPasswordAuthUser'](mockDb, secretArn); + + expect(result).toStrictEqual(true); + expect(mockDb.command.mock.calls.length).toBe(2); + // Check args of userExits DB query. + expect(mockDb.command.mock.calls[0][0]).toStrictEqual({ + usersInfo: username, + }); + + // Check args of createUser DB query. + expect(mockDb.command.mock.calls[1][0]).toStrictEqual({ + createUser: username, + pwd: password, + roles, + }); + expect(consoleLogMock.mock.calls.length).toBe(1); + expect(consoleLogMock.mock.calls[0][0]).toStrictEqual(`Creating user: ${username}`); + }); + + test('non-existing user', async () => { + // GIVEN + const userExistsResponse = { + users: [ { _id: 'admin.test', user: 'test', db: 'admin', }, ], - false, - ], - ])('userExists %p gives %p', async (userExists: any, expected: boolean) => { - // GIVEN - const userData = { - username: 'testuser', - password: 'testpassword', - roles: [ { role: 'readWrite', db: 'somedb' } ], - }; - const secretContents = { - SecretString: JSON.stringify(userData), - }; - const mockGetSecret = jest.fn( (request) => successRequestMock(request, secretContents) ); - mock('SecretsManager', 'getSecretValue', mockGetSecret); - const userExistsResponse = { - users: userExists, ok: 1, }; const addUserResponse = { @@ -479,39 +519,31 @@ describe('createPasswordAuthUser', () => { // tslint:disable-next-line: no-string-literal const result = await handler['createPasswordAuthUser'](mockDb, secretArn); - // THEN - expect(result).toStrictEqual(expected); - expect(mockDb.command.mock.calls.length).toBe(expected ? 2 : 1); + expect(result).toStrictEqual(false); + expect(mockDb.command.mock.calls.length).toBe(1); // Check args of userExits DB query. expect(mockDb.command.mock.calls[0][0]).toStrictEqual({ - usersInfo: userData.username, + usersInfo: username, }); - if (expected) { - // Check args of createUser DB query. - expect(mockDb.command.mock.calls[1][0]).toStrictEqual({ - createUser: userData.username, - pwd: userData.password, - roles: userData.roles, - }); - expect(consoleLogMock.mock.calls.length).toBe(1); - expect(consoleLogMock.mock.calls[0][0]).toStrictEqual(`Creating user: ${userData.username}`); - } }); }); describe('createX509AuthUser', () => { let consoleLogMock: jest.SpyInstance; + const username = 'CN=TestUser,O=TestOrg,OU=TestOrgUnit'; beforeEach(() => { setSDKInstance(AWS); - consoleLogMock = jest.spyOn(console, 'log').mockReturnValue(undefined); + consoleLogMock = jest.spyOn(console, 'log') + .mockReset() + .mockReturnValue(undefined); }); afterEach(() => { restore('SecretsManager'); }); - test.each([ + describe.each([ [ [], true, ], @@ -525,9 +557,12 @@ describe('createX509AuthUser', () => { ], false, ], - ])('userExists %p gives %p', async (userExists: any, expected: boolean) => { + ])('userExists %p gives %p', (userExists: any, expected: boolean) => { + let mockDb: any; + let result: boolean; + // GIVEN - const username = 'CN=TestUser,O=TestOrg,OU=TestOrgUnit'; + const dbCommandExpectedCallCount = expected ? 2 : 1; const userExistsResponse = { users: userExists, ok: 1, @@ -535,56 +570,73 @@ describe('createX509AuthUser', () => { const addUserResponse = { ok: 1, }; - async function commandMock(request: { [key: string]: string}): Promise<{ [key: string]: any }> { - if ('createUser' in request) { - return addUserResponse; - } - return userExistsResponse; - } - const mockDb = { - command: jest.fn( (request) => commandMock(request) ), - }; - async function stringSuccessRequestMock(value: string): Promise { - return value; - } - async function rfc2253(_arg: string): Promise { - return username; - } - const mockReadCert = jest.fn( (request) => stringSuccessRequestMock(request) ); - const mockRfc2253 = jest.fn( (arg) => rfc2253(arg) ); - const handler = new MongoDbConfigure(new AWS.SecretsManager()); - // tslint:disable-next-line: no-string-literal - handler['readCertificateData'] = mockReadCert; - // tslint:disable-next-line: no-string-literal - handler['retrieveRfc2253Subject'] = mockRfc2253; - const userData = { - certificate: secretArn, - roles: [ { role: 'readWrite', db: 'somedb' } ], - }; - const userToCreate = { - Certificate: userData.certificate, - Roles: JSON.stringify(userData.roles), - }; + const roles = [ { role: 'readWrite', db: 'somedb' } ]; - // WHEN - // tslint:disable-next-line: no-string-literal - const result = await handler['createX509AuthUser'](mockDb, userToCreate); + beforeEach(async () => { + // GIVEN + async function commandMock(request: { [key: string]: string}): Promise<{ [key: string]: any }> { + if ('createUser' in request) { + return addUserResponse; + } + return userExistsResponse; + } + mockDb = { + command: jest.fn( (request) => commandMock(request) ), + }; + async function stringSuccessRequestMock(value: string): Promise { + return value; + } + async function rfc2253(_arg: string): Promise { + return username; + } + const mockReadCert = jest.fn( (request) => stringSuccessRequestMock(request) ); + const mockRfc2253 = jest.fn( (arg) => rfc2253(arg) ); + const handler = new MongoDbConfigure(new AWS.SecretsManager()); + // tslint:disable-next-line: no-string-literal + handler['readCertificateData'] = mockReadCert; + // tslint:disable-next-line: no-string-literal + handler['retrieveRfc2253Subject'] = mockRfc2253; + const userData = { + certificate: secretArn, + roles, + }; + const userToCreate = { + Certificate: userData.certificate, + Roles: JSON.stringify(userData.roles), + }; + + // WHEN + // tslint:disable-next-line: no-string-literal + result = await handler['createX509AuthUser'](mockDb, userToCreate); + }); // THEN - expect(result).toStrictEqual(expected); - expect(mockDb.command.mock.calls.length).toBe(expected ? 2 : 1); - // Check args of userExits DB query. - expect(mockDb.command.mock.calls[0][0]).toStrictEqual({ - usersInfo: username, + test('returns expected result', () => { + expect(result).toStrictEqual(expected); + }); + + test(`db.command called ${dbCommandExpectedCallCount} times`, () => { + expect(mockDb.command.mock.calls.length).toBe(dbCommandExpectedCallCount); }); + + test('correct arguments passed to userExits DB query', () => { + expect(mockDb.command.mock.calls[0][0]).toStrictEqual({ + usersInfo: username, + }); + }); + if (expected) { - // Check args of createUser DB query. - expect(mockDb.command.mock.calls[1][0]).toStrictEqual({ - createUser: username, - roles: userData.roles, + test('correct arguments passed to createUser DB query', () => { + expect(mockDb.command.mock.calls[1][0]).toStrictEqual({ + createUser: username, + roles, + }); + }); + + test('user creation logged to output', () => { + expect(consoleLogMock.mock.calls.length).toBe(1); + expect(consoleLogMock.mock.calls[0][0]).toStrictEqual(`Creating user: ${username}`); }); - expect(consoleLogMock.mock.calls.length).toBe(1); - expect(consoleLogMock.mock.calls[0][0]).toStrictEqual(`Creating user: ${username}`); } }); }); diff --git a/packages/aws-rfdk/package.json b/packages/aws-rfdk/package.json index e6ddb0a28..33abb2614 100644 --- a/packages/aws-rfdk/package.json +++ b/packages/aws-rfdk/package.json @@ -1,6 +1,6 @@ { "name": "aws-rfdk", - "version": "0.30.0", + "version": "0.31.0", "private": false, "description": "Package for core render farm constructs", "main": "lib/index.js", @@ -65,144 +65,144 @@ "jest": true }, "devDependencies": { - "@aws-cdk/assert": "1.99.0", - "@types/aws-lambda": "^8.10.75", + "@aws-cdk/assert": "1.102.0", + "@types/aws-lambda": "^8.10.76", "@types/sinon": "^9.0.11", - "aws-sdk": "^2.889.0", + "aws-sdk": "^2.903.0", "aws-sdk-mock": "^5.1.0", - "cdk-build-tools": "0.30.0", + "cdk-build-tools": "0.31.0", "dynalite": "^3.2.1", - "pkglint": "0.30.0", + "pkglint": "0.31.0", "sinon": "^10.0.0" }, "dependencies": { - "@aws-cdk/assets": "1.99.0", - "@aws-cdk/aws-apigateway": "1.99.0", - "@aws-cdk/aws-apigatewayv2": "1.99.0", - "@aws-cdk/aws-apigatewayv2-integrations": "1.99.0", - "@aws-cdk/aws-applicationautoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling-common": "1.99.0", - "@aws-cdk/aws-autoscaling-hooktargets": "1.99.0", - "@aws-cdk/aws-batch": "1.99.0", - "@aws-cdk/aws-certificatemanager": "1.99.0", - "@aws-cdk/aws-cloudformation": "1.99.0", - "@aws-cdk/aws-cloudfront": "1.99.0", - "@aws-cdk/aws-cloudwatch": "1.99.0", - "@aws-cdk/aws-cloudwatch-actions": "1.99.0", - "@aws-cdk/aws-codebuild": "1.99.0", - "@aws-cdk/aws-codecommit": "1.99.0", - "@aws-cdk/aws-codeguruprofiler": "1.99.0", - "@aws-cdk/aws-codepipeline": "1.99.0", - "@aws-cdk/aws-cognito": "1.99.0", - "@aws-cdk/aws-databrew": "1.99.0", - "@aws-cdk/aws-docdb": "1.99.0", - "@aws-cdk/aws-dynamodb": "1.99.0", - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-ecr": "1.99.0", - "@aws-cdk/aws-ecr-assets": "1.99.0", - "@aws-cdk/aws-ecs": "1.99.0", - "@aws-cdk/aws-ecs-patterns": "1.99.0", - "@aws-cdk/aws-efs": "1.99.0", - "@aws-cdk/aws-eks": "1.99.0", - "@aws-cdk/aws-elasticloadbalancing": "1.99.0", - "@aws-cdk/aws-elasticloadbalancingv2": "1.99.0", - "@aws-cdk/aws-events": "1.99.0", - "@aws-cdk/aws-events-targets": "1.99.0", - "@aws-cdk/aws-globalaccelerator": "1.99.0", - "@aws-cdk/aws-glue": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-kinesis": "1.99.0", - "@aws-cdk/aws-kinesisfirehose": "1.99.0", - "@aws-cdk/aws-kms": "1.99.0", - "@aws-cdk/aws-lambda": "1.99.0", - "@aws-cdk/aws-logs": "1.99.0", - "@aws-cdk/aws-route53": "1.99.0", - "@aws-cdk/aws-route53-targets": "1.99.0", - "@aws-cdk/aws-s3": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/aws-sam": "1.99.0", - "@aws-cdk/aws-secretsmanager": "1.99.0", - "@aws-cdk/aws-servicediscovery": "1.99.0", - "@aws-cdk/aws-signer": "1.99.0", - "@aws-cdk/aws-sns": "1.99.0", - "@aws-cdk/aws-sns-subscriptions": "1.99.0", - "@aws-cdk/aws-sqs": "1.99.0", - "@aws-cdk/aws-ssm": "1.99.0", - "@aws-cdk/aws-stepfunctions": "1.99.0", - "@aws-cdk/aws-stepfunctions-tasks": "1.99.0", - "@aws-cdk/cloud-assembly-schema": "1.99.0", - "@aws-cdk/core": "1.99.0", - "@aws-cdk/custom-resources": "1.99.0", - "@aws-cdk/cx-api": "1.99.0", - "@aws-cdk/lambda-layer-awscli": "1.99.0", - "@aws-cdk/lambda-layer-kubectl": "1.99.0", - "@aws-cdk/region-info": "1.99.0", + "@aws-cdk/assets": "1.102.0", + "@aws-cdk/aws-apigateway": "1.102.0", + "@aws-cdk/aws-apigatewayv2": "1.102.0", + "@aws-cdk/aws-apigatewayv2-integrations": "1.102.0", + "@aws-cdk/aws-applicationautoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling-common": "1.102.0", + "@aws-cdk/aws-autoscaling-hooktargets": "1.102.0", + "@aws-cdk/aws-batch": "1.102.0", + "@aws-cdk/aws-certificatemanager": "1.102.0", + "@aws-cdk/aws-cloudformation": "1.102.0", + "@aws-cdk/aws-cloudfront": "1.102.0", + "@aws-cdk/aws-cloudwatch": "1.102.0", + "@aws-cdk/aws-cloudwatch-actions": "1.102.0", + "@aws-cdk/aws-codebuild": "1.102.0", + "@aws-cdk/aws-codecommit": "1.102.0", + "@aws-cdk/aws-codeguruprofiler": "1.102.0", + "@aws-cdk/aws-codepipeline": "1.102.0", + "@aws-cdk/aws-cognito": "1.102.0", + "@aws-cdk/aws-databrew": "1.102.0", + "@aws-cdk/aws-docdb": "1.102.0", + "@aws-cdk/aws-dynamodb": "1.102.0", + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-ecr": "1.102.0", + "@aws-cdk/aws-ecr-assets": "1.102.0", + "@aws-cdk/aws-ecs": "1.102.0", + "@aws-cdk/aws-ecs-patterns": "1.102.0", + "@aws-cdk/aws-efs": "1.102.0", + "@aws-cdk/aws-eks": "1.102.0", + "@aws-cdk/aws-elasticloadbalancing": "1.102.0", + "@aws-cdk/aws-elasticloadbalancingv2": "1.102.0", + "@aws-cdk/aws-events": "1.102.0", + "@aws-cdk/aws-events-targets": "1.102.0", + "@aws-cdk/aws-globalaccelerator": "1.102.0", + "@aws-cdk/aws-glue": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-kinesis": "1.102.0", + "@aws-cdk/aws-kinesisfirehose": "1.102.0", + "@aws-cdk/aws-kms": "1.102.0", + "@aws-cdk/aws-lambda": "1.102.0", + "@aws-cdk/aws-logs": "1.102.0", + "@aws-cdk/aws-route53": "1.102.0", + "@aws-cdk/aws-route53-targets": "1.102.0", + "@aws-cdk/aws-s3": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/aws-sam": "1.102.0", + "@aws-cdk/aws-secretsmanager": "1.102.0", + "@aws-cdk/aws-servicediscovery": "1.102.0", + "@aws-cdk/aws-signer": "1.102.0", + "@aws-cdk/aws-sns": "1.102.0", + "@aws-cdk/aws-sns-subscriptions": "1.102.0", + "@aws-cdk/aws-sqs": "1.102.0", + "@aws-cdk/aws-ssm": "1.102.0", + "@aws-cdk/aws-stepfunctions": "1.102.0", + "@aws-cdk/aws-stepfunctions-tasks": "1.102.0", + "@aws-cdk/cloud-assembly-schema": "1.102.0", + "@aws-cdk/core": "1.102.0", + "@aws-cdk/custom-resources": "1.102.0", + "@aws-cdk/cx-api": "1.102.0", + "@aws-cdk/lambda-layer-awscli": "1.102.0", + "@aws-cdk/lambda-layer-kubectl": "1.102.0", + "@aws-cdk/region-info": "1.102.0", "constructs": "^3.3.69" }, "peerDependencies": { - "@aws-cdk/assets": "1.99.0", - "@aws-cdk/aws-apigateway": "1.99.0", - "@aws-cdk/aws-apigatewayv2": "1.99.0", - "@aws-cdk/aws-apigatewayv2-integrations": "1.99.0", - "@aws-cdk/aws-applicationautoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling": "1.99.0", - "@aws-cdk/aws-autoscaling-common": "1.99.0", - "@aws-cdk/aws-autoscaling-hooktargets": "1.99.0", - "@aws-cdk/aws-batch": "1.99.0", - "@aws-cdk/aws-certificatemanager": "1.99.0", - "@aws-cdk/aws-cloudformation": "1.99.0", - "@aws-cdk/aws-cloudfront": "1.99.0", - "@aws-cdk/aws-cloudwatch": "1.99.0", - "@aws-cdk/aws-cloudwatch-actions": "1.99.0", - "@aws-cdk/aws-codebuild": "1.99.0", - "@aws-cdk/aws-codecommit": "1.99.0", - "@aws-cdk/aws-codeguruprofiler": "1.99.0", - "@aws-cdk/aws-codepipeline": "1.99.0", - "@aws-cdk/aws-cognito": "1.99.0", - "@aws-cdk/aws-databrew": "1.99.0", - "@aws-cdk/aws-docdb": "1.99.0", - "@aws-cdk/aws-dynamodb": "1.99.0", - "@aws-cdk/aws-ec2": "1.99.0", - "@aws-cdk/aws-ecr": "1.99.0", - "@aws-cdk/aws-ecr-assets": "1.99.0", - "@aws-cdk/aws-ecs": "1.99.0", - "@aws-cdk/aws-ecs-patterns": "1.99.0", - "@aws-cdk/aws-efs": "1.99.0", - "@aws-cdk/aws-eks": "1.99.0", - "@aws-cdk/aws-elasticloadbalancing": "1.99.0", - "@aws-cdk/aws-elasticloadbalancingv2": "1.99.0", - "@aws-cdk/aws-events": "1.99.0", - "@aws-cdk/aws-events-targets": "1.99.0", - "@aws-cdk/aws-globalaccelerator": "1.99.0", - "@aws-cdk/aws-glue": "1.99.0", - "@aws-cdk/aws-iam": "1.99.0", - "@aws-cdk/aws-kinesis": "1.99.0", - "@aws-cdk/aws-kinesisfirehose": "1.99.0", - "@aws-cdk/aws-kms": "1.99.0", - "@aws-cdk/aws-lambda": "1.99.0", - "@aws-cdk/aws-logs": "1.99.0", - "@aws-cdk/aws-route53": "1.99.0", - "@aws-cdk/aws-route53-targets": "1.99.0", - "@aws-cdk/aws-s3": "1.99.0", - "@aws-cdk/aws-s3-assets": "1.99.0", - "@aws-cdk/aws-sam": "1.99.0", - "@aws-cdk/aws-secretsmanager": "1.99.0", - "@aws-cdk/aws-servicediscovery": "1.99.0", - "@aws-cdk/aws-signer": "1.99.0", - "@aws-cdk/aws-sns": "1.99.0", - "@aws-cdk/aws-sns-subscriptions": "1.99.0", - "@aws-cdk/aws-sqs": "1.99.0", - "@aws-cdk/aws-ssm": "1.99.0", - "@aws-cdk/aws-stepfunctions": "1.99.0", - "@aws-cdk/aws-stepfunctions-tasks": "1.99.0", - "@aws-cdk/cloud-assembly-schema": "1.99.0", - "@aws-cdk/core": "1.99.0", - "@aws-cdk/custom-resources": "1.99.0", - "@aws-cdk/cx-api": "1.99.0", - "@aws-cdk/lambda-layer-awscli": "1.99.0", - "@aws-cdk/lambda-layer-kubectl": "1.99.0", - "@aws-cdk/region-info": "1.99.0", + "@aws-cdk/assets": "1.102.0", + "@aws-cdk/aws-apigateway": "1.102.0", + "@aws-cdk/aws-apigatewayv2": "1.102.0", + "@aws-cdk/aws-apigatewayv2-integrations": "1.102.0", + "@aws-cdk/aws-applicationautoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling": "1.102.0", + "@aws-cdk/aws-autoscaling-common": "1.102.0", + "@aws-cdk/aws-autoscaling-hooktargets": "1.102.0", + "@aws-cdk/aws-batch": "1.102.0", + "@aws-cdk/aws-certificatemanager": "1.102.0", + "@aws-cdk/aws-cloudformation": "1.102.0", + "@aws-cdk/aws-cloudfront": "1.102.0", + "@aws-cdk/aws-cloudwatch": "1.102.0", + "@aws-cdk/aws-cloudwatch-actions": "1.102.0", + "@aws-cdk/aws-codebuild": "1.102.0", + "@aws-cdk/aws-codecommit": "1.102.0", + "@aws-cdk/aws-codeguruprofiler": "1.102.0", + "@aws-cdk/aws-codepipeline": "1.102.0", + "@aws-cdk/aws-cognito": "1.102.0", + "@aws-cdk/aws-databrew": "1.102.0", + "@aws-cdk/aws-docdb": "1.102.0", + "@aws-cdk/aws-dynamodb": "1.102.0", + "@aws-cdk/aws-ec2": "1.102.0", + "@aws-cdk/aws-ecr": "1.102.0", + "@aws-cdk/aws-ecr-assets": "1.102.0", + "@aws-cdk/aws-ecs": "1.102.0", + "@aws-cdk/aws-ecs-patterns": "1.102.0", + "@aws-cdk/aws-efs": "1.102.0", + "@aws-cdk/aws-eks": "1.102.0", + "@aws-cdk/aws-elasticloadbalancing": "1.102.0", + "@aws-cdk/aws-elasticloadbalancingv2": "1.102.0", + "@aws-cdk/aws-events": "1.102.0", + "@aws-cdk/aws-events-targets": "1.102.0", + "@aws-cdk/aws-globalaccelerator": "1.102.0", + "@aws-cdk/aws-glue": "1.102.0", + "@aws-cdk/aws-iam": "1.102.0", + "@aws-cdk/aws-kinesis": "1.102.0", + "@aws-cdk/aws-kinesisfirehose": "1.102.0", + "@aws-cdk/aws-kms": "1.102.0", + "@aws-cdk/aws-lambda": "1.102.0", + "@aws-cdk/aws-logs": "1.102.0", + "@aws-cdk/aws-route53": "1.102.0", + "@aws-cdk/aws-route53-targets": "1.102.0", + "@aws-cdk/aws-s3": "1.102.0", + "@aws-cdk/aws-s3-assets": "1.102.0", + "@aws-cdk/aws-sam": "1.102.0", + "@aws-cdk/aws-secretsmanager": "1.102.0", + "@aws-cdk/aws-servicediscovery": "1.102.0", + "@aws-cdk/aws-signer": "1.102.0", + "@aws-cdk/aws-sns": "1.102.0", + "@aws-cdk/aws-sns-subscriptions": "1.102.0", + "@aws-cdk/aws-sqs": "1.102.0", + "@aws-cdk/aws-ssm": "1.102.0", + "@aws-cdk/aws-stepfunctions": "1.102.0", + "@aws-cdk/aws-stepfunctions-tasks": "1.102.0", + "@aws-cdk/cloud-assembly-schema": "1.102.0", + "@aws-cdk/core": "1.102.0", + "@aws-cdk/custom-resources": "1.102.0", + "@aws-cdk/cx-api": "1.102.0", + "@aws-cdk/lambda-layer-awscli": "1.102.0", + "@aws-cdk/lambda-layer-kubectl": "1.102.0", + "@aws-cdk/region-info": "1.102.0", "constructs": "^3.3.69" }, "engines": { diff --git a/tools/cdk-build-tools/.gitignore b/tools/cdk-build-tools/.gitignore index e8c528090..870835aae 100644 --- a/tools/cdk-build-tools/.gitignore +++ b/tools/cdk-build-tools/.gitignore @@ -6,4 +6,5 @@ dist *.snk !license-header.js !.eslintrc.js +!config/*.js junit.xml \ No newline at end of file diff --git a/tools/cdk-build-tools/bin/cdk-package.ts b/tools/cdk-build-tools/bin/cdk-package.ts index 2da9aa759..85843294b 100644 --- a/tools/cdk-build-tools/bin/cdk-package.ts +++ b/tools/cdk-build-tools/bin/cdk-package.ts @@ -2,6 +2,7 @@ import * as path from 'path'; import * as fs from 'fs-extra'; import * as yargs from 'yargs'; import { shell } from '../lib/os'; +import { cdkPackageOptions, isJsii, isPrivate } from '../lib/package-info'; import { Timers } from '../lib/timer'; const timers = new Timers(); @@ -21,17 +22,17 @@ async function main() { }) .argv; - // if this is a jsii package, use jsii-packmak + const options = cdkPackageOptions(); + const outdir = 'dist'; - const pkg = await fs.readJson('package.json'); // if this is a private module, don't package - if (pkg.private) { + if (isPrivate()) { process.stdout.write('No packaging for private modules.\n'); return; } - if (pkg.jsii) { + if (isJsii()) { const command = [args['jsii-pacmak'], args.verbose ? '-vvv' : '-v', ...args.targets ? flatMap(args.targets, (target: string) => ['-t', target]) : [], @@ -45,8 +46,13 @@ async function main() { await fs.mkdirp(target); await fs.move(tarball, path.join(target, path.basename(tarball))); } + + if (options.post) { + await shell(options.post, { timers }); + } } + main().then(() => { buildTimer.end(); process.stdout.write(`Package complete. ${timers.display()}\n`); diff --git a/tools/cdk-build-tools/bin/cdk-test.ts b/tools/cdk-build-tools/bin/cdk-test.ts index 577113676..0ce45274a 100644 --- a/tools/cdk-build-tools/bin/cdk-test.ts +++ b/tools/cdk-build-tools/bin/cdk-test.ts @@ -55,7 +55,7 @@ async function main() { // that can only be a filename relative to '--cwd', but if we set '--cwd' // nyc doesn't find the source files anymore. // - // We end up symlinking nyc.config.js into the package. + // We end up copying nyc.config.js into the package. const nycConfig = 'nyc.config.js'; // Delete file if it exists @@ -65,7 +65,7 @@ async function main() { if (e.code !== 'ENOENT') { return; } } - await fs.ensureSymlink(configFilePath('nyc.config.js'), nycConfig); + await fs.copyFile(configFilePath('nyc.config.js'), nycConfig); testCommand.push(...[args.nyc, '--clean']); testCommand.push(args.nodeunit); diff --git a/tools/cdk-build-tools/config/.gitignore b/tools/cdk-build-tools/config/.gitignore deleted file mode 100644 index 8fa9d6f15..000000000 --- a/tools/cdk-build-tools/config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!*.js \ No newline at end of file diff --git a/tools/cdk-build-tools/lib/package-info.ts b/tools/cdk-build-tools/lib/package-info.ts index c20efb61a..e0c5b4634 100644 --- a/tools/cdk-build-tools/lib/package-info.ts +++ b/tools/cdk-build-tools/lib/package-info.ts @@ -24,6 +24,13 @@ export function cdkBuildOptions(): CDKBuildOptions { return currentPackageJson()['cdk-build'] || {}; } +/** + * Return the cdk-package options + */ +export function cdkPackageOptions(): CDKPackageOptions { + return currentPackageJson()['cdk-package'] || {}; +} + /** * Whether this is a jsii package */ @@ -31,6 +38,13 @@ export function isJsii(): boolean { return currentPackageJson().jsii !== undefined; } +/** + * Whether this is a private package + */ +export function isPrivate(): boolean { + return currentPackageJson().private !== undefined; +} + export interface File { filename: string; path: string; @@ -137,6 +151,18 @@ export interface CDKBuildOptions { jest?: boolean; } +export interface CDKPackageOptions { + /** + * Should this package be shrinkwrap + */ + shrinkWrap?: boolean; + + /* + * An optional command (formatted as a list of strings) to run after packaging + */ + post?: string[]; +} + /** * Return a full path to the config file in this package * diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index 60b20d603..44351f051 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -1,7 +1,7 @@ { "name": "cdk-build-tools", "private": true, - "version": "0.30.0", + "version": "0.31.0", "description": "Tools package with shared build scripts for CDK packages", "main": "lib/index.js", "repository": { @@ -36,24 +36,27 @@ "devDependencies": { "@types/fs-extra": "^9.0.11", "@types/jest": "^26.0.22", + "@types/semver": "^7.3.4", "@types/yargs": "^16.0.1", "eslint-plugin-license-header": "^0.2.0", - "pkglint": "0.30.0" + "pkglint": "0.31.0" }, "dependencies": { "@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", - "awslint": "1.99.0", + "awslint": "1.102.0", "colors": "^1.4.0", "eslint": "^7.24.0", "eslint-import-resolver-node": "^0.3.4", "eslint-import-resolver-typescript": "^2.4.0", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jest": "^24.3.5", + "eslint-plugin-jest": "^24.3.6", "fs-extra": "^9.1.0", "jest": "^26.6.3", + "jest-junit": "^11.1.0", "jsii": "^1.28.0", "jsii-pacmak": "^1.28.0", + "jsii-reflect": "^1.28.0", "nodeunit": "^0.11.3", "nyc": "^15.1.0", "semver": "^7.3.5", diff --git a/tools/pkglint/.eslintrc.js b/tools/pkglint/.eslintrc.js index 1d089488a..7d08ffb8c 100644 --- a/tools/pkglint/.eslintrc.js +++ b/tools/pkglint/.eslintrc.js @@ -1,7 +1,200 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -baseConfig.rules["license-header/header"][0] = 'off'; -// Disable linting of white-space between the TyepScript type annotation syntax on this package to help merge -// upstream code. -baseConfig.rules["@typescript-eslint/type-annotation-spacing"][0] = 'off'; -module.exports = baseConfig; +// This cannot reference the build rules from cdk-build-tools as this +// package is itself used by cdk-build-tools. +module.exports = { + env: { + jest: true, + node: true, + }, + plugins: [ + '@typescript-eslint', + 'import', + 'jest', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: '2018', + sourceType: 'module', + project: './tsconfig.json', + }, + extends: [ + 'plugin:import/typescript', + 'plugin:jest/recommended', + ], + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + node: {}, + typescript: { + directory: './tsconfig.json', + }, + }, + }, + ignorePatterns: ['*.js', '*.d.ts', 'node_modules/', '*.generated.ts'], + rules: { + // Require use of the `import { foo } from 'bar';` form instead of `import foo = require('bar');` + '@typescript-eslint/no-require-imports': ['error'], + '@typescript-eslint/indent': ['error', 2], + '@typescript-eslint/annotation-spacing': ['off', {}], + + // Style + 'quotes': ['error', 'single', { avoidEscape: true }], + 'comma-dangle': ['error', 'always-multiline'], // ensures clean diffs, see https://medium.com/@nikgraf/why-you-should-enforce-dangling-commas-for-multiline-statements-d034c98e36f8 + 'comma-spacing': ['error', { before: false, after: true }], // space after, no space before + 'no-multi-spaces': ['error', { ignoreEOLComments: false }], // no multi spaces + 'array-bracket-spacing': ['error', 'never'], // [1, 2, 3] + 'array-bracket-newline': ['error', 'consistent'], // enforce consistent line breaks between brackets + 'object-curly-spacing': ['error', 'always'], // { key: 'value' } + 'object-curly-newline': ['error', { multiline: true, consistent: true }], // enforce consistent line breaks between braces + 'object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }], // enforce "same line" or "multiple line" on object properties + 'keyword-spacing': ['error'], // require a space before & after keywords + 'brace-style': ['error', '1tbs', { allowSingleLine: true }], // enforce one true brace style + 'space-before-blocks': 'error', // require space before blocks + 'curly': ['error', 'multi-line', 'consistent'], // require curly braces for multiline control statements + + // Require all imported dependencies are actually declared in package.json + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ // Only allow importing devDependencies from: + '**/build-tools/**', // --> Build tools + '**/test/**', // --> Unit tests + ], + optionalDependencies: false, // Disallow importing optional dependencies (those shouldn't be in use in the project) + peerDependencies: false, // Disallow importing peer dependencies (that aren't also direct dependencies) + }, + ], + + // Require all imported libraries actually resolve (!!required for import/no-extraneous-dependencies to work!!) + 'import/no-unresolved': ['error'], + + // Require an ordering on all imports -- unfortunately a different ordering than TSLint used to + // enforce, but there are no compatible ESLint rules as far as I can tell :( + // + // WARNING for now, otherwise this will mess up all open PRs. Make it into an error after a transitionary period. + 'import/order': ['warn', { + groups: ['builtin', 'external'], + alphabetize: { order: 'asc', caseInsensitive: true }, + }], + + // disallow import of deprecated punycode package + 'no-restricted-imports': [ + 'error', { + paths: [ + { + name: 'punycode', + message: `Package 'punycode' has to be imported with trailing slash, see warning in https://github.com/bestiejs/punycode.js#installation`, + }, + ], + patterns: ['!punycode/'], + }, + ], + + // Cannot import from the same module twice + 'no-duplicate-imports': ['error'], + + // Cannot shadow names + 'no-shadow': ['off'], + '@typescript-eslint/no-shadow': ['error'], + + // Required spacing in property declarations (copied from TSLint, defaults are good) + 'key-spacing': ['error'], + + // Require semicolons + 'semi': ['error', 'always'], + + // Don't unnecessarily quote properties + 'quote-props': ['error', 'consistent-as-needed'], + + // No multiple empty lines + 'no-multiple-empty-lines': ['error'], + + // Max line lengths + 'max-len': ['error', { + code: 150, + ignoreUrls: true, // Most common reason to disable it + ignoreStrings: true, // These are not fantastic but necessary for error messages + ignoreTemplateLiterals: true, + ignoreComments: true, + ignoreRegExpLiterals: true, + }], + + // One of the easiest mistakes to make + '@typescript-eslint/no-floating-promises': ['error'], + + // Make sure that inside try/catch blocks, promises are 'return await'ed + // (must disable the base rule as it can report incorrect errors) + 'no-return-await': 'off', + '@typescript-eslint/return-await': 'error', + + // Don't leave log statements littering the premises! + 'no-console': ['error'], + + // Useless diff results + 'no-trailing-spaces': ['error'], + + // Must use foo.bar instead of foo['bar'] if possible + 'dot-notation': ['error'], + + // Must use 'import' statements (disabled because it doesn't add a lot over no-require-imports) + // '@typescript-eslint/no-var-requires': ['error'], + + // Are you sure | is not a typo for || ? + 'no-bitwise': ['error'], + + // Oh ho ho naming. Everyone's favorite topic! + // FIXME: there's no way to do this properly. The proposed tslint replacement + // works very differently, also checking names in object literals, which we use all over the + // place for configs, mockfs, nodeunit tests, etc. + // + // The maintainer does not want to change behavior. + // https://github.com/typescript-eslint/typescript-eslint/issues/1483 + // + // There is no good replacement for tslint's name checking, currently. We will have to make do + // with jsii's validation. + /* + '@typescript-eslint/naming-convention': ['error', + + // We could maybe be more specific in a number of these but I didn't want to + // spend too much effort. Knock yourself out if you feel like it. + { selector: 'enumMember', format: ['PascalCase', 'UPPER_CASE'] }, + { selector: 'variableLike', format: ['camelCase', 'UPPER_CASE'], leadingUnderscore: 'allow' }, + { selector: 'typeLike', format: ['PascalCase'], leadingUnderscore: 'allow' }, + { selector: 'memberLike', format: ['camelCase', 'PascalCase', 'UPPER_CASE'], leadingUnderscore: 'allow' }, + + // FIXME: there's no way to disable name checking in object literals. Maintainer won't have it + // https://github.com/typescript-eslint/typescript-eslint/issues/1483 + ], + */ + + // Member ordering + '@typescript-eslint/member-ordering': ['error', { + default: [ + 'public-static-field', + 'public-static-method', + 'protected-static-field', + 'protected-static-method', + 'private-static-field', + 'private-static-method', + + 'field', + + // Constructors + 'constructor', // = ["public-constructor", "protected-constructor", "private-constructor"] + + // Methods + 'method', + ], + }], + + // Overrides for plugin:jest/recommended + "jest/expect-expect": "off", + "jest/no-conditional-expect": "off", + "jest/no-done-callback": "off", // Far too many of these in the codebase. + "jest/no-standalone-expect": "off", // nodeunitShim confuses this check. + "jest/valid-expect": "off", // expect from '@aws-cdk/assert' can take a second argument + "jest/valid-title": "off", // A little over-zealous with test('test foo') being an error. + }, + }; + \ No newline at end of file diff --git a/tools/pkglint/bin/pkglint.ts b/tools/pkglint/bin/pkglint.ts index 56bd7e9fb..9dd0bc3e1 100644 --- a/tools/pkglint/bin/pkglint.ts +++ b/tools/pkglint/bin/pkglint.ts @@ -6,7 +6,7 @@ import { findPackageJsons, ValidationRule } from '../lib'; /* eslint-disable no-shadow */ const argv = yargs .usage('$0 [directory]') - .option('fix', { type: 'boolean', alias: 'f', desc: 'Fix package.json in addition to reporting mistakes'}) + .option('fix', { type: 'boolean', alias: 'f', desc: 'Fix package.json in addition to reporting mistakes' }) .argv; // Our version of yargs doesn't support positional arguments yet diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index e2fd26b88..c2a27dfd8 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -12,6 +12,8 @@ import { monoRepoRoot, } from './util'; +const PKGLINT_VERSION = require('../package.json').version; // eslint-disable-line @typescript-eslint/no-require-imports + const AWS_SERVICE_NAMES = require('./aws-service-official-names.json'); // eslint-disable-line @typescript-eslint/no-require-imports /** @@ -433,10 +435,13 @@ export class MustDependOnBuildTools extends ValidationRule { public validate(pkg: PackageJson): void { if (!shouldUseCDKBuildTools(pkg)) { return; } + // We can't ACTUALLY require cdk-build-tools/package.json here, + // because WE don't depend on cdk-build-tools and we don't know if + // the package does. expectDevDependency(this.name, pkg, 'cdk-build-tools', - `${require('../../cdk-build-tools/package.json').version}`); // eslint-disable-line @typescript-eslint/no-require-imports + `${PKGLINT_VERSION}`); } } @@ -640,10 +645,14 @@ export class MustHaveIntegCommand extends ValidationRule { if (!hasIntegTests(pkg)) { return; } expectJSON(this.name, pkg, 'scripts.integ', 'cdk-integ'); + + // We can't ACTUALLY require cdk-build-tools/package.json here, + // because WE don't depend on cdk-build-tools and we don't know if + // the package does. expectDevDependency(this.name, pkg, 'cdk-integ-tools', - `${require('../../cdk-integ-tools/package.json').version}`); // eslint-disable-line @typescript-eslint/no-require-imports + `${PKGLINT_VERSION}`); } } @@ -666,7 +675,7 @@ export class PkgLintAsScript extends ValidationRule { public validate(pkg: PackageJson): void { const script = 'pkglint -f'; - expectDevDependency(this.name, pkg, 'pkglint', `${require('../package.json').version}`); // eslint-disable-line @typescript-eslint/no-require-imports + expectDevDependency(this.name, pkg, 'pkglint', `${PKGLINT_VERSION}`); if (!pkg.npmScript('pkglint')) { pkg.report({ diff --git a/tools/pkglint/lib/util.ts b/tools/pkglint/lib/util.ts index 13ecfc06f..eadc576b5 100644 --- a/tools/pkglint/lib/util.ts +++ b/tools/pkglint/lib/util.ts @@ -151,7 +151,7 @@ export function findUpward(dir: string, pred: (x: string) => boolean): string | } export function monoRepoRoot() { - const ret = findUpward(process.cwd(), d => fs.existsSync(path.join(d, 'lerna.json'))); + const ret = findUpward(process.cwd(), d => fs.existsSync(path.join(d, 'lerna.json')) || fs.existsSync(path.join(d, '.nzmroot'))); if (!ret) { throw new Error('Could not find lerna.json'); } diff --git a/tools/pkglint/package.json b/tools/pkglint/package.json index a0a8d9695..2d370b8b5 100644 --- a/tools/pkglint/package.json +++ b/tools/pkglint/package.json @@ -1,6 +1,6 @@ { "name": "pkglint", - "version": "0.30.0", + "version": "0.31.0", "private": true, "description": "Validate and fix package.json files", "main": "lib/index.js", @@ -36,10 +36,23 @@ "license": "Apache-2.0", "devDependencies": { "@types/fs-extra": "^9.0.11", + "@types/glob": "^7.1.3", + "@types/jest": "^26.0.22", "@types/semver": "^7.3.4", "@types/yargs": "^16.0.1", + "eslint": "^7.23.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.3.4", "typescript": "~4.2.4" }, + "nozem": { + "ostools": [ + "chmod", + "cp" + ] + }, "dependencies": { "case": "^1.6.3", "colors": "^1.4.0", diff --git a/yarn.lock b/yarn.lock index 2659b11c5..22843bb76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,854 +2,850 @@ # yarn lockfile v1 -"@aws-cdk/assert@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/assert/-/assert-1.99.0.tgz#0bddfafc25322d516d5cd37fb7030f13b714ee53" - integrity sha512-0PP0h2vkCbRDG0f3+j9r+ctwrM5ICwg3WvJSZq0IN/6yZkyxwpmWRHmdjNZNRchyKIKM1Su50R4o2ypT7pJHfw== - dependencies: - "@aws-cdk/cloudformation-diff" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/assert@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/assert/-/assert-1.102.0.tgz#081336e5770b3cd229b4fc45a1b4e4955426875b" + integrity sha512-/NWjkg1ULpoUzEnIoxDjWverPbLx112UMydEDq3dwadxlsCQTijbIqot+oDWfmeDpmLOLTdLa5BROVm6mpbirQ== + dependencies: + "@aws-cdk/cloudformation-diff" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/assets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/assets/-/assets-1.99.0.tgz#b4f787dbcc2cc43f68a36eb4cc7c705ccd780af6" - integrity sha512-potfY11kTspy/RTqKSKZW2QTB5Hj5cl31vYJqIjmGI17Z3wB4D+OZTDLjykSzyRh1HZsYZfYe+j5uKiJ41WOMQ== +"@aws-cdk/assets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/assets/-/assets-1.102.0.tgz#c93a962d3a505fed7794f395d4524ca35566ee88" + integrity sha512-vmbEeHIIWTJT2KPl17afHN5aBIcstQbYlnMDF2BhUJ2famiIcadh2lWnH+BVDWfI4HoOhO68te2MhmW12VIYyg== dependencies: - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-apigateway@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigateway/-/aws-apigateway-1.99.0.tgz#2e0d6a5a1083406390cf2f0395d99a2c74b3a1a3" - integrity sha512-3jq1x60v9gNs7nnHRCDBFD/HF2IqkYSI6RErl2UVufQ8DSx9KNCy1KCGKt2MK4e5z47yMZgdIP8bgfAQsNSSnQ== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-cognito" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-apigateway@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigateway/-/aws-apigateway-1.102.0.tgz#2afdccd8a915f5dbdbe7413cfde6b787ee418277" + integrity sha512-SVVN8qpGEhv8TJJIPolWz8PLI5XPUOPncNpZMmy1v6yz0CDIAFMX9VytchDZZoLLu1BiIVE609nWbSoRPKERAQ== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-cognito" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-apigatewayv2-integrations@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigatewayv2-integrations/-/aws-apigatewayv2-integrations-1.99.0.tgz#76c3fef2db8a3065376964fbf7ef5111dc30eea4" - integrity sha512-Wo1kY7LiNS7ArewWqObjUvnIWDR+Nh6p/5P6gq2NtFF8asAIaLOiPhGnoshQlnLvdLdLjFnVXGSO4/dDTClneQ== - dependencies: - "@aws-cdk/aws-apigatewayv2" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-servicediscovery" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-apigatewayv2-integrations@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigatewayv2-integrations/-/aws-apigatewayv2-integrations-1.102.0.tgz#9084b0f548e188a7f0e429d33cb8f77e14621036" + integrity sha512-h/GDzo7wwCXnn4zEltwt26WEoSNt9Icjo2SCREBLrklMTGsLcTxNzoH/JHgSZd5yrdw5+Tk4C5Ey5wMC+5Np5g== + dependencies: + "@aws-cdk/aws-apigatewayv2" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-servicediscovery" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-apigatewayv2@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigatewayv2/-/aws-apigatewayv2-1.99.0.tgz#a911b75accb7b8fae20f9ef186cde8e0d2c6635c" - integrity sha512-M+5YA/MAGz7u4uPpM4Yqi/iiCqRTNgEfNC+qmx60/otSVC2kuZG9bRcrq+DbHUu+w9bKcYHivOk24tTQVqHncA== +"@aws-cdk/aws-apigatewayv2@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigatewayv2/-/aws-apigatewayv2-1.102.0.tgz#ef48a1571828147f796212ee5e12c9ba588ae91d" + integrity sha512-50vXPqOxW/2y5NQ1ZufWNgFc2Qd9oCK3RC7s1sQHFOhoHW2Ti3cuueARm6NZhoF0vr5xZN2YkoD7q1MSDGOLig== dependencies: - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-applicationautoscaling@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.99.0.tgz#336f303b463c58fc36901f7cb69a7df3dce8235d" - integrity sha512-4JpZdw2K29W/Bt6Sw2hP23CZzzbsF+HUVrSl8yGNLx5DIwvrNZKOdHuyp02Q45LQwmcE4G9NVQ5QkWkqVukKHQ== +"@aws-cdk/aws-applicationautoscaling@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.102.0.tgz#be70d4caccf80521a53f1beff7a14ea3da1f868f" + integrity sha512-eTfuaWkMcjkVLGsXQ1kRdHS7+6msb+mwU2A8b8rfdbGFUlb70M6LjpVFEYwxdb7vdsMkxOiRZWO001+fZCO6LA== dependencies: - "@aws-cdk/aws-autoscaling-common" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-autoscaling-common" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-autoscaling-common@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.99.0.tgz#fdd1f0287e957fa69aa0da8379e2398670b17780" - integrity sha512-Cg+/OMSnilIkdqJAXI6/43figwZLpjsowK2bsoJc7GgHJt0MPGTj603KQjiPMxhk2yi4gFBK1Zgm8zQTHRkTDQ== +"@aws-cdk/aws-autoscaling-common@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.102.0.tgz#d9e5b091dc1c05f10bf601fc6c8b01f838beaf51" + integrity sha512-y6b7ex4b7++Zey9rDEjZCgpSxz7OfAa/H7A2iXS7HDSYUvUyOaKEj1dsDZ5h9zzS60xe9dPOMTJNJgXF3z4eRw== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-autoscaling-hooktargets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-hooktargets/-/aws-autoscaling-hooktargets-1.99.0.tgz#f232a8b313950d545a4120da3563df46af46030f" - integrity sha512-Fm44p6sAM1Vj0MZDiISvPB5fh8U6V7Jd/PfUvyXFCIENGSTznCZFogZbgctf6tIlPvsq06qCTMk1TjgcXMVYaA== - dependencies: - "@aws-cdk/aws-autoscaling" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/aws-sns-subscriptions" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-autoscaling-hooktargets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-hooktargets/-/aws-autoscaling-hooktargets-1.102.0.tgz#a91f1d9626ffeef5d747558547f5ce21b7aeaf85" + integrity sha512-hmRtHeNl6lef92CI9Uo5EQZKMQES8jEX9jsdFtynTKN5+DbaiOqYdfbKERfPd++6ebM5lU44Xjgiz6bNF9EbRg== + dependencies: + "@aws-cdk/aws-autoscaling" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/aws-sns-subscriptions" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-autoscaling@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling/-/aws-autoscaling-1.99.0.tgz#0cde5c0f28af580c4f31df86a9e45f9305a9855f" - integrity sha512-4RysFhsp48/fLcf3j2AQyitFl05OJDyHeYsKjNpw+kKaVLN6NqzMQ2/RuipOzbme/bApGp9RjccV/6iPZ0kPJg== - dependencies: - "@aws-cdk/aws-autoscaling-common" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-elasticloadbalancing" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-autoscaling@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling/-/aws-autoscaling-1.102.0.tgz#9c4fa66e29588c9b8b58e2d492c58067e62528a0" + integrity sha512-SAze8N3uRMqU09edsZ47ClWsPosGqz66NMbvhoefURlQELD3nxhoD/hpZrHkZx25Agghg7xLjJywF62izDRnLQ== + dependencies: + "@aws-cdk/aws-autoscaling-common" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-elasticloadbalancing" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-batch@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-batch/-/aws-batch-1.99.0.tgz#f5e9bb04590f33f706501fdb88be538d20fd3992" - integrity sha512-gPWjwhQozufOFjBI+i05yR9vBYsnZX618MEaliMoEdaQ3f9zZ74QvLRSMZgz+saYJPcIQlXXu2TuiEXdS3iOnQ== - dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-ecs" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-secretsmanager" "1.99.0" - "@aws-cdk/aws-ssm" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-batch@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-batch/-/aws-batch-1.102.0.tgz#e7d17eaaaf4a55400b4e00ce55f3938c0fbda262" + integrity sha512-56458EXdCjvkwL2f2SDNqKeiYdZWF2nPomNaHFGAbMpqB5nWb3t8SKluuoGGiO8txCGg+QdwJhkcWmrTFEfmSw== + dependencies: + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-ecs" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-secretsmanager" "1.102.0" + "@aws-cdk/aws-ssm" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-certificatemanager@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.99.0.tgz#75331916313cc39de28d828091381623e039f024" - integrity sha512-XD5CkvMNnq2ihJxqNGQfr0DPiwjdXNfHLHQL14U6Cbps+D4j9wB5CsNNHdCoUKBM/u4X+nHOYpZMtDv8wDU7iA== +"@aws-cdk/aws-certificatemanager@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.102.0.tgz#44c29ee0e03ece423ae32a68b12ad70aa68c1930" + integrity sha512-eDom3dn+kXa8VQm/cdRfR/hEbgO3p5e0mwy/v5V4ytPVtjlMyulTq5Elg3rXqmjHLh2AsRsR8rbgwmlYIbKReg== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-route53" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-route53" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudformation@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.99.0.tgz#125565eaefd52bba96cda19c3e8990c21315354e" - integrity sha512-aFAtOeDk95dYLzMLYd6ZcAVJ92L30ow1pv4nkaDKeCOGP69sMP1ximlVLY+83/AchvD3cFtgBpIR1nx1vECKmQ== - dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-cloudformation@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.102.0.tgz#b878ef0e4ea3e484b205a1d828debf280d7fe5ce" + integrity sha512-7gM98SOquS31IBCuC8QZsr3vtCGcW/qZeMMzWQ73/zNaNtvha8dF/etQCsFINyJw7fQHpMbKyCB5TYoeHftW8Q== + dependencies: + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudfront@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.99.0.tgz#27a4845791e1c6b069b9696d6edda493544824d0" - integrity sha512-pi/O8zFprd/T2DKcv0bDRS7mTZBTtpN2N2kj9p3oQCf1ygM1b7oB0YXXNNx+q1f+XYW3YK6UXk20awc+KKSnqA== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-ssm" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-cloudfront@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.102.0.tgz#f18e9e473ec9b979d63d3f385631d4dc3caabc14" + integrity sha512-tUMdDseKX8WqYA5cu2gg7/7Ye4aZzMBLCv4gTQ4VukB7kCsQeaEyP3q8Ckaa389ogWwPk0OHqP8OVvgiQZ3VBQ== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-ssm" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudwatch-actions@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch-actions/-/aws-cloudwatch-actions-1.99.0.tgz#a010bb045a3baab3d100e2b50720c2d8ccbe7f38" - integrity sha512-Ovaz/sobFOb6bT0oUJ5E5fwvMOWpDISQDqDPczA539hsN/Iuze7N5bSFEh9SXf+2kINk2LtUA411V55Hu4JoSw== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.99.0" - "@aws-cdk/aws-autoscaling" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-cloudwatch-actions@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch-actions/-/aws-cloudwatch-actions-1.102.0.tgz#d7524fa0e7449db29cbc9887f39c01e2db96cb03" + integrity sha512-QAwaNPDOTz47BkFmudXzXuudm693N9Y0fvwjvTKd8iayEg+658S0hhST5mdAVW5KkOKR2aZc13i+a8QIchkkag== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.102.0" + "@aws-cdk/aws-autoscaling" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-cloudwatch@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.99.0.tgz#b7fc59623289ef7c056289d430f7a411b633d790" - integrity sha512-/rmeqT7WIDQk03KFuiuuBAPIv+doWgNQ8qdMs7wkaWZqDaXVZgV3yqDSHHsueGbQPGPSlSKhah4DntxlIdiXeg== +"@aws-cdk/aws-cloudwatch@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.102.0.tgz#548988c5088d1ab2e381623f6dc5cb39499b5d78" + integrity sha512-cwscvV1sgn+LhaGSz5vKXrivKBSY4EcQbUwWPUeuk/X0Wk3vkoLmgY0ma5hNgNuXJAoha6V/GzJgXdNKXLofdw== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-codebuild@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codebuild/-/aws-codebuild-1.99.0.tgz#dc6e2f84cce8b661ed35fb16b4de8d405497a216" - integrity sha512-apM3B2eFYyw9r1qjk1UrkGXoqX4KJaJbFv1tpnew2eYuNz1+upV+8/9WBV0LnnyoFXRTUOeDjF4jM0N/8KiqNw== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-codecommit" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-ecr-assets" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/aws-secretsmanager" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/region-info" "1.99.0" +"@aws-cdk/aws-codebuild@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codebuild/-/aws-codebuild-1.102.0.tgz#fc81ae69d52d5d21961e990df90f63b73615ee88" + integrity sha512-GeGGrzotSLkGEeXSP6OpiO1YvGT1AuQuek16TyMkS2XhglrxrCI0UsIe9UpAivZ9VMVdNFci5zWlCpGAEGM6NQ== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-codecommit" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-ecr-assets" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/aws-secretsmanager" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/region-info" "1.102.0" constructs "^3.3.69" yaml "1.10.2" -"@aws-cdk/aws-codecommit@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codecommit/-/aws-codecommit-1.99.0.tgz#7afa0fa4380d0e7113264aa9e17632591e33c678" - integrity sha512-OtZx2dM1CC3h5JyycN30vAv8bMHNewEQom4l9JKLqf6nOAlioG7S+pR5CfpzT4l6ObnBs1tcuRvO9m5ZkrWdZw== +"@aws-cdk/aws-codecommit@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codecommit/-/aws-codecommit-1.102.0.tgz#4f9bb0d492c8df8ac3035e16a4377adc01c14c34" + integrity sha512-a9+bDc4pUH06e+qwoxsmMfZSu6ToosHDuZSSAY9Im6kZ+kUYHlULkYVz7aWoaZIR/gFcF0d85nKSli2xkVCrsA== dependencies: - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-codeguruprofiler@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.99.0.tgz#631fd2b366e2969c8b8fc375b97fc6a823d7c1e8" - integrity sha512-Z6KVvhIawIw36kKaEB27u9QOO+cCbhA+EsBHVT2slFrMCxHw46iAzqP6vxiW39GBZbsas5ZpHczDDiNJEsFQBQ== +"@aws-cdk/aws-codeguruprofiler@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.102.0.tgz#7881c78896c8f4135832c421fda7dafcb39b6d1f" + integrity sha512-gfwz+IGbeWX0FTj5SgmwqWzb8+VckD6XAhpjBnPKXsjMU3OLST/L6/E/UIt+MHyCvGcmhjX4niSWF8viLxzCvg== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-codepipeline@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codepipeline/-/aws-codepipeline-1.99.0.tgz#3fc64eb273349cdcbed6fdf6dc8ba3bde9e353b0" - integrity sha512-6h/YYLri+q+wbS0dYjgYeUteMSlQPMYbDLfVwrFKdaO3whOY120u8mWgFggcF3xDmYlcdXp5bpz8N1sISREZpQ== +"@aws-cdk/aws-codepipeline@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codepipeline/-/aws-codepipeline-1.102.0.tgz#deab82d60fae705ca7f65467f7ac0f09f2a3d1e0" + integrity sha512-RZSyG4pwwIT0qtwN1WBRiQu6ZIE4fzADucK+X5SC208FMzYP1Nm05nkfYCklG4OAmffpBfIC9nRkao/LntNYdQ== dependencies: - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-cognito@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cognito/-/aws-cognito-1.99.0.tgz#6abe9b8788b8b515854d73e570486d9b4648d6aa" - integrity sha512-uHZ8HCaGh+gOpSKludz7bFCHxzGaS1nmt1Yy5VqGYWUEu7z7EfTybw3zAi4w0Is+pgdesdKsl2LU8Q5wzqREcw== +"@aws-cdk/aws-cognito@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cognito/-/aws-cognito-1.102.0.tgz#7ac492fa5316d6988dbc02efcaee60751e471a89" + integrity sha512-seV4WssRt48yFsqFSsAPPWI0tw6FflEWso2pQb4auKG91GHO61kZjzRz6czY6x+oS8qoxTjviBcfO3En+/AIEQ== dependencies: - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" constructs "^3.3.69" punycode "^2.1.1" -"@aws-cdk/aws-databrew@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-databrew/-/aws-databrew-1.99.0.tgz#17285131856a504dd75a8a630deab38a42ddcd41" - integrity sha512-qVUGisTfCWOgfNauQJQQ1zFJ3HZ5s5NpP1SZmqBI77EQY0bU3l+9FOxnXPVJaFyVwmfEVILmgmCuzffS8NrYhw== +"@aws-cdk/aws-databrew@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-databrew/-/aws-databrew-1.102.0.tgz#e3994626ef2aeb586b35b4392ad428d82ac8f159" + integrity sha512-Hd/6r6iItHjMhH1QzQC8jl/V6m1gYvrAuHkYA8HWAl69zi7jPYHU67OYAQt1M9JCzPBcCMujGYtu5pOTzMwU7A== dependencies: - "@aws-cdk/core" "1.99.0" + "@aws-cdk/core" "1.102.0" -"@aws-cdk/aws-docdb@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-docdb/-/aws-docdb-1.99.0.tgz#028fbf6be24a4910901dfe7c24a343b937e3fee9" - integrity sha512-qCel6xwgNrO+yYnj+WwtyrpTufQ3uWePNxfNJVkKQL+TTWf0bIuA0/aBjJi+N05KmlvnKgxwLGouaTOJZYdq8A== +"@aws-cdk/aws-docdb@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-docdb/-/aws-docdb-1.102.0.tgz#5692886c6da82c900ac913f7bf4d1f803aa1686c" + integrity sha512-xCKNTQaMMchR1HdnGXozG2EiKuLYGGk3XNJmisSvieF7FdA/dQcndAt2juqcmT6AveiCn8Zdkdes/r6fHiDT4w== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-efs" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-secretsmanager" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-efs" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-secretsmanager" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-dynamodb@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.99.0.tgz#42b86a6b05f947298592039e4ebae4a18eaf7037" - integrity sha512-fH8iS6HoFxp7NhamY3A5f8C9NlBYQFNCEI5Jk6BCMqbg/v20m2JZMpXai0txdzV82ipjQb1grQ/0XXjMadWl1w== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" +"@aws-cdk/aws-dynamodb@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.102.0.tgz#0b8f4e703ef70c67e21ddc8ce423484d97bd11bd" + integrity sha512-2D3wrd37fRYv4ZSofF3TUWsxHpuIETGKiZeDHXqh0XRPPRHhs3CQ9wonyrvo7vw36SyZnCUavxQ2XNAkGhuPPw== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-ec2@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ec2/-/aws-ec2-1.99.0.tgz#8589c3ea8769d9e41ed99bcf6b820f12500e07f3" - integrity sha512-8hbr+kq1rTGsscTmcQ4DRLmn2pWuKiw4Of0YKGi888+TCohZ4+0LxEQOhb4zWNWwAI+wb60btnylO5S76DpnBA== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/aws-ssm" "1.99.0" - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" - "@aws-cdk/region-info" "1.99.0" +"@aws-cdk/aws-ec2@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ec2/-/aws-ec2-1.102.0.tgz#5d8c0cc10fc3f9f8df5b8cd1b2c9f5cf09bcfd8c" + integrity sha512-2tS3uXOVohHaDXBl/hvzl6n3iPoB3//hJhCW+BV9x6GOPHHyHT4otGi8l9JrgNwQ/w0QyZ3TbNwbqCvuK2KFmA== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/aws-ssm" "1.102.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" + "@aws-cdk/region-info" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-ecr-assets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.99.0.tgz#bd242783e945002026f9c627d9bb2e63cb6796bc" - integrity sha512-gteMIaQZtXKJssTT3PFD4TOiP5nZXPIEXt2TXfakafNu9kkOhM/XLTbjJgs9mhbJDoqiVrjttLCjtpZ8uYDgaw== - dependencies: - "@aws-cdk/assets" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-ecr-assets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.102.0.tgz#939dc5fdb3e7be9582e6ec8a446f50c02f822751" + integrity sha512-EPzODg22gZzD3KV4ejUlwBKBuzBTMrzvp/dbtxcPgV3Q6hr2fpgpIdKuwDbGoOzlbBxtSEN0U/Ll7k8md7Fl/w== + dependencies: + "@aws-cdk/assets" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" minimatch "^3.0.4" -"@aws-cdk/aws-ecr@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr/-/aws-ecr-1.99.0.tgz#0d09f8e59e9bbb49ad9ad1edc973576fdd4e045f" - integrity sha512-lCj2p1cLzkBohLUJHrN1B3T21LD1druyMQFL961tl81ssYUaIDALvHjjPVfCbX9cmHgBgnrxk9HT8UI+u7+51A== +"@aws-cdk/aws-ecr@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr/-/aws-ecr-1.102.0.tgz#d85236c02a8bf141477352b1ab66cf41ea3dbd49" + integrity sha512-BCIkcoYT+4wm5rP+6Y/Kz5/8vu6qC+JM8JM9ei0alc68cima0SrLBGzo6LpxgT0yhloKsG5t6RAq+qwiO/wydQ== dependencies: - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-ecs-patterns@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecs-patterns/-/aws-ecs-patterns-1.99.0.tgz#74c6a518f3197b39d9366073f263c429339040a7" - integrity sha512-j7MQst1Eoif40RlYoxA/TNBC1oHaqtbfg/UP9R+Zacyb/zg5oHLFV3GY3oZ9/aTRaESI7W1vWvXX0JFfv4FKfQ== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.99.0" - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecs" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-events-targets" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-route53" "1.99.0" - "@aws-cdk/aws-route53-targets" "1.99.0" - "@aws-cdk/aws-servicediscovery" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-ecs-patterns@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecs-patterns/-/aws-ecs-patterns-1.102.0.tgz#e78f7be691fd5d134165823d9b3d2eb2abc0a5ff" + integrity sha512-j+hTBactUXb9UX6ML1TYWoKCxpF/uJfBx1EXv6M4tUcAJGM6NC6yjGVj7n23MW4wGZ4lSpJPuAiJsfZD4Yg2Rw== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.102.0" + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecs" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-events-targets" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-route53" "1.102.0" + "@aws-cdk/aws-route53-targets" "1.102.0" + "@aws-cdk/aws-servicediscovery" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-ecs@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecs/-/aws-ecs-1.99.0.tgz#fd0c49db10f2c43bc1e0be579c5efefc7fed9c60" - integrity sha512-fLlme51YA2dFKRKRPPoxer4n81e9PEGJ1US7/z0NyBaB1EAmcEbV8tjl81EkeJH8gVetmlnL1kF8TzjTnLAHlw== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.99.0" - "@aws-cdk/aws-autoscaling" "1.99.0" - "@aws-cdk/aws-autoscaling-hooktargets" "1.99.0" - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-ecr-assets" "1.99.0" - "@aws-cdk/aws-elasticloadbalancing" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-route53" "1.99.0" - "@aws-cdk/aws-route53-targets" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/aws-secretsmanager" "1.99.0" - "@aws-cdk/aws-servicediscovery" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/aws-ssm" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-ecs@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecs/-/aws-ecs-1.102.0.tgz#c31831e1beec45070afa03b2dd84d9d153c18c87" + integrity sha512-45RzRyGj1w2PuhIA9qIJLQ6FhAMSYS+AouZDZbK14JJx7TaDlqRIXheRpoblYbKiGk58v0+O2CihOVjecvuFmg== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.102.0" + "@aws-cdk/aws-autoscaling" "1.102.0" + "@aws-cdk/aws-autoscaling-hooktargets" "1.102.0" + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-ecr-assets" "1.102.0" + "@aws-cdk/aws-elasticloadbalancing" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-route53" "1.102.0" + "@aws-cdk/aws-route53-targets" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/aws-secretsmanager" "1.102.0" + "@aws-cdk/aws-servicediscovery" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/aws-ssm" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-efs@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-efs/-/aws-efs-1.99.0.tgz#edf8a4190eca9b427af96fe2caa0098562c2b0d1" - integrity sha512-b8h991ATOTjiB3oLGHdgsNMwR/dfHehNlL/98K4lA+bXjU3fhMGR1Llgg2jgxXa0VuXhf6tK2f+8oXIByU1VRQ== +"@aws-cdk/aws-efs@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-efs/-/aws-efs-1.102.0.tgz#fa0a45d64d26dd5e4ec562375c5ea7e8225ccb1e" + integrity sha512-Pc1YPECzOXqweAcg0B9AcyLBg5SKVlmvL97XpVgKj69DbqDsGo3vVzcklDEjpBIdFjXpzDZopPG56artiu+ykw== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-eks@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-eks/-/aws-eks-1.99.0.tgz#3faeebf2a10b0fccee2b4bddd4493401d63ad87c" - integrity sha512-KjNX1jqCX4axqFz95t0BVOOpGgRxrNEfU+VtpCLBVQxKzOqHS+hRaMdY6ZeaKmFy+mq0AgF1GrdN6kWPJFunuw== - dependencies: - "@aws-cdk/aws-autoscaling" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-ssm" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" - "@aws-cdk/lambda-layer-awscli" "1.99.0" - "@aws-cdk/lambda-layer-kubectl" "1.99.0" +"@aws-cdk/aws-eks@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-eks/-/aws-eks-1.102.0.tgz#99fed19844f4eba379e9fe68eabcf9c4d225f084" + integrity sha512-YxaaO2weRLs5IClg7svdrOkZLBoeG8/eh+jkVrurVTnC6A11KeFJoPaZlo1BSj8jfArDP6or30fJKDTJVqFwYg== + dependencies: + "@aws-cdk/aws-autoscaling" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-ssm" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" + "@aws-cdk/lambda-layer-awscli" "1.102.0" + "@aws-cdk/lambda-layer-kubectl" "1.102.0" constructs "^3.3.69" yaml "1.10.2" -"@aws-cdk/aws-elasticloadbalancing@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.99.0.tgz#59e097c1f1b88453f51c2108cc18906e9ec8e035" - integrity sha512-835AvgbybQQQCXugH3Tx4MCIrFsIDFqWxwP/XCZv9I+LDqyDqu7KaXOvSFUtSwDmVa2TEBx1EInkK0SEzxVsNg== +"@aws-cdk/aws-elasticloadbalancing@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.102.0.tgz#aad8afc947422388a020b7471ca8479082f29a1c" + integrity sha512-w6ZroNY08MZ1M5KQNgrIV6ryZeziO3Igvp2SIXssCf6HdLVzp8BhgX5ZJYzuKtTcfv0R/LoeZLVSvOoCDDKgpA== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-elasticloadbalancingv2@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.99.0.tgz#a61ecb4a8c22e9f6a504eb505fd2abfbce10c43d" - integrity sha512-LrsCZJHq8YmAJLi6sFXsjgWqE9e+alJb43vW3XmbcErlmZCCsru76d3YHPhllE4P6E5J1geU6rZwlCbQZy7apw== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" - "@aws-cdk/region-info" "1.99.0" +"@aws-cdk/aws-elasticloadbalancingv2@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.102.0.tgz#db242783f41758c1e422e7fa98dc6122bce96488" + integrity sha512-+jxHic7Hm4N52TtwxNJCMJY+EtwBya4z1ZTz0Ur6DT6Bl45wLx06P8je5hmTgvufOvt8W4rpv0u3TtwQBUWFfA== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" + "@aws-cdk/region-info" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-events-targets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events-targets/-/aws-events-targets-1.99.0.tgz#a6cedcc146d05457fdde6f5c91c21914ef03b7e1" - integrity sha512-px0swfxUcz5KqIjV9baiy9heUvq7f392Ge0iUtwGlBRn3twVX86Lsw/RMwAjacT4tRiMKeO8VgAa3DMgv3AaJA== - dependencies: - "@aws-cdk/aws-batch" "1.99.0" - "@aws-cdk/aws-codebuild" "1.99.0" - "@aws-cdk/aws-codepipeline" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecs" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kinesis" "1.99.0" - "@aws-cdk/aws-kinesisfirehose" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/aws-sns-subscriptions" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/aws-stepfunctions" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" +"@aws-cdk/aws-events-targets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events-targets/-/aws-events-targets-1.102.0.tgz#185a7f601243d01b65b9770ecae431bb54984dcc" + integrity sha512-c/HLK9RO46OgNet1l38ALjoNRkESdVy6xHrmwigshBOvAAxKQSLVf3fZfmaQxI2WE9ZQKSY9+PDCc0fdr81I1g== + dependencies: + "@aws-cdk/aws-apigateway" "1.102.0" + "@aws-cdk/aws-batch" "1.102.0" + "@aws-cdk/aws-codebuild" "1.102.0" + "@aws-cdk/aws-codepipeline" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecs" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kinesis" "1.102.0" + "@aws-cdk/aws-kinesisfirehose" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/aws-sns-subscriptions" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/aws-stepfunctions" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-events@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events/-/aws-events-1.99.0.tgz#f4a041b16893b1a19b935f58a68e7afd741bd01c" - integrity sha512-TzGfdgRNYMVtep74GJgzraLDyhAcj/y8O34svusKJCIrIIqMMbFt4f0hUHZf+2Xe+oLw1qnjBlsQlnBaLohusw== +"@aws-cdk/aws-events@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events/-/aws-events-1.102.0.tgz#3127fd5adc18a35770f0218ff7a747b8ea001fcc" + integrity sha512-d5LyvkEABbNb7eYN1CycItMAR/4xBZFiX3OPKCE+gUMPGxQkIxvWgtyQMF5/i0ODvABdKaRuF7DN2a7MP3tLoA== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-globalaccelerator@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-globalaccelerator/-/aws-globalaccelerator-1.99.0.tgz#ceefa5f34c23116378601ef1addb8e4324850811" - integrity sha512-8en+Q0W6HXyKEoHjIV5YoCrV4OIBsC1LlvOHE2y0w4E2yjvXRzfTGMiEm6rdkha+DZU47ptYlRTs4bemY0AJhQ== +"@aws-cdk/aws-globalaccelerator@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-globalaccelerator/-/aws-globalaccelerator-1.102.0.tgz#36b48324838fa4e4e1ca488ae70113efb3ee3a88" + integrity sha512-59rktAhKsFJzqMVj93sIXcHfOiBiJFAZZD5XjP2rgiNlXfg62VT9Vq31gc+ZWQ/06SNyjxUMywfRCguwlED6KQ== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-glue@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-glue/-/aws-glue-1.99.0.tgz#615c0ee5105e75f66734114bffc4839485067764" - integrity sha512-GaRMzjEdFFS+3G2Lb5oB46aPzObK5fFkq1pmUjkKV82l0Oj7AXv9ZjPQvDg5baae8G/YOw41p/LCQCIzJzVMnw== +"@aws-cdk/aws-glue@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-glue/-/aws-glue-1.102.0.tgz#85ae6aaa473e95fc21938d7e39a85616dcef76e2" + integrity sha512-Qg313AEqpG5N4788sUMv309aYS/1aFeEGj54KziZQ1tzklLMKrdSYSInKmyPKwZGKdAgzPByhuU61aUqzwu+rw== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-iam@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-iam/-/aws-iam-1.99.0.tgz#06ff60e44f2a46cb3458abb041c4b37efb2de5a1" - integrity sha512-h3r8Af1dq/TU+MvVC1AAA+RM7qcvkzRBaWRPbOdmlpVfPMxX+QTcoJTCL284EJpcM7P8KbgYKSOBn/8IuuVs5Q== +"@aws-cdk/aws-iam@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-iam/-/aws-iam-1.102.0.tgz#560ad32bc16115db3cfedd95574eebe9711937f2" + integrity sha512-rA+WtNT5g9ad3RZop9H4+bXd8U6LW9vP0P/Ko/zTQKPTRKv0Xm1kKyQtlRaKpj5rRxj4CgwAl7Dhr2ezWLEK6Q== dependencies: - "@aws-cdk/core" "1.99.0" - "@aws-cdk/region-info" "1.99.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/region-info" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-imagebuilder@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-imagebuilder/-/aws-imagebuilder-1.99.0.tgz#d0fa0dd2ca5b4df547cea9910e914640733b81d8" - integrity sha512-oAcUz5C/4ujM6FX7bPWyLT9EmOFpNkUQ/SRVoAS2V3F+lvM/CnxMkLe/zqklzjOEIWFTQERa4VwVXcqpZ5otBg== +"@aws-cdk/aws-imagebuilder@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-imagebuilder/-/aws-imagebuilder-1.102.0.tgz#148aeaaa56f8e2b6df2dded3c784170a1d92e2a0" + integrity sha512-4jpzhroeywd63Mt8BEjvONToWg3t4ZWk0PKKPpANKdnaPRtlOAbzeJzAimOLA7wkLnv8N+rUtCZwh+oC/GruVQ== dependencies: - "@aws-cdk/core" "1.99.0" + "@aws-cdk/core" "1.102.0" -"@aws-cdk/aws-kinesis@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kinesis/-/aws-kinesis-1.99.0.tgz#13e7a285ac79c83d9c2fdc0e1c9a5916e381b5a9" - integrity sha512-jywheqiYHS/ZAzb3ahxByQadbM+X6Lbw++gOXqIAfVbgiLl3nI0FXh4xstYrdNXkDE4g40N7ei/SkbG4JgWflA== +"@aws-cdk/aws-kinesis@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kinesis/-/aws-kinesis-1.102.0.tgz#2b2fde0bc16354a89a1c3056559e45d0fd270793" + integrity sha512-mFFTQN7bLhZ8Wu8F5YZAFFMMHCktiQf7JqAxiWsCoc+WSQZJ00ImjrxUmppuRyIiyC00g+A7bvuqulGp5LwtVw== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-kinesisfirehose@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kinesisfirehose/-/aws-kinesisfirehose-1.99.0.tgz#6fea533522b9237c7a059673b7799a1c8b91474d" - integrity sha512-VBYobA8Ijd+B0reTUZX8tSs6NC3HowL3MnjtU5KXrJN8ypyAIP9njIZrcrYYfaHUrVQVQnBLSPaWCzKWMy5DdA== +"@aws-cdk/aws-kinesisfirehose@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kinesisfirehose/-/aws-kinesisfirehose-1.102.0.tgz#74a13d0ec8602d8c12e4cf03d9a7c6a60934ff56" + integrity sha512-nrVKgjAAkKbl91bH9e28V9oYpO8Yb5jhF7eB9ABURH5DTzzkKocKRROsMI/2zYyeugXXKL7GBpyoqGigumwQfA== dependencies: - "@aws-cdk/core" "1.99.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-kms@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kms/-/aws-kms-1.99.0.tgz#47aa9c45a606da8db8e40e27ea2fed7906c32e94" - integrity sha512-MyENmdg7KW3tjZeGu8vpUzkILlbY1MLzl+25q4J0DMkujy1CkSGFZUg/Uzjg71uV5BWrHxnkKxuCrOPzfM1EqA== +"@aws-cdk/aws-kms@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kms/-/aws-kms-1.102.0.tgz#2f7d56cbe7e826b8baa45f64a0be613f3cbd38b1" + integrity sha512-cTZKN9Uv5bXp7xYmxQveGT/q6ScgWym0J/L6om+GRXHUIM/VWkvBKeiPMLBrLRKS87mH3r+TI3cukhSrTNeRMg== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-lambda@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda/-/aws-lambda-1.99.0.tgz#1ddcc60244020b4a3406fdffafeef4a7debac5e6" - integrity sha512-FKUtWx6nlkhWRDnq23elGNIvMphY+m7PPJgPn950x4mLGfl5n86F/5xHgqR+7Bt2tDzvoA5bUnOn+IDyt3ULTg== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-codeguruprofiler" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-ecr-assets" "1.99.0" - "@aws-cdk/aws-efs" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/aws-signer" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-lambda@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda/-/aws-lambda-1.102.0.tgz#07e37ecafaedd02db4f0162948458669b55333c0" + integrity sha512-vDhWuffTX9EFg6gjan14aEl13GuUT8UxxA4tz+tmnRyegow1juiEq+A5tfU7amz9JgXFqQgWOdS+LwWfWq91Hg== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-codeguruprofiler" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-ecr-assets" "1.102.0" + "@aws-cdk/aws-efs" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/aws-signer" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-logs@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-logs/-/aws-logs-1.99.0.tgz#ccfc70bba65b294a4844bbeffb8b7333ef04416d" - integrity sha512-Cm1fio4le4kALF8zxs/98Bteqf/WAMIxTjydRb3wC9471lQXpSYpPehSNdm8Xj1hYnQ1rk8ZmLXeXRo1GWrwqw== +"@aws-cdk/aws-logs@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-logs/-/aws-logs-1.102.0.tgz#0801e5e2655c5a3746f0b11e2f9c9d7035452168" + integrity sha512-QCB3R1EIcfrpktzQczoGGBQxfscvhFi72+7lto+Tq7+Vv7MlUGJADAyYOgr/fZNDoFNulfDCL+LOMTWVnvUwQg== dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-s3-assets" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-s3-assets" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-route53-targets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.99.0.tgz#914b41f2140195ba01e3241357c9f7bc847b991d" - integrity sha512-vH9r8GAPcrWBwgJv8YA0jRNhpTUrhwEPDd0TJFL1WY2Tr1FxvKQ5iHA8JLCIJu7IJeTPUpSVtpF7nNEIsCnFPQ== - dependencies: - "@aws-cdk/aws-apigateway" "1.99.0" - "@aws-cdk/aws-apigatewayv2" "1.99.0" - "@aws-cdk/aws-cloudfront" "1.99.0" - "@aws-cdk/aws-cognito" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-elasticloadbalancing" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-globalaccelerator" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-route53" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/region-info" "1.99.0" +"@aws-cdk/aws-route53-targets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.102.0.tgz#741c29b738acc1cdc7436efb864170d47f56f8ac" + integrity sha512-LHFMfDD0xgJHpB6tWvlPK5KA7NDXsrSKQHMnHa3kxq3tJMSFWEP/oXN7ZkhdtNm5NH46svlbC/8UcGYL0Xb7nA== + dependencies: + "@aws-cdk/aws-apigateway" "1.102.0" + "@aws-cdk/aws-cloudfront" "1.102.0" + "@aws-cdk/aws-cognito" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-elasticloadbalancing" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-globalaccelerator" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-route53" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/region-info" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-route53@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53/-/aws-route53-1.99.0.tgz#80e9cdb4f8cc318cd75a4abfebb687847bae2129" - integrity sha512-W7V9QM7DRwqFlI3A5BSNHmQ3ztZrADGYdmg6nfCT0AuN5l20YKFYacwPt2DmKvNd2FHW3AnchkaxD00RjrY6fQ== - dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/custom-resources" "1.99.0" +"@aws-cdk/aws-route53@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53/-/aws-route53-1.102.0.tgz#61c627fe96dec6b72fcf8708da062f52ab3cb491" + integrity sha512-IVDH8SEN5togYoAKp17PggZcmiZkBn0b6ynoxYVDYighudKR5OMz5NiBfBe5pcbnwYEBDRtr/L//N3qL+zGb2w== + dependencies: + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/custom-resources" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-s3-assets@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.99.0.tgz#9456b27cddf271ea4a1ff1190fcb44c7413289d4" - integrity sha512-WKkzeCOie1IzEzfYZVeKtHNzTy9j0GUEdKXHooEyrAlvGVMLqHS1eVi3ysKlhxCugcVUDTVNJTwOJT/G3Mxw/A== - dependencies: - "@aws-cdk/assets" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-s3-assets@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.102.0.tgz#80a6872d016a41d22628984fa2ce0c23a50059fb" + integrity sha512-3RW03TqOKIzz6vZ2HgsX7Yo52SWtgZ+OsffXXK99ywM8hBZoDjg3kXtr3xBIWX91HC5tiMAKrkUsh8JoDiSu5g== + dependencies: + "@aws-cdk/assets" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-s3@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3/-/aws-s3-1.99.0.tgz#29f2ac811d5c681a13a21ec256583feb0a294534" - integrity sha512-pL/dYf5MBE390u6LszKv/dP7axpmahSMYJ/U+s45ZEp7gISFFAClpFNdYVj2IZX7i6DzoE5PTDPhPN6vloRuuQ== +"@aws-cdk/aws-s3@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3/-/aws-s3-1.102.0.tgz#5454e1e55f4b260209b62705f9bde21e33d65ac3" + integrity sha512-X5ziLXUl3i9GCLItk77E2j7UXnC08j125FiWwJksmb8cnKUolBzpfV91jTGhenwoho51KAhFgpKsb11fuvBylA== dependencies: - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-sam@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sam/-/aws-sam-1.99.0.tgz#f804eff7393e7f77c1b297101b0642979a885570" - integrity sha512-ofZ8/ucpj86uxG5gde9Np61hgYV4hO+fc8ndu6mBXJTpygFdQ3PpysqZ3eLvJTc9BS52dQylDmzWkYiMffeXHw== +"@aws-cdk/aws-sam@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sam/-/aws-sam-1.102.0.tgz#9a1dd3a15145650a2c8c6c896134150af28df981" + integrity sha512-B5FPJCPvwGsB/0F+Iqdl5aZEmaGjN/KWrfCjOyNVG9BxQRYuC2i9jMbFsC6Fqco9Wk2D3dmgGW/AdRDtpZt5fQ== dependencies: - "@aws-cdk/core" "1.99.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-secretsmanager@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.99.0.tgz#54dbf5d077262a8a9096646d8894d6bf3bc23a72" - integrity sha512-mm+FnEzvRKETXiZ7ZyPTSfjpKg730LdECKUHwO10Y5acSsWFn3ioc8XLozv2LmQf4hoPJiogdNYCsWU2rohpzA== - dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-sam" "1.99.0" - "@aws-cdk/core" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" +"@aws-cdk/aws-secretsmanager@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.102.0.tgz#9662f9671d911a784f2ec7fc666a869211ea7a91" + integrity sha512-m52PWhPUNCen/4F6UH9Q1F1wyDCkSXeFyfJsveTmJ4UFX95PW5ERfQazLH7N29nzSQzFSMouHL1CpfdutwtK7Q== + dependencies: + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-sam" "1.102.0" + "@aws-cdk/core" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-servicediscovery@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-servicediscovery/-/aws-servicediscovery-1.99.0.tgz#09b5e1bec1ec769f7a373a156277e6c9f1f589f8" - integrity sha512-GVUerZU3cU3U9MaegkBf7vPzA8rEHnueH/EYbDjtZD/ARk31cV7lysiuhGxUJ2IZI6W0/LKK393saSFgGyDIWw== +"@aws-cdk/aws-servicediscovery@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-servicediscovery/-/aws-servicediscovery-1.102.0.tgz#5d46b616732a19d7d7ed73ee8c53478da8149e0d" + integrity sha512-lhW7I2tn5wuNBbHYEUnSJDeNxhA3z6CgHVy06m36kTLXCrFVrekYaKavKtZJdVeFrNoywKg7b7yN8J3kPfOyDQ== dependencies: - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-elasticloadbalancingv2" "1.99.0" - "@aws-cdk/aws-route53" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.102.0" + "@aws-cdk/aws-route53" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-signer@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-signer/-/aws-signer-1.99.0.tgz#d0e70c38dd6f8dcb7322da76183b12c08eea268a" - integrity sha512-x20Hj6k2ajVgvYDbI/wbp8AB6jz1JJOUS6sNyVpJLgiwW8A0DDOj3o0el2bihmpSRXSSwWu1O/4EWxYO9aqHfA== +"@aws-cdk/aws-signer@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-signer/-/aws-signer-1.102.0.tgz#c72d9c71b6f6bc60e44f81710216a12b1257730b" + integrity sha512-gTL8a2Y9pc5Ley8DQaOrMLn9wx1k8TO0oeNPo85xXZpUXsAoR6uah45il0qQZ1kKG2tyWUAizYENrDMY+eu+KQ== dependencies: - "@aws-cdk/core" "1.99.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-sns-subscriptions@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.99.0.tgz#59e39aac976cf6b2843b23946865733bc60ad73c" - integrity sha512-+kPLL332Bqhvru+yuzH6gN7uXOQ72L/cXKW8c/2tnVrWYvwDolbIJWWDDbe+hKE+YO0CUkvJDLbM5AXTuYwO5g== +"@aws-cdk/aws-sns-subscriptions@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.102.0.tgz#af96aeb2fc0eed3a6ebb55144c52fd08e8f7f59f" + integrity sha512-5wzZwH3huonLMV/LnsMdzOHRlvjf7EnZWuuWFZ3cMgXKtTaxmZBrYiULOni6u/7xvUIM31dh/DW+GqZX8u/4uQ== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-sns@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns/-/aws-sns-1.99.0.tgz#7ae2d2eaec915c9da91ac8790c6a330cb33d9bf8" - integrity sha512-hdO5VYKlibgowfIU41miDqLdLhNPSl+dJLS/wdClyCqP+6kqEhMZBURlMkz689t4Wv39pCAM3/utcZeGR9JBVw== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-sns@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns/-/aws-sns-1.102.0.tgz#50c81df20f1f558a3eab1643c2fe142e2364a3d6" + integrity sha512-Hk9QfOBWqE8Pzn4+nr/ZsTR46Z0UF99pg7Vg9oA0a0odWhyXa6sm6uikJgDoAYOScA8HUYubnBufCcRzFhvjjQ== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-sqs@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sqs/-/aws-sqs-1.99.0.tgz#10e84af998ee94ec232bc21bdf74a6eec644dfbe" - integrity sha512-LOxPTTbuL6LrVFmKpj/kifOy9QHiMsw5jZQLvDNJRS1tLh55jpwEAG2IH3dCLF4PGdmrDFNIe9JZuWyL8QlITw== +"@aws-cdk/aws-sqs@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sqs/-/aws-sqs-1.102.0.tgz#65c0694f0ad7c13ae7e60b976c3d7a81c935af44" + integrity sha512-1S2uBoJyO5KyuDMq3BNtAcl5GHwKatpDVBcXKmkDU9+RvU+trLfX8SWzLZVbocg3xTE5zQkagykCrMnwZy2VpA== dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-ssm@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ssm/-/aws-ssm-1.99.0.tgz#5f339bdbe53d52a7ee347d2d918d5869a034c180" - integrity sha512-6gP7MeLJwUzzW4WBHf9J4bNQsp4/7VHHNi2EETLhe7mCTKZwZpSD6gdXLKafmpzrGTSkrWl2xhU43/eZyK1GBQ== +"@aws-cdk/aws-ssm@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ssm/-/aws-ssm-1.102.0.tgz#e83c6b3929cb963a8a47eb6e313937ff5c07a62a" + integrity sha512-tgYYYMrk6oCditiCHvB401jv6508mv/zhZDNAHh3VfE+/FpbgdtJhiLpPu6+jitRSWMeg5ZPfUCSyaiojVvX+Q== dependencies: - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-stepfunctions-tasks@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-stepfunctions-tasks/-/aws-stepfunctions-tasks-1.99.0.tgz#fca1e74a92e7d31ae2313531fe8151141458d907" - integrity sha512-50wErn5fuPzUlMR7ca5jxxAbEvM54vJ9nIsPV/j1UTxJl650KLiHthLc3IlkkFXoAP2dBm4HGWDXT+llBASQdQ== - dependencies: - "@aws-cdk/aws-apigateway" "1.99.0" - "@aws-cdk/aws-apigatewayv2" "1.99.0" - "@aws-cdk/aws-apigatewayv2-integrations" "1.99.0" - "@aws-cdk/aws-batch" "1.99.0" - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-codebuild" "1.99.0" - "@aws-cdk/aws-databrew" "1.99.0" - "@aws-cdk/aws-dynamodb" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-ecr" "1.99.0" - "@aws-cdk/aws-ecr-assets" "1.99.0" - "@aws-cdk/aws-ecs" "1.99.0" - "@aws-cdk/aws-eks" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-kms" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/aws-sqs" "1.99.0" - "@aws-cdk/aws-stepfunctions" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-stepfunctions-tasks@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-stepfunctions-tasks/-/aws-stepfunctions-tasks-1.102.0.tgz#3084fd208b81b57d0dddca6bad3a6854f24db14d" + integrity sha512-0a+iztl69X9ad34Ztd/m6Gp2O4Xvt7d23j7KR+8aJM63FmxAdlwnBMoic8fDSzEW2qye2tpSpYfFzqqqqqmcUw== + dependencies: + "@aws-cdk/aws-apigateway" "1.102.0" + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-codebuild" "1.102.0" + "@aws-cdk/aws-dynamodb" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-ecr" "1.102.0" + "@aws-cdk/aws-ecr-assets" "1.102.0" + "@aws-cdk/aws-ecs" "1.102.0" + "@aws-cdk/aws-eks" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-kms" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/aws-sqs" "1.102.0" + "@aws-cdk/aws-stepfunctions" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/aws-stepfunctions@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-stepfunctions/-/aws-stepfunctions-1.99.0.tgz#5f97ca2a9aa3a2c705883fafca82f6ff12b29936" - integrity sha512-RcXZnxSevSU/vm+QSanpR8rRoTU+49VHPFfLbBj0gzmUJBHBuWOudgyUHvgm6blm4CALL6Pig0h9ivM06J79Wg== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.99.0" - "@aws-cdk/aws-events" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-s3" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/aws-stepfunctions@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-stepfunctions/-/aws-stepfunctions-1.102.0.tgz#bbb64184a3a412d8b40b5d8679f444a0fe5cfe57" + integrity sha512-WenV37MAr2/4W2sGBrhKeIySAuJDe5E27f0SsI+bL5/VgZQWqItsxkMmR19hy+Ft637A3ATfzuIHIL9yaG9+7w== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.102.0" + "@aws-cdk/aws-events" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-s3" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/cfnspec@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cfnspec/-/cfnspec-1.99.0.tgz#779ba5efe52e4c19490491b95962044a609170ea" - integrity sha512-DH9kTOZ5rjKvZ7HUjFT2yLXF2kHxgaCwnnXjCOYxp+xND6zZq/S7Gby05tmcP67Q3ryMTNFRmaXFmIgXkmKBqQ== +"@aws-cdk/cfnspec@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cfnspec/-/cfnspec-1.102.0.tgz#91dff33e72e2f95b2b2a710c43cb4272d6203d56" + integrity sha512-ANISPQax3v00vzApzc5PRsTJJPlajPU7h5yXclxu8WN8/wgSiJYbZOPhhsumAROM10Ck8oDTc6SOd+8EXpfhtQ== dependencies: md5 "^2.3.0" -"@aws-cdk/cloud-assembly-schema@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.99.0.tgz#87a6864cd6d3cd103b6d1560e60b9ba6d72e0434" - integrity sha512-4wfPYbeI22TBYMIHHeBwn93fnK2RZi0IFoxD50vDXycOgvc4OqPu+jFoXntJXz0dgaZqvzQAEGQAj8kRC3rLOg== +"@aws-cdk/cloud-assembly-schema@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.102.0.tgz#90201afa60f27e0b3a2bd270f9133a08b2317ec2" + integrity sha512-fOHjBc5/vp+rEPEXAZXuexU6emMan30dPWfecTLPE4pXa1bEWgiV9FtPCFAlRfNPXyWr4pBoD97Dy7daK1KC+w== dependencies: jsonschema "^1.4.0" semver "^7.3.5" -"@aws-cdk/cloudformation-diff@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.99.0.tgz#3ef1728ef1d5dd1cb9aefdd2635e0864262a010b" - integrity sha512-PxgrDYIwGa6487Fdd2s+szmOuxDKWdC8/GSUGvwtaQ506vVL9ZXh+Vu2Cvgq1o3RrmUmYLzwLRO/P4WL0UbC3Q== +"@aws-cdk/cloudformation-diff@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.102.0.tgz#28e8a1942992a5c1607f7c7d2cc1b63a2988875e" + integrity sha512-bdvlN+FFYHinZ6BJfOsNWmoHkdduEZQkw4cD76cCUNGULxJOKIjEdlghNoNtoeUKSZMgW7eenfgHImA1YHJrrQ== dependencies: - "@aws-cdk/cfnspec" "1.99.0" + "@aws-cdk/cfnspec" "1.102.0" colors "^1.4.0" diff "^5.0.0" fast-deep-equal "^3.1.3" string-width "^4.2.2" - table "^6.0.9" + table "^6.3.0" -"@aws-cdk/core@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/core/-/core-1.99.0.tgz#330f6dab0c33975be21fe7d62065d754002f1e57" - integrity sha512-ePmP44wSpvDywp4joVkxa1UdO/VHo3XqFtP2Mq9W1u8rm1MfDnNAhE9FXRpYdmb5DkQ8dg0D6eeleiBADBnYsg== +"@aws-cdk/core@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/core/-/core-1.102.0.tgz#be815a168d317078e8d236daafda8fffd485355c" + integrity sha512-r4YHNTivzZ4xYSqQuH+FnDjU22fbJtSXyC8thDXy+oGXJfxJPZ3zQQM2oapLimpB1WokjFQdm7mHsIGulq/gFg== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" - "@aws-cdk/region-info" "1.99.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" + "@aws-cdk/region-info" "1.102.0" "@balena/dockerignore" "^1.0.2" constructs "^3.3.69" fs-extra "^9.1.0" ignore "^5.1.8" minimatch "^3.0.4" -"@aws-cdk/custom-resources@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/custom-resources/-/custom-resources-1.99.0.tgz#cf722383f87867a05b129dc119276329bcadf303" - integrity sha512-CZIMiGaiDA78YfdgN3i234CvNL0OeldTvey9lVpFVPlnTf5uo6zZMv/uQaX557SvUOHv5D/YvwxRUC5pI3EQUA== - dependencies: - "@aws-cdk/aws-cloudformation" "1.99.0" - "@aws-cdk/aws-ec2" "1.99.0" - "@aws-cdk/aws-iam" "1.99.0" - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/aws-logs" "1.99.0" - "@aws-cdk/aws-sns" "1.99.0" - "@aws-cdk/core" "1.99.0" +"@aws-cdk/custom-resources@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/custom-resources/-/custom-resources-1.102.0.tgz#fc2aa2d220b254e3c1c8971e4d7646330c3a1c49" + integrity sha512-8SVBJU6/SiNXXK3RaPMH1ex3u4ZJG/kn6sLb0TI1+o5f6aOlGivA2akMmj3zHBjant62cjZxMVER1sfhZVTq6g== + dependencies: + "@aws-cdk/aws-cloudformation" "1.102.0" + "@aws-cdk/aws-ec2" "1.102.0" + "@aws-cdk/aws-iam" "1.102.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/aws-logs" "1.102.0" + "@aws-cdk/aws-sns" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/cx-api@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-1.99.0.tgz#a0573121125b276aa443b5cc9d519bc518fc21f3" - integrity sha512-mf9QSU2VgY1J+nZ26C6YqGWPCmO/KKMOAydl8biryqWefp5zYOnIOWFVxouGBHX5DZGqTdKZNnmPrTt0dcIWqg== +"@aws-cdk/cx-api@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-1.102.0.tgz#bbe5d4fc19cff67a060f6532844ca145b921a935" + integrity sha512-OFpSFYaTsUKdDS7KejOzeHEGzh2fMpPFps8nnZNMaP6LEdNdEkH1xvD6/VRvReQRQB3t5tgNb0pJiRUvMbVgSQ== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.99.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" semver "^7.3.5" -"@aws-cdk/lambda-layer-awscli@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-awscli/-/lambda-layer-awscli-1.99.0.tgz#93fdd0017dee95cb2bd2d7b424aba1efc54856b2" - integrity sha512-bPlmTJMwgv6Sp+87Wd1YRiKQ2cMNGBQpciDADWJZxWSZD2ma6t1S8qFvYsG9VeVhOcaWV1JC72MVimOOga7LBg== +"@aws-cdk/lambda-layer-awscli@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-awscli/-/lambda-layer-awscli-1.102.0.tgz#17997a98e59df3d9884d470bd81aaa7f03f2b83c" + integrity sha512-vEINbcXrN8oiRA//nTxztu1s2zna+d+jaeKwLAAk2cJsKSoWHCig00y0X0yUj8sfOy30p6BkUBMDW7CA0UMbDw== dependencies: - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/lambda-layer-kubectl@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-kubectl/-/lambda-layer-kubectl-1.99.0.tgz#b5bfd711784a05d1497b134d1cb34d7f2f478941" - integrity sha512-BOFEGtvqiIHXBTLLsUFrzvmnGpVU9NDH8Melg77azy5ejxng5dhvCpxbC2LGeSZIZ/w11ee/v6DcLhWfCfeLJg== +"@aws-cdk/lambda-layer-kubectl@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-kubectl/-/lambda-layer-kubectl-1.102.0.tgz#a32eb597fa0ca8e1de1744322b416affbc2606ca" + integrity sha512-1ZHaOvqF0NmfbXPaQUMDUqSW/Dgg+GQGDiIdlNCI6ei1a0sCJ7qb2PNZgI9xYGAsTe9944C91jNsdN7cynFfVw== dependencies: - "@aws-cdk/aws-lambda" "1.99.0" - "@aws-cdk/core" "1.99.0" + "@aws-cdk/aws-lambda" "1.102.0" + "@aws-cdk/core" "1.102.0" constructs "^3.3.69" -"@aws-cdk/region-info@1.99.0": - version "1.99.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/region-info/-/region-info-1.99.0.tgz#66d0be5b1d58a03571d785c18807c5489d37398b" - integrity sha512-sKHIRAminwCBQn6IWRhDAlaQNku42xuGk/G3NxCUzL2v4LqBC7xJZfyYoxBEfera6yDv6rg5Jv+/L/tS+T2xLw== +"@aws-cdk/region-info@1.102.0": + version "1.102.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/region-info/-/region-info-1.102.0.tgz#8491910364667cecc3b9187bce707c39f90fa47a" + integrity sha512-zPL04Kx3Vxkb33hRONHeiRCZwX9ko7FVBUDSl7FM1m2XnAz1EgyldhwDe9ndHp4b8YCscUUR201OLxPJP+5qTg== "@babel/code-frame@7.12.11": version "7.12.11" @@ -2286,10 +2282,10 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/aws-lambda@^8.10.75": - version "8.10.75" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.75.tgz#93b4e688db8a45755018561a3212e7766c0fef57" - integrity sha512-orOKSsIVUMsAbKgbSX2ST3FwQt9pxinHVCAIAVl4SmmTxmki2Gu+cGqobMD3eYwDV5FV0YNtaXyxnvE9pLrKTw== +"@types/aws-lambda@^8.10.76": + version "8.10.76" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.76.tgz#a20191677f1f5e32fe1f26739b1d6fbbea9cf636" + integrity sha512-lCTyeRm3NWqSwDnoji0z82Pl0tsOpr1p+33AiNeidgarloWXh3wdiVRUuxEa+sY9S5YLOYGz5X3N3Zvpibvm5w== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.10" @@ -2331,6 +2327,14 @@ dependencies: "@types/node" "*" +"@types/glob@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.3" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" @@ -2375,6 +2379,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/minimatch@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -2974,19 +2983,19 @@ available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: dependencies: array-filter "^1.0.0" -aws-cdk@1.99.0: - version "1.99.0" - resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-1.99.0.tgz#e23c63bc530605fa827ec18f05bf709eb491b2e0" - integrity sha512-ZAxZnRVFFBmUQjjUxBbaUQ0Zu14QsXNNHx1gzTNiPHQWryjGSIIrBgYXIHMMR+yB9Fmg35eqbdQ6xQN/xbERmw== +aws-cdk@1.102.0: + version "1.102.0" + resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-1.102.0.tgz#9cb1c1c50dec7e01af02954679301e42cbfafb8f" + integrity sha512-Fs4MEm9aw0l7YAyNDQbYwkcK6RzkDRvwX/SMgb4BthoyD45dk8ZjkL6CaJfgP15dLF3NpgHbkuTiwRKIy32kyw== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/cloudformation-diff" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" - "@aws-cdk/region-info" "1.99.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/cloudformation-diff" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" + "@aws-cdk/region-info" "1.102.0" archiver "^5.3.0" aws-sdk "^2.848.0" camelcase "^6.2.0" - cdk-assets "1.99.0" + cdk-assets "1.102.0" colors "^1.4.0" decamelize "^5.0.0" fs-extra "^9.1.0" @@ -2997,7 +3006,7 @@ aws-cdk@1.99.0: proxy-agent "^4.0.1" semver "^7.3.5" source-map-support "^0.5.19" - table "^6.0.9" + table "^6.1.0" uuid "^8.3.2" wrap-ansi "^7.0.0" yaml "1.10.2" @@ -3042,10 +3051,10 @@ aws-sdk@^2.848.0: uuid "3.3.2" xml2js "0.4.19" -aws-sdk@^2.869.0: - version "2.869.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.869.0.tgz#f0fc6945979b7f675103424e1fe81688b90e67cf" - integrity sha512-Sj9H+OH1sizBJt6WyTFBvCthZ1hRNUi4qRFO922agf+cOfmq1r+PYLOcG/0qgLMe2aelRwfT2qE2AZ97mADiOw== +aws-sdk@^2.889.0: + version "2.889.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.889.0.tgz#513457f488305a8ff5593747741b67e7b874bdf7" + integrity sha512-+v77GmIJKXT3GMDg/HF9x8c7RSVU8Imfp/0n0Tuzf5AAE6eavpD3xzHABiK9zO9f+T8XzJDytl66UQ33YXavng== dependencies: buffer "4.9.2" events "1.1.1" @@ -3057,10 +3066,10 @@ aws-sdk@^2.869.0: uuid "3.3.2" xml2js "0.4.19" -aws-sdk@^2.889.0: - version "2.889.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.889.0.tgz#513457f488305a8ff5593747741b67e7b874bdf7" - integrity sha512-+v77GmIJKXT3GMDg/HF9x8c7RSVU8Imfp/0n0Tuzf5AAE6eavpD3xzHABiK9zO9f+T8XzJDytl66UQ33YXavng== +aws-sdk@^2.903.0: + version "2.903.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.903.0.tgz#4c8252723370ebbdaffe69f4dfddc5973b1dab4a" + integrity sha512-BP/giYLP8QJ63Jta59kph1F76oPITxRt/wNr3BdoEs9BtshWlGKk149UaseDB4wJtI+0TER5jtzBIUBcP6E+wA== dependencies: buffer "4.9.2" events "1.1.1" @@ -3082,10 +3091,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== -awslint@1.99.0: - version "1.99.0" - resolved "https://registry.yarnpkg.com/awslint/-/awslint-1.99.0.tgz#a6e282449470c322b34f0ba4ed13868b9f62c380" - integrity sha512-ye6sEUeyyj/cT72FKFrqN+BClqY6la9mMe7kR+ku7fWGPMwwkBULiFh7CLtnWsM+D/+4/pmQQxuA8pyj/HIzRg== +awslint@1.102.0: + version "1.102.0" + resolved "https://registry.yarnpkg.com/awslint/-/awslint-1.102.0.tgz#07672c874b273c25de5109558a1a24da3b8aae8a" + integrity sha512-BWbTABs06pNoulHJpJL86tqWf0LgxHCTkKadw19PfLlhK/zeVLSx4wT1obu6Xz088GEz9kqKaTVIvm5yCQa13w== dependencies: "@jsii/spec" "^1.28.0" camelcase "^6.2.0" @@ -3450,13 +3459,13 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -cdk-assets@1.99.0: - version "1.99.0" - resolved "https://registry.yarnpkg.com/cdk-assets/-/cdk-assets-1.99.0.tgz#249375f8a9ac08be27abbb5a3c8e46e1576e6b59" - integrity sha512-gH8C8YT0F1cZh+ce6zILbfTwPpCwO2Q07VrZqXuqDffYXKC/SQOi/gkj6UGpjqov4/qNXBNmihDtxsJXT18pTA== +cdk-assets@1.102.0: + version "1.102.0" + resolved "https://registry.yarnpkg.com/cdk-assets/-/cdk-assets-1.102.0.tgz#3d6245d364ae42586bbae5e4a814b3099ba42f5e" + integrity sha512-W7MawapluvfGDwZvxo/JfbM7+N6lGgBdK5bdhBva0oFtIThJ4TwyWQRiY/H5q6Svk2xr00T8xtaFSbkZmfnQ0A== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.99.0" - "@aws-cdk/cx-api" "1.99.0" + "@aws-cdk/cloud-assembly-schema" "1.102.0" + "@aws-cdk/cx-api" "1.102.0" archiver "^5.3.0" aws-sdk "^2.848.0" glob "^7.1.6" @@ -4697,10 +4706,10 @@ eslint-plugin-import@^2.22.1: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-jest@^24.3.5: - version "24.3.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.5.tgz#71f0b580f87915695c286c3f0eb88cf23664d044" - integrity sha512-XG4rtxYDuJykuqhsOqokYIR84/C8pRihRtEpVskYLbIIKGwPNW2ySxdctuVzETZE+MbF/e7wmsnbNVpzM0rDug== +eslint-plugin-jest@^24.3.4, eslint-plugin-jest@^24.3.6: + version "24.3.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" + integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" @@ -4736,6 +4745,49 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== +eslint@^7.23.0: + version "7.25.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67" + integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.21" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + eslint@^7.24.0: version "7.24.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a" @@ -5513,9 +5565,9 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= handlebars@^4.7.6: - version "4.7.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" - integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" neo-async "^2.6.0" @@ -5621,9 +5673,9 @@ hasha@^5.0.0: integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^3.0.6: version "3.0.7" @@ -5892,13 +5944,6 @@ is-boolean-object@^1.0.0: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -6031,7 +6076,7 @@ is-negative-zero@^2.0.0: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= -is-number-object@^1.0.3, is-number-object@^1.0.4: +is-number-object@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== @@ -6485,6 +6530,16 @@ jest-jasmine2@^26.6.3: pretty-format "^26.6.2" throat "^5.0.0" +jest-junit@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-11.1.0.tgz#79cd53948e44d62b2b30fa23ea0d7a899d2c8d7a" + integrity sha512-c2LFOyKY7+ZxL5zSu+WHmHfsJ2wqbOpeYJ4Uu26yMhFxny2J2NQj6AVS7M+Eaxji9Q/oIDDK5tQy0DGzDp9xOw== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^5.2.0" + uuid "^3.3.3" + xml "^1.0.1" + jest-junit@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-12.0.0.tgz#3ebd4a6a84b50c4ab18323a8f7d9cceb9d845df6" @@ -7285,16 +7340,11 @@ lodash.union@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= -lodash@4.x, lodash@^4.17.21: +lodash@4.x, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - log-driver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" @@ -10028,20 +10078,17 @@ table@^6.0.4: slice-ansi "^4.0.0" string-width "^4.2.0" -table@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb" - integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ== +table@^6.1.0, table@^6.3.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" + integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== dependencies: ajv "^8.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" lodash.clonedeep "^4.5.0" - lodash.flatten "^4.4.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.0" + strip-ansi "^6.0.0" tap-mocha-reporter@^3.0.9: version "3.0.9" @@ -10512,20 +10559,15 @@ typescript@~3.9.9: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== -typescript@~4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" - integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== - typescript@~4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== uglify-js@^3.1.4: - version "3.11.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.1.tgz#32d274fea8aac333293044afd7f81409d5040d38" - integrity sha512-OApPSuJcxcnewwjSGGfWOjx3oix5XpmrK9Z2j0fTRlHGoZ49IU6kExfZTM0++fCArOOCet+vIfWwFHbvWqwp6g== + version "3.13.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113" + integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw== uid-number@0.0.6: version "0.0.6"