From 8c4f51cd04b0a268075378a192b3b2f0f75f4cd4 Mon Sep 17 00:00:00 2001 From: Austin Ely Date: Thu, 20 Jul 2023 16:49:51 -0400 Subject: [PATCH 1/3] chore(ecs): fix isolated partitions in deployment alarms validation --- packages/aws-cdk-lib/aws-ecs/lib/base/base-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/aws-cdk-lib/aws-ecs/lib/base/base-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/base/base-service.ts index 05a0054491554..7eaaccbb86b01 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/base/base-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/base/base-service.ts @@ -1367,7 +1367,7 @@ export abstract class BaseService extends Resource } private deploymentAlarmsAvailableInRegion(): boolean { - const unsupportedPartitions = ['aws-cn', 'aws-us-gov', 'aws-us-iso', 'aws-us-iso-b']; + const unsupportedPartitions = ['aws-cn', 'aws-us-gov', 'aws-iso', 'aws-iso-b']; const currentRegion = RegionInfo.get(this.stack.resolve(this.stack.region)); if (currentRegion.partition) { return !unsupportedPartitions.includes(currentRegion.partition); From c3b9e29742cf5905db843447325e966f73c659a9 Mon Sep 17 00:00:00 2001 From: Austin Ely Date: Thu, 20 Jul 2023 18:22:55 -0400 Subject: [PATCH 2/3] test: unit test for isolated partition behavior --- .../aws-ecs/test/ec2/ec2-service.test.ts | 26 + packages/cdk-cli-wrapper/.jsii | 1522 +++++++++++++++++ packages/cdk-cli-wrapper/.warnings.jsii.js | 83 + packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts | 132 ++ packages/cdk-cli-wrapper/lib/cdk-wrapper.js | 229 +++ .../cdk-cli-wrapper/lib/commands/common.d.ts | 178 ++ .../cdk-cli-wrapper/lib/commands/common.js | 22 + .../cdk-cli-wrapper/lib/commands/deploy.d.ts | 109 ++ .../cdk-cli-wrapper/lib/commands/deploy.js | 18 + .../cdk-cli-wrapper/lib/commands/destroy.d.ts | 18 + .../cdk-cli-wrapper/lib/commands/destroy.js | 3 + .../cdk-cli-wrapper/lib/commands/index.d.ts | 5 + .../cdk-cli-wrapper/lib/commands/index.js | 18 + .../cdk-cli-wrapper/lib/commands/list.d.ts | 12 + packages/cdk-cli-wrapper/lib/commands/list.js | 3 + .../cdk-cli-wrapper/lib/commands/synth.d.ts | 24 + .../cdk-cli-wrapper/lib/commands/synth.js | 3 + packages/cdk-cli-wrapper/lib/index.d.ts | 2 + packages/cdk-cli-wrapper/lib/index.js | 15 + packages/cdk-cli-wrapper/lib/utils.d.ts | 9 + packages/cdk-cli-wrapper/lib/utils.js | 44 + .../test/cdk-wrapper.test.d.ts | 1 + .../cdk-cli-wrapper/test/cdk-wrapper.test.js | 408 +++++ packages/cdk-cli-wrapper/tsconfig.json | 48 + 24 files changed, 2932 insertions(+) create mode 100644 packages/cdk-cli-wrapper/.jsii create mode 100644 packages/cdk-cli-wrapper/.warnings.jsii.js create mode 100644 packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/cdk-wrapper.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/common.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/common.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/deploy.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/deploy.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/destroy.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/destroy.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/index.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/index.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/list.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/list.js create mode 100644 packages/cdk-cli-wrapper/lib/commands/synth.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/commands/synth.js create mode 100644 packages/cdk-cli-wrapper/lib/index.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/index.js create mode 100644 packages/cdk-cli-wrapper/lib/utils.d.ts create mode 100644 packages/cdk-cli-wrapper/lib/utils.js create mode 100644 packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts create mode 100644 packages/cdk-cli-wrapper/test/cdk-wrapper.test.js create mode 100644 packages/cdk-cli-wrapper/tsconfig.json diff --git a/packages/aws-cdk-lib/aws-ecs/test/ec2/ec2-service.test.ts b/packages/aws-cdk-lib/aws-ecs/test/ec2/ec2-service.test.ts index 8da11d24bae4e..a07841af5d75f 100644 --- a/packages/aws-cdk-lib/aws-ecs/test/ec2/ec2-service.test.ts +++ b/packages/aws-cdk-lib/aws-ecs/test/ec2/ec2-service.test.ts @@ -2365,6 +2365,32 @@ describe('ec2 service', () => { }); }); + test('no deployment alarms in isolated partitions', () => { + const app = new cdk.App(); + const govCloudStack = new cdk.Stack(app, 'IsoStack', { + env: { region: 'us-isob-east-1' }, + }); + const vpc = new ec2.Vpc(govCloudStack, 'MyVpc', {}); + const gcCluster = new ecs.Cluster(govCloudStack, 'EcsCluster', { vpc }); + addDefaultCapacityProvider(gcCluster, govCloudStack, vpc); + const gcTaskDefinition = new ecs.Ec2TaskDefinition(govCloudStack, 'Ec2TaskDef'); + + gcTaskDefinition.addContainer('web', { + image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'), + memoryLimitMiB: 512, + }); + new ecs.Ec2Service(govCloudStack, 'Ec2Service', { + cluster: gcCluster, + taskDefinition: gcTaskDefinition, + }); + + Template.fromStack(govCloudStack).hasResourceProperties('AWS::ECS::Service', { + DeploymentConfiguration: { + Alarms: Match.absent(), + }, + }); + }); + /** * This section of tests test all combinations of the following possible * alarm names and metrics. Most combinations work just fine, some diff --git a/packages/cdk-cli-wrapper/.jsii b/packages/cdk-cli-wrapper/.jsii new file mode 100644 index 0000000000000..38eb604547daf --- /dev/null +++ b/packages/cdk-cli-wrapper/.jsii @@ -0,0 +1,1522 @@ +{ + "author": { + "name": "Amazon Web Services", + "organization": true, + "roles": [ + "author" + ], + "url": "https://aws.amazon.com" + }, + "description": "CDK CLI Wrapper Library", + "docs": { + "stability": "experimental" + }, + "homepage": "https://github.com/aws/aws-cdk", + "jsiiVersion": "1.75.0 (build 63bb957)", + "keywords": [ + "aws", + "cdk" + ], + "license": "Apache-2.0", + "metadata": { + "jsii": { + "compiledWithDeprecationWarnings": true, + "pacmak": { + "hasDefaultInterfaces": true + }, + "rosetta": { + "strict": true + } + } + }, + "name": "cdk-cli-wrapper", + "readme": { + "markdown": "# cdk-cli-wrapper\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\nCDK CLI Wrapper Library.\n\nInternal only for now.\n\n## Overview\n\nThis package provides a library which wraps the CDK CLI, allowing you to interact with the CLI programmatically.\n\nCurrently this package provides wrappers for:\n\n- `cdk deploy`\n- `cdk synth`\n- `cdk destroy`\n- `cdk list`\n\n## Usage\n\nFirst create a new `CdkCliWrapper` with the directory in which you want to execute commands,\nand optionally any environment variables that you want to include in the execution environment.\n\n```ts\nnew CdkCliWrapper({\n directory: '/path/to/project',\n env: {\n KEY: 'value',\n },\n});\n```\n\n### deploy\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.deploy({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### synth\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.synth({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### destroy\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.destroy({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### list\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.list({\n app: 'node bin/my-app.js',\n stacks: ['*'],\n});\n```\n" + }, + "repository": { + "directory": "packages/cdk-cli-wrapper", + "type": "git", + "url": "https://github.com/aws/aws-cdk.git" + }, + "schema": "jsii/0.10.0", + "targets": { + "dotnet": { + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", + "namespace": "Amazon.CDK.CdkCliWrapper", + "packageId": "Amazon.CDK.CdkCliWrapper" + }, + "java": { + "maven": { + "artifactId": "cdk-cli-wrapper", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk.cdkcliwrapper" + }, + "js": { + "npm": "cdk-cli-wrapper" + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 2" + ], + "distName": "aws-cdk.cdk-cli-wrapper", + "module": "aws_cdk.cdk_cli_wrapper" + } + }, + "types": { + "cdk-cli-wrapper.CdkCliWrapper": { + "assembly": "cdk-cli-wrapper", + "docs": { + "stability": "experimental", + "summary": "Provides a programmatic interface for interacting with the CDK CLI by wrapping the CLI with exec." + }, + "fqn": "cdk-cli-wrapper.CdkCliWrapper", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 125 + }, + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.CdkCliWrapperOptions" + } + } + ] + }, + "interfaces": [ + "cdk-cli-wrapper.ICdk" + ], + "kind": "class", + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 119 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "cdk deploy." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 157 + }, + "name": "deploy", + "overrides": "cdk-cli-wrapper.ICdk", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.DeployOptions" + } + } + ] + }, + { + "docs": { + "stability": "experimental", + "summary": "cdk destroy." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 187 + }, + "name": "destroy", + "overrides": "cdk-cli-wrapper.ICdk", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.DestroyOptions" + } + } + ] + }, + { + "docs": { + "stability": "experimental", + "summary": "cdk list." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 142 + }, + "name": "list", + "overrides": "cdk-cli-wrapper.ICdk", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.ListOptions" + } + } + ], + "returns": { + "type": { + "primitive": "string" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "cdk synth." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 204 + }, + "name": "synth", + "overrides": "cdk-cli-wrapper.ICdk", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.SynthOptions" + } + } + ] + }, + { + "docs": { + "remarks": "The CLI has a pretty slow startup time because of all the modules it needs to load,\nBypass it to be quicker!", + "stability": "experimental", + "summary": "Do a CDK synth, mimicking the CLI (without actually using it)." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 225 + }, + "name": "synthFast", + "overrides": "cdk-cli-wrapper.ICdk", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.SynthFastOptions" + } + } + ] + } + ], + "name": "CdkCliWrapper", + "symbolId": "lib/cdk-wrapper:CdkCliWrapper" + }, + "cdk-cli-wrapper.CdkCliWrapperOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "AWS CDK client that provides an API to programatically execute the CDK CLI by wrapping calls to exec the CLI." + }, + "fqn": "cdk-cli-wrapper.CdkCliWrapperOptions", + "kind": "interface", + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 85 + }, + "name": "CdkCliWrapperOptions", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The directory to run the cdk commands from." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 89 + }, + "name": "directory", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "'aws-cdk/bin/cdk'", + "stability": "experimental", + "summary": "The path to the cdk executable." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 105 + }, + "name": "cdkExecutable", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- no additional env vars", + "stability": "experimental", + "summary": "Additional environment variables to set in the execution environment that will be running the cdk commands." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 98 + }, + "name": "env", + "optional": true, + "type": { + "fqn": "cdk-cli-wrapper.Environment" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Show the output from running the CDK CLI." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 112 + }, + "name": "showOutput", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/cdk-wrapper:CdkCliWrapperOptions" + }, + "cdk-cli-wrapper.DefaultCdkOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Default CDK CLI options that apply to all commands." + }, + "fqn": "cdk-cli-wrapper.DefaultCdkOptions", + "kind": "interface", + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 24 + }, + "name": "DefaultCdkOptions", + "properties": [ + { + "abstract": true, + "docs": { + "default": "- false", + "remarks": "Requried if `stacks` is not set", + "stability": "experimental", + "summary": "Deploy all stacks." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 41 + }, + "name": "all", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- read from cdk.json", + "stability": "experimental", + "summary": "command-line for executing your app or a cloud assembly directory e.g. \"node bin/my-app.js\" or \"cdk.out\"." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 51 + }, + "name": "app", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Include \"aws:asset:*\" CloudFormation metadata for resources that use assets." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 171 + }, + "name": "assetMetadata", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- read from AWS_CA_BUNDLE environment variable", + "stability": "experimental", + "summary": "Path to CA certificate to use when validating HTTPS requests." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 143 + }, + "name": "caBundlePath", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Show colors and other style from console output." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 201 + }, + "name": "color", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- no additional context", + "stability": "experimental", + "summary": "Additional context." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 66 + }, + "name": "context", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "map" + } + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "enable emission of additional debugging information, such as creation stack traces of tokens." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 120 + }, + "name": "debug", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- guess EC2 instance status", + "stability": "experimental", + "summary": "Force trying to fetch EC2 instance credentials." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 150 + }, + "name": "ec2Creds", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Ignores synthesis errors, which will likely produce an invalid output." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 97 + }, + "name": "ignoreErrors", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Use JSON output instead of YAML when templates are printed to STDOUT." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 105 + }, + "name": "json", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "remarks": "Synthesis fails if this is disabled and context lookups need\nto be performed", + "stability": "experimental", + "summary": "Perform context lookups." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 90 + }, + "name": "lookups", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Show relevant notices." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 194 + }, + "name": "notices", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "cdk.out", + "stability": "experimental", + "summary": "Emits the synthesized cloud assembly into a directory." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 187 + }, + "name": "output", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Include \"aws:cdk:path\" CloudFormation metadata for each resource." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 164 + }, + "name": "pathMetadata", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- no profile is used", + "stability": "experimental", + "summary": "Use the indicated AWS profile as the default environment." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 127 + }, + "name": "profile", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- no proxy", + "remarks": "Will read from\nHTTPS_PROXY environment if specified", + "stability": "experimental", + "summary": "Use the indicated proxy." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 135 + }, + "name": "proxy", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- use the bootstrap cfn-exec role", + "stability": "experimental", + "summary": "Role to pass to CloudFormation for deployment." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 59 + }, + "name": "roleArn", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- []", + "remarks": "Requried if `all` is not set", + "stability": "experimental", + "summary": "List of stacks to deploy." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 32 + }, + "name": "stacks", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "remarks": "Needed for local debugging the source files with SAM CLI", + "stability": "experimental", + "summary": "Copy assets to the output directory." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 180 + }, + "name": "staging", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Do not construct stacks with warnings." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 80 + }, + "name": "strict", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Print trace for stack warnings." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 73 + }, + "name": "trace", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "show debug logs." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 112 + }, + "name": "verbose", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Include \"AWS::CDK::Metadata\" resource in synthesized templates." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 157 + }, + "name": "versionReporting", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/commands/common:DefaultCdkOptions" + }, + "cdk-cli-wrapper.DeployOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Options to use with cdk deploy." + }, + "fqn": "cdk-cli-wrapper.DeployOptions", + "interfaces": [ + "cdk-cli-wrapper.DefaultCdkOptions" + ], + "kind": "interface", + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 6 + }, + "name": "DeployOptions", + "properties": [ + { + "abstract": true, + "docs": { + "default": "- auto generate a name", + "remarks": "If not provided, a name will be generated automatically.", + "stability": "experimental", + "summary": "Optional name to use for the CloudFormation change set." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 34 + }, + "name": "changeSetName", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Whether we are on a CI system." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 96 + }, + "name": "ci", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Only perform action on the given stack." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 12 + }, + "name": "exclusively", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Whether to execute the ChangeSet Not providing `execute` parameter will result in execution of ChangeSet." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 68 + }, + "name": "execute", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Always deploy, even if templates are identical." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 40 + }, + "name": "force", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- no notifications", + "stability": "experimental", + "summary": "ARNs of SNS topics that CloudFormation will notify with stack related events." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 54 + }, + "name": "notificationArns", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- Outputs are not written to any file", + "stability": "experimental", + "summary": "Path to file where stack outputs will be written after a successful deploy as JSON." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 89 + }, + "name": "outputsFile", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "{}", + "stability": "experimental", + "summary": "Additional parameters for CloudFormation at deploy time." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 74 + }, + "name": "parameters", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "map" + } + } + }, + { + "abstract": true, + "docs": { + "default": "StackActivityProgress.EVENTS", + "remarks": "The default in the CLI is StackActivityProgress.BAR, but\nsince the cli-wrapper will most likely be run in automation it makes\nmore sense to set the default to StackActivityProgress.EVENTS", + "stability": "experimental", + "summary": "Display mode for stack activity events." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 107 + }, + "name": "progress", + "optional": true, + "type": { + "fqn": "cdk-cli-wrapper.StackActivityProgress" + } + }, + { + "abstract": true, + "docs": { + "default": "RequireApproval.Never", + "stability": "experimental", + "summary": "What kind of security changes require approval." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 61 + }, + "name": "requireApproval", + "optional": true, + "type": { + "fqn": "cdk-cli-wrapper.RequireApproval" + } + }, + { + "abstract": true, + "docs": { + "default": "- do not reuse assets", + "stability": "experimental", + "summary": "Reuse the assets with the given asset IDs." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 26 + }, + "name": "reuseAssets", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "stability": "experimental", + "summary": "Rollback failed deployments." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 47 + }, + "name": "rollback", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "CDKToolkit", + "stability": "experimental", + "summary": "Name of the toolkit stack to use/deploy." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 19 + }, + "name": "toolkitStackName", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "true", + "remarks": "If not set, all parameters must be specified for every deployment.", + "stability": "experimental", + "summary": "Use previous values for unspecified parameters." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 83 + }, + "name": "usePreviousParameters", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/commands/deploy:DeployOptions" + }, + "cdk-cli-wrapper.DestroyOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Options to use with cdk destroy." + }, + "fqn": "cdk-cli-wrapper.DestroyOptions", + "interfaces": [ + "cdk-cli-wrapper.DefaultCdkOptions" + ], + "kind": "interface", + "locationInModule": { + "filename": "lib/commands/destroy.ts", + "line": 6 + }, + "name": "DestroyOptions", + "properties": [ + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Only destroy the given stack." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/destroy.ts", + "line": 19 + }, + "name": "exclusively", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Do not ask for permission before destroying stacks." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/destroy.ts", + "line": 12 + }, + "name": "force", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/commands/destroy:DestroyOptions" + }, + "cdk-cli-wrapper.Environment": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Additional environment variables to set in the execution environment that will be running the cdk commands." + }, + "fqn": "cdk-cli-wrapper.Environment", + "kind": "interface", + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 77 + }, + "name": "Environment", + "symbolId": "lib/cdk-wrapper:Environment" + }, + "cdk-cli-wrapper.ICdk": { + "assembly": "cdk-cli-wrapper", + "docs": { + "stability": "experimental", + "summary": "AWS CDK CLI operations." + }, + "fqn": "cdk-cli-wrapper.ICdk", + "kind": "interface", + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 7 + }, + "methods": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "cdk deploy." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 12 + }, + "name": "deploy", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.DeployOptions" + } + } + ] + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "cdk destroy." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 22 + }, + "name": "destroy", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.DestroyOptions" + } + } + ] + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "cdk list." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 27 + }, + "name": "list", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.ListOptions" + } + } + ], + "returns": { + "type": { + "primitive": "string" + } + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "cdk synth." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 17 + }, + "name": "synth", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.SynthOptions" + } + } + ] + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "cdk synth fast." + }, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 32 + }, + "name": "synthFast", + "parameters": [ + { + "name": "options", + "type": { + "fqn": "cdk-cli-wrapper.SynthFastOptions" + } + } + ] + } + ], + "name": "ICdk", + "symbolId": "lib/cdk-wrapper:ICdk" + }, + "cdk-cli-wrapper.ListOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Options for cdk list." + }, + "fqn": "cdk-cli-wrapper.ListOptions", + "interfaces": [ + "cdk-cli-wrapper.DefaultCdkOptions" + ], + "kind": "interface", + "locationInModule": { + "filename": "lib/commands/list.ts", + "line": 6 + }, + "name": "ListOptions", + "properties": [ + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Display environment information for each stack." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/list.ts", + "line": 12 + }, + "name": "long", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/commands/list:ListOptions" + }, + "cdk-cli-wrapper.RequireApproval": { + "assembly": "cdk-cli-wrapper", + "docs": { + "stability": "experimental", + "summary": "In what scenarios should the CLI ask for approval." + }, + "fqn": "cdk-cli-wrapper.RequireApproval", + "kind": "enum", + "locationInModule": { + "filename": "lib/commands/common.ts", + "line": 4 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "Never ask for approval." + }, + "name": "NEVER" + }, + { + "docs": { + "stability": "experimental", + "summary": "Prompt for approval for any type of change to the stack." + }, + "name": "ANYCHANGE" + }, + { + "docs": { + "stability": "experimental", + "summary": "Only prompt for approval if there are security related changes." + }, + "name": "BROADENING" + } + ], + "name": "RequireApproval", + "symbolId": "lib/commands/common:RequireApproval" + }, + "cdk-cli-wrapper.StackActivityProgress": { + "assembly": "cdk-cli-wrapper", + "docs": { + "stability": "experimental", + "summary": "Supported display modes for stack deployment activity." + }, + "fqn": "cdk-cli-wrapper.StackActivityProgress", + "kind": "enum", + "locationInModule": { + "filename": "lib/commands/deploy.ts", + "line": 113 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "Displays a progress bar with only the events for the resource currently being deployed." + }, + "name": "BAR" + }, + { + "docs": { + "stability": "experimental", + "summary": "Displays complete history with all CloudFormation stack events." + }, + "name": "EVENTS" + } + ], + "name": "StackActivityProgress", + "symbolId": "lib/commands/deploy:StackActivityProgress" + }, + "cdk-cli-wrapper.SynthFastOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Options for synthing and bypassing the CDK CLI." + }, + "fqn": "cdk-cli-wrapper.SynthFastOptions", + "kind": "interface", + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 38 + }, + "name": "SynthFastOptions", + "properties": [ + { + "abstract": true, + "docs": { + "remarks": "e.g. \"node 'bin/my-app.ts'\"\nor 'go run main.go'", + "stability": "experimental", + "summary": "The command to use to execute the app. This is typically the same thing that normally gets passed to `--app`." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 47 + }, + "name": "execCmd", + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- no additional context", + "stability": "experimental", + "summary": "Additional context." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 61 + }, + "name": "context", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "map" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- no additional env", + "stability": "experimental", + "summary": "Additional environment variables to set in the execution environment." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 69 + }, + "name": "env", + "optional": true, + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "map" + } + } + }, + { + "abstract": true, + "docs": { + "default": "cdk.out", + "stability": "experimental", + "summary": "Emits the synthesized cloud assembly into a directory." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/cdk-wrapper.ts", + "line": 54 + }, + "name": "output", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "symbolId": "lib/cdk-wrapper:SynthFastOptions" + }, + "cdk-cli-wrapper.SynthOptions": { + "assembly": "cdk-cli-wrapper", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Options to use with cdk synth." + }, + "fqn": "cdk-cli-wrapper.SynthOptions", + "interfaces": [ + "cdk-cli-wrapper.DefaultCdkOptions" + ], + "kind": "interface", + "locationInModule": { + "filename": "lib/commands/synth.ts", + "line": 6 + }, + "name": "SynthOptions", + "properties": [ + { + "abstract": true, + "docs": { + "default": "false", + "stability": "experimental", + "summary": "Only synthesize the given stack." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/synth.ts", + "line": 27 + }, + "name": "exclusively", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "false;", + "stability": "experimental", + "summary": "Do not output CloudFormation Template to stdout." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/synth.ts", + "line": 20 + }, + "name": "quiet", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "true;", + "stability": "experimental", + "summary": "After synthesis, validate stacks with the \"validateOnSynth\" attribute set (can also be controlled with CDK_VALIDATION)." + }, + "immutable": true, + "locationInModule": { + "filename": "lib/commands/synth.ts", + "line": 14 + }, + "name": "validation", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "lib/commands/synth:SynthOptions" + } + }, + "version": "0.0.0", + "fingerprint": "qY+0eNhbMLHg8X33wDmXPNdVT+4e469qkHzaccBtWFY=" +} \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/.warnings.jsii.js b/packages/cdk-cli-wrapper/.warnings.jsii.js new file mode 100644 index 0000000000000..a557d37749624 --- /dev/null +++ b/packages/cdk-cli-wrapper/.warnings.jsii.js @@ -0,0 +1,83 @@ +function cdk_cli_wrapper_ICdk(p) { +} +function cdk_cli_wrapper_SynthFastOptions(p) { +} +function cdk_cli_wrapper_Environment(p) { +} +function cdk_cli_wrapper_CdkCliWrapperOptions(p) { + if (p == null) + return; + visitedObjects.add(p); + try { + if (!visitedObjects.has(p.env)) + cdk_cli_wrapper_Environment(p.env); + } + finally { + visitedObjects.delete(p); + } +} +function cdk_cli_wrapper_CdkCliWrapper(p) { +} +function cdk_cli_wrapper_SynthOptions(p) { +} +function cdk_cli_wrapper_RequireApproval(p) { +} +function cdk_cli_wrapper_DefaultCdkOptions(p) { +} +function cdk_cli_wrapper_DeployOptions(p) { + if (p == null) + return; + visitedObjects.add(p); + try { + if (!visitedObjects.has(p.progress)) + cdk_cli_wrapper_StackActivityProgress(p.progress); + if (!visitedObjects.has(p.requireApproval)) + cdk_cli_wrapper_RequireApproval(p.requireApproval); + } + finally { + visitedObjects.delete(p); + } +} +function cdk_cli_wrapper_StackActivityProgress(p) { +} +function cdk_cli_wrapper_DestroyOptions(p) { +} +function cdk_cli_wrapper_ListOptions(p) { +} +function print(name, deprecationMessage) { + const deprecated = process.env.JSII_DEPRECATED; + const deprecationMode = ["warn", "fail", "quiet"].includes(deprecated) ? deprecated : "warn"; + const message = `${name} is deprecated.\n ${deprecationMessage.trim()}\n This API will be removed in the next major release.`; + switch (deprecationMode) { + case "fail": + throw new DeprecationError(message); + case "warn": + console.warn("[WARNING]", message); + break; + } +} +function getPropertyDescriptor(obj, prop) { + const descriptor = Object.getOwnPropertyDescriptor(obj, prop); + if (descriptor) { + return descriptor; + } + const proto = Object.getPrototypeOf(obj); + const prototypeDescriptor = proto && getPropertyDescriptor(proto, prop); + if (prototypeDescriptor) { + return prototypeDescriptor; + } + return {}; +} +const visitedObjects = new Set(); +class DeprecationError extends Error { + constructor(...args) { + super(...args); + Object.defineProperty(this, "name", { + configurable: false, + enumerable: true, + value: "DeprecationError", + writable: false, + }); + } +} +module.exports = { print, getPropertyDescriptor, DeprecationError, cdk_cli_wrapper_ICdk, cdk_cli_wrapper_SynthFastOptions, cdk_cli_wrapper_Environment, cdk_cli_wrapper_CdkCliWrapperOptions, cdk_cli_wrapper_CdkCliWrapper, cdk_cli_wrapper_SynthOptions, cdk_cli_wrapper_RequireApproval, cdk_cli_wrapper_DefaultCdkOptions, cdk_cli_wrapper_DeployOptions, cdk_cli_wrapper_StackActivityProgress, cdk_cli_wrapper_DestroyOptions, cdk_cli_wrapper_ListOptions }; diff --git a/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts b/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts new file mode 100644 index 0000000000000..70b88aaf4b79a --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts @@ -0,0 +1,132 @@ +import { DeployOptions, DestroyOptions, SynthOptions, ListOptions } from './commands'; +/** + * AWS CDK CLI operations + */ +export interface ICdk { + /** + * cdk deploy + */ + deploy(options: DeployOptions): void; + /** + * cdk synth + */ + synth(options: SynthOptions): void; + /** + * cdk destroy + */ + destroy(options: DestroyOptions): void; + /** + * cdk list + */ + list(options: ListOptions): string; + /** + * cdk synth fast + */ + synthFast(options: SynthFastOptions): void; +} +/** + * Options for synthing and bypassing the CDK CLI + */ +export interface SynthFastOptions { + /** + * The command to use to execute the app. + * This is typically the same thing that normally + * gets passed to `--app` + * + * e.g. "node 'bin/my-app.ts'" + * or 'go run main.go' + */ + readonly execCmd: string[]; + /** + * Emits the synthesized cloud assembly into a directory + * + * @default cdk.out + */ + readonly output?: string; + /** + * Additional context + * + * @default - no additional context + */ + readonly context?: Record; + /** + * Additional environment variables to set in the + * execution environment + * + * @default - no additional env + */ + readonly env?: { + [name: string]: string; + }; +} +/** + * Additional environment variables to set + * in the execution environment that will be running + * the cdk commands + */ +export interface Environment { + [key: string]: string | undefined; +} +/** + * AWS CDK client that provides an API to programatically execute the CDK CLI + * by wrapping calls to exec the CLI + */ +export interface CdkCliWrapperOptions { + /** + * The directory to run the cdk commands from + */ + readonly directory: string; + /** + * Additional environment variables to set + * in the execution environment that will be running + * the cdk commands + * + * @default - no additional env vars + */ + readonly env?: Environment; + /** + * The path to the cdk executable + * + * @default 'aws-cdk/bin/cdk' + */ + readonly cdkExecutable?: string; + /** + * Show the output from running the CDK CLI + * + * @default false + */ + readonly showOutput?: boolean; +} +/** + * Provides a programmatic interface for interacting with the CDK CLI by + * wrapping the CLI with exec + */ +export declare class CdkCliWrapper implements ICdk { + private readonly directory; + private readonly env?; + private readonly cdk; + private readonly showOutput; + constructor(options: CdkCliWrapperOptions); + private validateArgs; + list(options: ListOptions): string; + /** + * cdk deploy + */ + deploy(options: DeployOptions): void; + /** + * cdk destroy + */ + destroy(options: DestroyOptions): void; + /** + * cdk synth + */ + synth(options: SynthOptions): void; + /** + * Do a CDK synth, mimicking the CLI (without actually using it) + * + * The CLI has a pretty slow startup time because of all the modules it needs to load, + * Bypass it to be quicker! + */ + synthFast(options: SynthFastOptions): void; + private createDefaultArguments; +} diff --git a/packages/cdk-cli-wrapper/lib/cdk-wrapper.js b/packages/cdk-cli-wrapper/lib/cdk-wrapper.js new file mode 100644 index 0000000000000..ed904b653b9b5 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/cdk-wrapper.js @@ -0,0 +1,229 @@ +"use strict"; +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CdkCliWrapper = void 0; +const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); +const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); +const commands_1 = require("./commands"); +const utils_1 = require("./utils"); +/** + * Provides a programmatic interface for interacting with the CDK CLI by + * wrapping the CLI with exec + */ +class CdkCliWrapper { + constructor(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_CdkCliWrapperOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, CdkCliWrapper); + } + throw error; + } + this.directory = options.directory; + this.env = options.env; + this.showOutput = options.showOutput ?? false; + try { + this.cdk = options.cdkExecutable ?? 'cdk'; + } + catch (e) { + throw new Error(`could not resolve path to cdk executable: "${options.cdkExecutable ?? 'cdk'}"`); + } + } + validateArgs(options) { + if (!options.stacks && !options.all) { + throw new Error('one of "app" or "stacks" must be provided'); + } + } + list(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_ListOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, this.list); + } + throw error; + } + const listCommandArgs = [ + ...renderBooleanArg('long', options.long), + ...this.createDefaultArguments(options), + ]; + return utils_1.exec([this.cdk, 'ls', ...listCommandArgs], { + cwd: this.directory, + verbose: this.showOutput, + env: this.env, + }); + } + /** + * cdk deploy + */ + deploy(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_DeployOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, this.deploy); + } + throw error; + } + const deployCommandArgs = [ + ...renderBooleanArg('ci', options.ci), + ...renderBooleanArg('execute', options.execute), + ...renderBooleanArg('exclusively', options.exclusively), + ...renderBooleanArg('force', options.force), + ...renderBooleanArg('previous-parameters', options.usePreviousParameters), + ...renderBooleanArg('rollback', options.rollback), + ...renderBooleanArg('staging', options.staging), + ...options.reuseAssets ? renderArrayArg('--reuse-assets', options.reuseAssets) : [], + ...options.notificationArns ? renderArrayArg('--notification-arns', options.notificationArns) : [], + ...options.parameters ? renderMapArrayArg('--parameters', options.parameters) : [], + ...options.outputsFile ? ['--outputs-file', options.outputsFile] : [], + ...options.requireApproval ? ['--require-approval', options.requireApproval] : [], + ...options.changeSetName ? ['--change-set-name', options.changeSetName] : [], + ...options.toolkitStackName ? ['--toolkit-stack-name', options.toolkitStackName] : [], + ...options.progress ? ['--progress', options.progress] : ['--progress', commands_1.StackActivityProgress.EVENTS], + ...this.createDefaultArguments(options), + ]; + utils_1.exec([this.cdk, 'deploy', ...deployCommandArgs], { + cwd: this.directory, + verbose: this.showOutput, + env: this.env, + }); + } + /** + * cdk destroy + */ + destroy(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_DestroyOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, this.destroy); + } + throw error; + } + const destroyCommandArgs = [ + ...renderBooleanArg('force', options.force), + ...renderBooleanArg('exclusively', options.exclusively), + ...this.createDefaultArguments(options), + ]; + utils_1.exec([this.cdk, 'destroy', ...destroyCommandArgs], { + cwd: this.directory, + verbose: this.showOutput, + env: this.env, + }); + } + /** + * cdk synth + */ + synth(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_SynthOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, this.synth); + } + throw error; + } + const synthCommandArgs = [ + ...renderBooleanArg('validation', options.validation), + ...renderBooleanArg('quiet', options.quiet), + ...renderBooleanArg('exclusively', options.exclusively), + ...this.createDefaultArguments(options), + ]; + utils_1.exec([this.cdk, 'synth', ...synthCommandArgs], { + cwd: this.directory, + verbose: this.showOutput, + env: this.env, + }); + } + /** + * Do a CDK synth, mimicking the CLI (without actually using it) + * + * The CLI has a pretty slow startup time because of all the modules it needs to load, + * Bypass it to be quicker! + */ + synthFast(options) { + try { + jsiiDeprecationWarnings.cdk_cli_wrapper_SynthFastOptions(options); + } + catch (error) { + if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { + Error.captureStackTrace(error, this.synthFast); + } + throw error; + } + utils_1.exec(options.execCmd, { + cwd: this.directory, + verbose: this.showOutput, + env: { + CDK_CONTEXT_JSON: JSON.stringify(options.context), + CDK_OUTDIR: options.output, + ...this.env, + ...options.env, + }, + }); + } + createDefaultArguments(options) { + this.validateArgs(options); + const stacks = options.stacks ?? []; + return [ + ...options.app ? ['--app', options.app] : [], + ...renderBooleanArg('strict', options.strict), + ...renderBooleanArg('trace', options.trace), + ...renderBooleanArg('lookups', options.lookups), + ...renderBooleanArg('ignore-errors', options.ignoreErrors), + ...renderBooleanArg('json', options.json), + ...renderBooleanArg('verbose', options.verbose), + ...renderBooleanArg('debug', options.debug), + ...renderBooleanArg('ec2creds', options.ec2Creds), + ...renderBooleanArg('version-reporting', options.versionReporting), + ...renderBooleanArg('path-metadata', options.pathMetadata), + ...renderBooleanArg('asset-metadata', options.assetMetadata), + ...renderBooleanArg('notices', options.notices), + ...renderBooleanArg('color', options.color), + ...options.context ? renderMapArrayArg('--context', options.context) : [], + ...options.profile ? ['--profile', options.profile] : [], + ...options.proxy ? ['--proxy', options.proxy] : [], + ...options.caBundlePath ? ['--ca-bundle-path', options.caBundlePath] : [], + ...options.roleArn ? ['--role-arn', options.roleArn] : [], + ...options.output ? ['--output', options.output] : [], + ...stacks, + ...options.all ? ['--all'] : [], + ]; + } +} +exports.CdkCliWrapper = CdkCliWrapper; +_a = JSII_RTTI_SYMBOL_1; +CdkCliWrapper[_a] = { fqn: "cdk-cli-wrapper.CdkCliWrapper", version: "0.0.0" }; +function renderMapArrayArg(flag, parameters) { + const params = []; + for (const [key, value] of Object.entries(parameters)) { + params.push(`${key}=${value}`); + } + return renderArrayArg(flag, params); +} +function renderArrayArg(flag, values) { + let args = []; + for (const value of values ?? []) { + args.push(flag, value); + } + return args; +} +function renderBooleanArg(val, arg) { + if (arg) { + return [`--${val}`]; + } + else if (arg === undefined) { + return []; + } + else { + return [`--no-${val}`]; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5Q0FBZ0k7QUFDaEksbUNBQStCO0FBaUgvQjs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7SUFNeEIsWUFBWSxPQUE2Qjs7Ozs7OytDQU45QixhQUFhOzs7O1FBT3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztRQUM5QyxJQUFJO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztTQUMzQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2xHO0tBQ0Y7SUFFTyxZQUFZLENBQUMsT0FBMEI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtLQUNGO0lBRU0sSUFBSSxDQUFDLE9BQW9COzs7Ozs7Ozs7O1FBQzlCLE1BQU0sZUFBZSxHQUFhO1lBQ2hDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDekMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUM7UUFFRixPQUFPLFlBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUU7WUFDaEQs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YSxFQUFFLENBQUM7SUFDNUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZLEVBQUUsTUFBaUI7SUFDckQsSUFBSSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEdBQWE7SUFDbEQsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3JCO1NBQU0sSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFDO0tBQ1g7U0FBTTtRQUNMLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDeEI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENka09wdGlvbnMsIERlcGxveU9wdGlvbnMsIERlc3Ryb3lPcHRpb25zLCBTeW50aE9wdGlvbnMsIExpc3RPcHRpb25zLCBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MgfSBmcm9tICcuL2NvbW1hbmRzJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBV1MgQ0RLIENMSSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNkayB7XG5cbiAgLyoqXG4gICAqIGNkayBkZXBsb3lcbiAgICovXG4gIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogY2RrIHN5bnRoXG4gICAqL1xuICBzeW50aChvcHRpb25zOiBTeW50aE9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBjZGsgZGVzdHJveVxuICAgKi9cbiAgZGVzdHJveShvcHRpb25zOiBEZXN0cm95T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIGNkayBsaXN0XG4gICAqL1xuICBsaXN0KG9wdGlvbnM6IExpc3RPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjZGsgc3ludGggZmFzdFxuICAgKi9cbiAgc3ludGhGYXN0KG9wdGlvbnM6IFN5bnRoRmFzdE9wdGlvbnMpOiB2b2lkO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHN5bnRoaW5nIGFuZCBieXBhc3NpbmcgdGhlIENESyBDTElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aEZhc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHVzZSB0byBleGVjdXRlIHRoZSBhcHAuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBzYW1lIHRoaW5nIHRoYXQgbm9ybWFsbHlcbiAgICogZ2V0cyBwYXNzZWQgdG8gYC0tYXBwYFxuICAgKlxuICAgKiBlLmcuIFwibm9kZSAnYmluL215LWFwcC50cydcIlxuICAgKiBvciAnZ28gcnVuIG1haW4uZ28nXG4gICAqL1xuICByZWFkb25seSBleGVjQ21kOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGludG8gYSBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbnRleHRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gdGhlXG4gICAqIGV4ZWN1dGlvbiBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZW52XG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldFxuICogaW4gdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB0aGF0IHdpbGwgYmUgcnVubmluZ1xuICogdGhlIGNkayBjb21tYW5kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQVdTIENESyBjbGllbnQgdGhhdCBwcm92aWRlcyBhbiBBUEkgdG8gcHJvZ3JhbWF0aWNhbGx5IGV4ZWN1dGUgdGhlIENESyBDTElcbiAqIGJ5IHdyYXBwaW5nIGNhbGxzIHRvIGV4ZWMgdGhlIENMSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0NsaVdyYXBwZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gcnVuIHRoZSBjZGsgY29tbWFuZHMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldFxuICAgKiBpbiB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHRoYXQgd2lsbCBiZSBydW5uaW5nXG4gICAqIHRoZSBjZGsgY29tbWFuZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudiB2YXJzXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBFbnZpcm9ubWVudCxcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGNkayBleGVjdXRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrL2Jpbi9jZGsnXG4gICAqL1xuICByZWFkb25seSBjZGtFeGVjdXRhYmxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIHRoZSBDREsgQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzaG93T3V0cHV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIHByb2dyYW1tYXRpYyBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIENESyBDTEkgYnlcbiAqIHdyYXBwaW5nIHRoZSBDTEkgd2l0aCBleGVjXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtDbGlXcmFwcGVyIGltcGxlbWVudHMgSUNkayB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52PzogRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RrOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd091dHB1dDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtDbGlXcmFwcGVyT3B0aW9ucykge1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gb3B0aW9ucy5kaXJlY3Rvcnk7XG4gICAgdGhpcy5lbnYgPSBvcHRpb25zLmVudjtcbiAgICB0aGlzLnNob3dPdXRwdXQgPSBvcHRpb25zLnNob3dPdXRwdXQgPz8gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2RrID0gb3B0aW9ucy5jZGtFeGVjdXRhYmxlID8/ICdjZGsnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgcGF0aCB0byBjZGsgZXhlY3V0YWJsZTogXCIke29wdGlvbnMuY2RrRXhlY3V0YWJsZSA/PyAnY2RrJ31cImApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBcmdzKG9wdGlvbnM6IERlZmF1bHRDZGtPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnN0YWNrcyAmJiAhb3B0aW9ucy5hbGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb25lIG9mIFwiYXBwXCIgb3IgXCJzdGFja3NcIiBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxpc3Qob3B0aW9uczogTGlzdE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpc3RDb21tYW5kQXJnczogc3RyaW5nW10gPSBbXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdsb25nJywgb3B0aW9ucy5sb25nKSxcbiAgICAgIC4uLnRoaXMuY3JlYXRlRGVmYXVsdEFyZ3VtZW50cyhvcHRpb25zKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGV4ZWMoW3RoaXMuY2RrLCAnbHMnLCAuLi5saXN0Q29tbWFuZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB0aGlzLmVudixcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogY2RrIGRlcGxveVxuICAgKi9cbiAgcHVibGljIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZGVwbG95Q29tbWFuZEFyZ3M6IHN0cmluZ1tdID0gW1xuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnY2knLCBvcHRpb25zLmNpKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2V4ZWN1dGUnLCBvcHRpb25zLmV4ZWN1dGUpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnZXhjbHVzaXZlbHknLCBvcHRpb25zLmV4Y2x1c2l2ZWx5KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2ZvcmNlJywgb3B0aW9ucy5mb3JjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdwcmV2aW91cy1wYXJhbWV0ZXJzJywgb3B0aW9ucy51c2VQcmV2aW91c1BhcmFtZXRlcnMpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygncm9sbGJhY2snLCBvcHRpb25zLnJvbGxiYWNrKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3N0YWdpbmcnLCBvcHRpb25zLnN0YWdpbmcpLFxuICAgICAgLi4ub3B0aW9ucy5yZXVzZUFzc2V0cyA/IHJlbmRlckFycmF5QXJnKCctLXJldXNlLWFzc2V0cycsIG9wdGlvbnMucmV1c2VBc3NldHMpIDogW10sXG4gICAgICAuLi5vcHRpb25zLm5vdGlmaWNhdGlvbkFybnMgPyByZW5kZXJBcnJheUFyZygnLS1ub3RpZmljYXRpb24tYXJucycsIG9wdGlvbnMubm90aWZpY2F0aW9uQXJucykgOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucGFyYW1ldGVycyA/IHJlbmRlck1hcEFycmF5QXJnKCctLXBhcmFtZXRlcnMnLCBvcHRpb25zLnBhcmFtZXRlcnMpIDogW10sXG4gICAgICAuLi5vcHRpb25zLm91dHB1dHNGaWxlID8gWyctLW91dHB1dHMtZmlsZScsIG9wdGlvbnMub3V0cHV0c0ZpbGVdIDogW10sXG4gICAgICAuLi5vcHRpb25zLnJlcXVpcmVBcHByb3ZhbCA/IFsnLS1yZXF1aXJlLWFwcHJvdmFsJywgb3B0aW9ucy5yZXF1aXJlQXBwcm92YWxdIDogW10sXG4gICAgICAuLi5vcHRpb25zLmNoYW5nZVNldE5hbWUgPyBbJy0tY2hhbmdlLXNldC1uYW1lJywgb3B0aW9ucy5jaGFuZ2VTZXROYW1lXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy50b29sa2l0U3RhY2tOYW1lID8gWyctLXRvb2xraXQtc3RhY2stbmFtZScsIG9wdGlvbnMudG9vbGtpdFN0YWNrTmFtZV0gOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucHJvZ3Jlc3MgPyBbJy0tcHJvZ3Jlc3MnLCBvcHRpb25zLnByb2dyZXNzXSA6IFsnLS1wcm9ncmVzcycsIFN0YWNrQWN0aXZpdHlQcm9ncmVzcy5FVkVOVFNdLFxuICAgICAgLi4udGhpcy5jcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnMpLFxuICAgIF07XG5cbiAgICBleGVjKFt0aGlzLmNkaywgJ2RlcGxveScsIC4uLmRlcGxveUNvbW1hbmRBcmdzXSwge1xuICAgICAgY3dkOiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgIHZlcmJvc2U6IHRoaXMuc2hvd091dHB1dCxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY2RrIGRlc3Ryb3lcbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KG9wdGlvbnM6IERlc3Ryb3lPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdHJveUNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2ZvcmNlJywgb3B0aW9ucy5mb3JjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdleGNsdXNpdmVseScsIG9wdGlvbnMuZXhjbHVzaXZlbHkpLFxuICAgICAgLi4udGhpcy5jcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnMpLFxuICAgIF07XG5cbiAgICBleGVjKFt0aGlzLmNkaywgJ2Rlc3Ryb3knLCAuLi5kZXN0cm95Q29tbWFuZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB0aGlzLmVudixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjZGsgc3ludGhcbiAgICovXG4gIHB1YmxpYyBzeW50aChvcHRpb25zOiBTeW50aE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBzeW50aENvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3ZhbGlkYXRpb24nLCBvcHRpb25zLnZhbGlkYXRpb24pLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygncXVpZXQnLCBvcHRpb25zLnF1aWV0KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2V4Y2x1c2l2ZWx5Jywgb3B0aW9ucy5leGNsdXNpdmVseSksXG4gICAgICAuLi50aGlzLmNyZWF0ZURlZmF1bHRBcmd1bWVudHMob3B0aW9ucyksXG4gICAgXTtcblxuICAgIGV4ZWMoW3RoaXMuY2RrLCAnc3ludGgnLCAuLi5zeW50aENvbW1hbmRBcmdzXSwge1xuICAgICAgY3dkOiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgIHZlcmJvc2U6IHRoaXMuc2hvd091dHB1dCxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRG8gYSBDREsgc3ludGgsIG1pbWlja2luZyB0aGUgQ0xJICh3aXRob3V0IGFjdHVhbGx5IHVzaW5nIGl0KVxuICAgKlxuICAgKiBUaGUgQ0xJIGhhcyBhIHByZXR0eSBzbG93IHN0YXJ0dXAgdGltZSBiZWNhdXNlIG9mIGFsbCB0aGUgbW9kdWxlcyBpdCBuZWVkcyB0byBsb2FkLFxuICAgKiBCeXBhc3MgaXQgdG8gYmUgcXVpY2tlciFcbiAgICovXG4gIHB1YmxpYyBzeW50aEZhc3Qob3B0aW9uczogU3ludGhGYXN0T3B0aW9ucyk6IHZvaWQge1xuICAgIGV4ZWMob3B0aW9ucy5leGVjQ21kLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB7XG4gICAgICAgIENES19DT05URVhUX0pTT046IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuY29udGV4dCksXG4gICAgICAgIENES19PVVRESVI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAuLi50aGlzLmVudixcbiAgICAgICAgLi4ub3B0aW9ucy5lbnYsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnM6IERlZmF1bHRDZGtPcHRpb25zKTogc3RyaW5nW10ge1xuICAgIHRoaXMudmFsaWRhdGVBcmdzKG9wdGlvbnMpO1xuICAgIGNvbnN0IHN0YWNrcyA9IG9wdGlvbnMuc3RhY2tzID8/IFtdO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5vcHRpb25zLmFwcCA/IFsnLS1hcHAnLCBvcHRpb25zLmFwcF0gOiBbXSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3N0cmljdCcsIG9wdGlvbnMuc3RyaWN0KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3RyYWNlJywgb3B0aW9ucy50cmFjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdsb29rdXBzJywgb3B0aW9ucy5sb29rdXBzKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2lnbm9yZS1lcnJvcnMnLCBvcHRpb25zLmlnbm9yZUVycm9ycyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdqc29uJywgb3B0aW9ucy5qc29uKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3ZlcmJvc2UnLCBvcHRpb25zLnZlcmJvc2UpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnZGVidWcnLCBvcHRpb25zLmRlYnVnKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2VjMmNyZWRzJywgb3B0aW9ucy5lYzJDcmVkcyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCd2ZXJzaW9uLXJlcG9ydGluZycsIG9wdGlvbnMudmVyc2lvblJlcG9ydGluZyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdwYXRoLW1ldGFkYXRhJywgb3B0aW9ucy5wYXRoTWV0YWRhdGEpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnYXNzZXQtbWV0YWRhdGEnLCBvcHRpb25zLmFzc2V0TWV0YWRhdGEpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnbm90aWNlcycsIG9wdGlvbnMubm90aWNlcyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdjb2xvcicsIG9wdGlvbnMuY29sb3IpLFxuICAgICAgLi4ub3B0aW9ucy5jb250ZXh0ID8gcmVuZGVyTWFwQXJyYXlBcmcoJy0tY29udGV4dCcsIG9wdGlvbnMuY29udGV4dCkgOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucHJvZmlsZSA/IFsnLS1wcm9maWxlJywgb3B0aW9ucy5wcm9maWxlXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5wcm94eSA/IFsnLS1wcm94eScsIG9wdGlvbnMucHJveHldIDogW10sXG4gICAgICAuLi5vcHRpb25zLmNhQnVuZGxlUGF0aCA/IFsnLS1jYS1idW5kbGUtcGF0aCcsIG9wdGlvbnMuY2FCdW5kbGVQYXRoXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5yb2xlQXJuID8gWyctLXJvbGUtYXJuJywgb3B0aW9ucy5yb2xlQXJuXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5vdXRwdXQgPyBbJy0tb3V0cHV0Jywgb3B0aW9ucy5vdXRwdXRdIDogW10sXG4gICAgICAuLi5zdGFja3MsXG4gICAgICAuLi5vcHRpb25zLmFsbCA/IFsnLS1hbGwnXSA6IFtdLFxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyTWFwQXJyYXlBcmcoZmxhZzogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKSkge1xuICAgIHBhcmFtcy5wdXNoKGAke2tleX09JHt2YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gcmVuZGVyQXJyYXlBcmcoZmxhZywgcGFyYW1zKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQXJyYXlBcmcoZmxhZzogc3RyaW5nLCB2YWx1ZXM/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgbGV0IGFyZ3M6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzID8/IFtdKSB7XG4gICAgYXJncy5wdXNoKGZsYWcsIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJncztcbn1cblxuZnVuY3Rpb24gcmVuZGVyQm9vbGVhbkFyZyh2YWw6IHN0cmluZywgYXJnPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgaWYgKGFyZykge1xuICAgIHJldHVybiBbYC0tJHt2YWx9YF07XG4gIH0gZWxzZSBpZiAoYXJnID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gW107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtgLS1uby0ke3ZhbH1gXTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/common.d.ts b/packages/cdk-cli-wrapper/lib/commands/common.d.ts new file mode 100644 index 0000000000000..25a86432d628e --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/common.d.ts @@ -0,0 +1,178 @@ +/** + * In what scenarios should the CLI ask for approval + */ +export declare enum RequireApproval { + /** + * Never ask for approval + */ + NEVER = "never", + /** + * Prompt for approval for any type of change to the stack + */ + ANYCHANGE = "any-change", + /** + * Only prompt for approval if there are security related changes + */ + BROADENING = "broadening" +} +/** + * Default CDK CLI options that apply to all commands + */ +export interface DefaultCdkOptions { + /** + * List of stacks to deploy + * + * Requried if `all` is not set + * + * @default - [] + */ + readonly stacks?: string[]; + /** + * Deploy all stacks + * + * Requried if `stacks` is not set + * + * @default - false + */ + readonly all?: boolean; + /** + * command-line for executing your app or a cloud assembly directory + * e.g. "node bin/my-app.js" + * or + * "cdk.out" + * + * @default - read from cdk.json + */ + readonly app?: string; + /** + * Role to pass to CloudFormation for deployment + * + * @default - use the bootstrap cfn-exec role + */ + readonly roleArn?: string; + /** + * Additional context + * + * @default - no additional context + */ + readonly context?: { + [name: string]: string; + }; + /** + * Print trace for stack warnings + * + * @default false + */ + readonly trace?: boolean; + /** + * Do not construct stacks with warnings + * + * @default false + */ + readonly strict?: boolean; + /** + * Perform context lookups. + * + * Synthesis fails if this is disabled and context lookups need + * to be performed + * + * @default true + */ + readonly lookups?: boolean; + /** + * Ignores synthesis errors, which will likely produce an invalid output + * + * @default false + */ + readonly ignoreErrors?: boolean; + /** + * Use JSON output instead of YAML when templates are printed + * to STDOUT + * + * @default false + */ + readonly json?: boolean; + /** + * show debug logs + * + * @default false + */ + readonly verbose?: boolean; + /** + * enable emission of additional debugging information, such as creation stack + * traces of tokens + * + * @default false + */ + readonly debug?: boolean; + /** + * Use the indicated AWS profile as the default environment + * + * @default - no profile is used + */ + readonly profile?: string; + /** + * Use the indicated proxy. Will read from + * HTTPS_PROXY environment if specified + * + * @default - no proxy + */ + readonly proxy?: string; + /** + * Path to CA certificate to use when validating HTTPS + * requests. + * + * @default - read from AWS_CA_BUNDLE environment variable + */ + readonly caBundlePath?: string; + /** + * Force trying to fetch EC2 instance credentials + * + * @default - guess EC2 instance status + */ + readonly ec2Creds?: boolean; + /** + * Include "AWS::CDK::Metadata" resource in synthesized templates + * + * @default true + */ + readonly versionReporting?: boolean; + /** + * Include "aws:cdk:path" CloudFormation metadata for each resource + * + * @default true + */ + readonly pathMetadata?: boolean; + /** + * Include "aws:asset:*" CloudFormation metadata for resources that use assets + * + * @default true + */ + readonly assetMetadata?: boolean; + /** + * Copy assets to the output directory + * + * Needed for local debugging the source files with SAM CLI + * + * @default false + */ + readonly staging?: boolean; + /** + * Emits the synthesized cloud assembly into a directory + * + * @default cdk.out + */ + readonly output?: string; + /** + * Show relevant notices + * + * @default true + */ + readonly notices?: boolean; + /** + * Show colors and other style from console output + * + * @default true + */ + readonly color?: boolean; +} diff --git a/packages/cdk-cli-wrapper/lib/commands/common.js b/packages/cdk-cli-wrapper/lib/commands/common.js new file mode 100644 index 0000000000000..a9377bcc06ace --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/common.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RequireApproval = void 0; +/** + * In what scenarios should the CLI ask for approval + */ +var RequireApproval; +(function (RequireApproval) { + /** + * Never ask for approval + */ + RequireApproval["NEVER"] = "never"; + /** + * Prompt for approval for any type of change to the stack + */ + RequireApproval["ANYCHANGE"] = "any-change"; + /** + * Only prompt for approval if there are security related changes + */ + RequireApproval["BROADENING"] = "broadening"; +})(RequireApproval = exports.RequireApproval || (exports.RequireApproval = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQWVYO0FBZkQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsa0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsMkNBQXdCLENBQUE7SUFFeEI7O09BRUc7SUFDSCw0Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBZlcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFlMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluIHdoYXQgc2NlbmFyaW9zIHNob3VsZCB0aGUgQ0xJIGFzayBmb3IgYXBwcm92YWxcbiAqL1xuZXhwb3J0IGVudW0gUmVxdWlyZUFwcHJvdmFsIHtcbiAgLyoqXG4gICAqIE5ldmVyIGFzayBmb3IgYXBwcm92YWxcbiAgICovXG4gIE5FVkVSID0gJ25ldmVyJyxcblxuICAvKipcbiAgICogUHJvbXB0IGZvciBhcHByb3ZhbCBmb3IgYW55IHR5cGUgIG9mIGNoYW5nZSB0byB0aGUgc3RhY2tcbiAgICovXG4gIEFOWUNIQU5HRSA9ICdhbnktY2hhbmdlJyxcblxuICAvKipcbiAgICogT25seSBwcm9tcHQgZm9yIGFwcHJvdmFsIGlmIHRoZXJlIGFyZSBzZWN1cml0eSByZWxhdGVkIGNoYW5nZXNcbiAgICovXG4gIEJST0FERU5JTkcgPSAnYnJvYWRlbmluZydcbn1cblxuLyoqXG4gKiBEZWZhdWx0IENESyBDTEkgb3B0aW9ucyB0aGF0IGFwcGx5IHRvIGFsbCBjb21tYW5kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHRvIGRlcGxveVxuICAgKlxuICAgKiBSZXF1cmllZCBpZiBgYWxsYCBpcyBub3Qgc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gW11cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZXBsb3kgYWxsIHN0YWNrc1xuICAgKlxuICAgKiBSZXF1cmllZCBpZiBgc3RhY2tzYCBpcyBub3Qgc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNvbW1hbmQtbGluZSBmb3IgZXhlY3V0aW5nIHlvdXIgYXBwIG9yIGEgY2xvdWQgYXNzZW1ibHkgZGlyZWN0b3J5XG4gICAqIGUuZy4gXCJub2RlIGJpbi9teS1hcHAuanNcIlxuICAgKiBvclxuICAgKiBcImNkay5vdXRcIlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlYWQgZnJvbSBjZGsuanNvblxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuXG5cbiAgLyoqXG4gICAqIFJvbGUgdG8gcGFzcyB0byBDbG91ZEZvcm1hdGlvbiBmb3IgZGVwbG95bWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgYm9vdHN0cmFwIGNmbi1leGVjIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBQcmludCB0cmFjZSBmb3Igc3RhY2sgd2FybmluZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGNvbnN0cnVjdCBzdGFja3Mgd2l0aCB3YXJuaW5nc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGVyZm9ybSBjb250ZXh0IGxvb2t1cHMuXG4gICAqXG4gICAqIFN5bnRoZXNpcyBmYWlscyBpZiB0aGlzIGlzIGRpc2FibGVkIGFuZCBjb250ZXh0IGxvb2t1cHMgbmVlZFxuICAgKiB0byBiZSBwZXJmb3JtZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3Vwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAgKiBJZ25vcmVzIHN5bnRoZXNpcyBlcnJvcnMsIHdoaWNoIHdpbGwgbGlrZWx5IHByb2R1Y2UgYW4gaW52YWxpZCBvdXRwdXRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUVycm9ycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZSBKU09OIG91dHB1dCBpbnN0ZWFkIG9mIFlBTUwgd2hlbiB0ZW1wbGF0ZXMgYXJlIHByaW50ZWRcbiAgICogdG8gU1RET1VUXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBqc29uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBkZWJ1ZyBsb2dzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIGVtaXNzaW9uIG9mIGFkZGl0aW9uYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uLCBzdWNoIGFzIGNyZWF0aW9uIHN0YWNrXG4gICAqIHRyYWNlcyBvZiB0b2tlbnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIHRoZSBpbmRpY2F0ZWQgQVdTIHByb2ZpbGUgYXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm9maWxlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgaW5kaWNhdGVkIHByb3h5LiBXaWxsIHJlYWQgZnJvbVxuICAgKiBIVFRQU19QUk9YWSBlbnZpcm9ubWVudCBpZiBzcGVjaWZpZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gQ0EgY2VydGlmaWNhdGUgdG8gdXNlIHdoZW4gdmFsaWRhdGluZyBIVFRQU1xuICAgKiByZXF1ZXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZWFkIGZyb20gQVdTX0NBX0JVTkRMRSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FCdW5kbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGb3JjZSB0cnlpbmcgdG8gZmV0Y2ggRUMyIGluc3RhbmNlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZ3Vlc3MgRUMyIGluc3RhbmNlIHN0YXR1c1xuICAgKi9cbiAgcmVhZG9ubHkgZWMyQ3JlZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIFwiQVdTOjpDREs6Ok1ldGFkYXRhXCIgcmVzb3VyY2UgaW4gc3ludGhlc2l6ZWQgdGVtcGxhdGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25SZXBvcnRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIFwiYXdzOmNkazpwYXRoXCIgQ2xvdWRGb3JtYXRpb24gbWV0YWRhdGEgZm9yIGVhY2ggcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBcImF3czphc3NldDoqXCIgQ2xvdWRGb3JtYXRpb24gbWV0YWRhdGEgZm9yIHJlc291cmNlcyB0aGF0IHVzZSBhc3NldHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvcHkgYXNzZXRzIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIE5lZWRlZCBmb3IgbG9jYWwgZGVidWdnaW5nIHRoZSBzb3VyY2UgZmlsZXMgd2l0aCBTQU0gQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGludG8gYSBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHJlbGV2YW50IG5vdGljZXNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgY29sb3JzIGFuZCBvdGhlciBzdHlsZSBmcm9tIGNvbnNvbGUgb3V0cHV0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogYm9vbGVhbjtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts b/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts new file mode 100644 index 0000000000000..ea46aa88ee335 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts @@ -0,0 +1,109 @@ +import { DefaultCdkOptions, RequireApproval } from './common'; +/** + * Options to use with cdk deploy + */ +export interface DeployOptions extends DefaultCdkOptions { + /** + * Only perform action on the given stack + * + * @default false + */ + readonly exclusively?: boolean; + /** + * Name of the toolkit stack to use/deploy + * + * @default CDKToolkit + */ + readonly toolkitStackName?: string; + /** + * Reuse the assets with the given asset IDs + * + * @default - do not reuse assets + */ + readonly reuseAssets?: string[]; + /** + * Optional name to use for the CloudFormation change set. + * If not provided, a name will be generated automatically. + * + * @default - auto generate a name + */ + readonly changeSetName?: string; + /** + * Always deploy, even if templates are identical. + * @default false + */ + readonly force?: boolean; + /** + * Rollback failed deployments + * + * @default true + */ + readonly rollback?: boolean; + /** + * ARNs of SNS topics that CloudFormation will notify with stack related events + * + * @default - no notifications + */ + readonly notificationArns?: string[]; + /** + * What kind of security changes require approval + * + * @default RequireApproval.Never + */ + readonly requireApproval?: RequireApproval; + /** + * Whether to execute the ChangeSet + * Not providing `execute` parameter will result in execution of ChangeSet + * @default true + */ + readonly execute?: boolean; + /** + * Additional parameters for CloudFormation at deploy time + * @default {} + */ + readonly parameters?: { + [name: string]: string; + }; + /** + * Use previous values for unspecified parameters + * + * If not set, all parameters must be specified for every deployment. + * + * @default true + */ + readonly usePreviousParameters?: boolean; + /** + * Path to file where stack outputs will be written after a successful deploy as JSON + * @default - Outputs are not written to any file + */ + readonly outputsFile?: string; + /** + * Whether we are on a CI system + * + * @default false + */ + readonly ci?: boolean; + /** + * Display mode for stack activity events + * + * The default in the CLI is StackActivityProgress.BAR, but + * since the cli-wrapper will most likely be run in automation it makes + * more sense to set the default to StackActivityProgress.EVENTS + * + * @default StackActivityProgress.EVENTS + */ + readonly progress?: StackActivityProgress; +} +/** + * Supported display modes for stack deployment activity + */ +export declare enum StackActivityProgress { + /** + * Displays a progress bar with only the events for the resource currently being deployed + */ + BAR = "bar", + /** + * Displays complete history with all CloudFormation stack events + */ + EVENTS = "events" +} diff --git a/packages/cdk-cli-wrapper/lib/commands/deploy.js b/packages/cdk-cli-wrapper/lib/commands/deploy.js new file mode 100644 index 0000000000000..e0899dfc397ec --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/deploy.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StackActivityProgress = void 0; +/** + * Supported display modes for stack deployment activity + */ +var StackActivityProgress; +(function (StackActivityProgress) { + /** + * Displays a progress bar with only the events for the resource currently being deployed + */ + StackActivityProgress["BAR"] = "bar"; + /** + * Displays complete history with all CloudFormation stack events + */ + StackActivityProgress["EVENTS"] = "events"; +})(StackActivityProgress = exports.StackActivityProgress || (exports.StackActivityProgress = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVwbG95LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZHQTs7R0FFRztBQUNILElBQVkscUJBVVg7QUFWRCxXQUFZLHFCQUFxQjtJQUMvQjs7T0FFRztJQUNILG9DQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDBDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQVVoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zLCBSZXF1aXJlQXBwcm92YWwgfSBmcm9tICcuL2NvbW1vbic7XG5cbi8qKlxuICogT3B0aW9ucyB0byB1c2Ugd2l0aCBjZGsgZGVwbG95XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95T3B0aW9ucyBleHRlbmRzIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9ubHkgcGVyZm9ybSBhY3Rpb24gb24gdGhlIGdpdmVuIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGNsdXNpdmVseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRvb2xraXQgc3RhY2sgdG8gdXNlL2RlcGxveVxuICAgKlxuICAgKiBAZGVmYXVsdCBDREtUb29sa2l0XG4gICAqL1xuICByZWFkb25seSB0b29sa2l0U3RhY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXVzZSB0aGUgYXNzZXRzIHdpdGggdGhlIGdpdmVuIGFzc2V0IElEc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvIG5vdCByZXVzZSBhc3NldHNcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlQXNzZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gY2hhbmdlIHNldC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlIGEgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWx3YXlzIGRlcGxveSwgZXZlbiBpZiB0ZW1wbGF0ZXMgYXJlIGlkZW50aWNhbC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUm9sbGJhY2sgZmFpbGVkIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQVJOcyBvZiBTTlMgdG9waWNzIHRoYXQgQ2xvdWRGb3JtYXRpb24gd2lsbCBub3RpZnkgd2l0aCBzdGFjayByZWxhdGVkIGV2ZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hhdCBraW5kIG9mIHNlY3VyaXR5IGNoYW5nZXMgcmVxdWlyZSBhcHByb3ZhbFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZXF1aXJlQXBwcm92YWwuTmV2ZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVBcHByb3ZhbD86IFJlcXVpcmVBcHByb3ZhbDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBleGVjdXRlIHRoZSBDaGFuZ2VTZXRcbiAgICogTm90IHByb3ZpZGluZyBgZXhlY3V0ZWAgcGFyYW1ldGVyIHdpbGwgcmVzdWx0IGluIGV4ZWN1dGlvbiBvZiBDaGFuZ2VTZXRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgQ2xvdWRGb3JtYXRpb24gYXQgZGVwbG95IHRpbWVcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVXNlIHByZXZpb3VzIHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBJZiBub3Qgc2V0LCBhbGwgcGFyYW1ldGVycyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgZXZlcnkgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUHJldmlvdXNQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0aCB0byBmaWxlIHdoZXJlIHN0YWNrIG91dHB1dHMgd2lsbCBiZSB3cml0dGVuIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkZXBsb3kgYXMgSlNPTlxuICAgKiBAZGVmYXVsdCAtIE91dHB1dHMgYXJlIG5vdCB3cml0dGVuIHRvIGFueSBmaWxlXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB3ZSBhcmUgb24gYSBDSSBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheSBtb2RlIGZvciBzdGFjayBhY3Rpdml0eSBldmVudHNcbiAgICpcbiAgICogVGhlIGRlZmF1bHQgaW4gdGhlIENMSSBpcyBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQkFSLCBidXRcbiAgICogc2luY2UgdGhlIGNsaS13cmFwcGVyIHdpbGwgbW9zdCBsaWtlbHkgYmUgcnVuIGluIGF1dG9tYXRpb24gaXQgbWFrZXNcbiAgICogbW9yZSBzZW5zZSB0byBzZXQgdGhlIGRlZmF1bHQgdG8gU3RhY2tBY3Rpdml0eVByb2dyZXNzLkVWRU5UU1xuICAgKlxuICAgKiBAZGVmYXVsdCBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuRVZFTlRTXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzcz86IFN0YWNrQWN0aXZpdHlQcm9ncmVzcztcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgZGlzcGxheSBtb2RlcyBmb3Igc3RhY2sgZGVwbG95bWVudCBhY3Rpdml0eVxuICovXG5leHBvcnQgZW51bSBTdGFja0FjdGl2aXR5UHJvZ3Jlc3Mge1xuICAvKipcbiAgICogRGlzcGxheXMgYSBwcm9ncmVzcyBiYXIgd2l0aCBvbmx5IHRoZSBldmVudHMgZm9yIHRoZSByZXNvdXJjZSBjdXJyZW50bHkgYmVpbmcgZGVwbG95ZWRcbiAgICovXG4gIEJBUiA9ICdiYXInLFxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBjb21wbGV0ZSBoaXN0b3J5IHdpdGggYWxsIENsb3VkRm9ybWF0aW9uIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgRVZFTlRTID0gJ2V2ZW50cycsXG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts b/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts new file mode 100644 index 0000000000000..d981fba122309 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts @@ -0,0 +1,18 @@ +import { DefaultCdkOptions } from './common'; +/** + * Options to use with cdk destroy + */ +export interface DestroyOptions extends DefaultCdkOptions { + /** + * Do not ask for permission before destroying stacks + * + * @default false + */ + readonly force?: boolean; + /** + * Only destroy the given stack + * + * @default false + */ + readonly exclusively?: boolean; +} diff --git a/packages/cdk-cli-wrapper/lib/commands/destroy.js b/packages/cdk-cli-wrapper/lib/commands/destroy.js new file mode 100644 index 0000000000000..cc24c854836f0 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/destroy.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlc3Ryb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gdXNlIHdpdGggY2RrIGRlc3Ryb3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95T3B0aW9ucyBleHRlbmRzIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIERvIG5vdCBhc2sgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGRlc3Ryb3lpbmcgc3RhY2tzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgZGVzdHJveSB0aGUgZ2l2ZW4gc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1c2l2ZWx5PzogYm9vbGVhbjtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/index.d.ts b/packages/cdk-cli-wrapper/lib/commands/index.d.ts new file mode 100644 index 0000000000000..33e0e77569a92 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/index.d.ts @@ -0,0 +1,5 @@ +export * from './synth'; +export * from './common'; +export * from './deploy'; +export * from './destroy'; +export * from './list'; diff --git a/packages/cdk-cli-wrapper/lib/commands/index.js b/packages/cdk-cli-wrapper/lib/commands/index.js new file mode 100644 index 0000000000000..a9b8ec15dca49 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./synth"), exports); +__exportStar(require("./common"), exports); +__exportStar(require("./deploy"), exports); +__exportStar(require("./destroy"), exports); +__exportStar(require("./list"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIseUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zeW50aCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2RlcGxveSc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc3Ryb3knO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0JztcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/list.d.ts b/packages/cdk-cli-wrapper/lib/commands/list.d.ts new file mode 100644 index 0000000000000..acc752155affb --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/list.d.ts @@ -0,0 +1,12 @@ +import { DefaultCdkOptions } from './common'; +/** + * Options for cdk list + */ +export interface ListOptions extends DefaultCdkOptions { + /** + *Display environment information for each stack + * + * @default false + */ + readonly long?: boolean; +} diff --git a/packages/cdk-cli-wrapper/lib/commands/list.js b/packages/cdk-cli-wrapper/lib/commands/list.js new file mode 100644 index 0000000000000..0912bb75d266f --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/list.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNkayBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnMgZXh0ZW5kcyBEZWZhdWx0Q2RrT3B0aW9ucyB7XG4gIC8qKlxuICAgKkRpc3BsYXkgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24gZm9yIGVhY2ggc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxvbmc/OiBib29sZWFuO1xufVxuIl19 \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/synth.d.ts b/packages/cdk-cli-wrapper/lib/commands/synth.d.ts new file mode 100644 index 0000000000000..16a66236889d4 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/synth.d.ts @@ -0,0 +1,24 @@ +import { DefaultCdkOptions } from './common'; +/** + * Options to use with cdk synth + */ +export interface SynthOptions extends DefaultCdkOptions { + /** + * After synthesis, validate stacks with the "validateOnSynth" + * attribute set (can also be controlled with CDK_VALIDATION) + * + * @default true; + */ + readonly validation?: boolean; + /** + * Do not output CloudFormation Template to stdout + * @default false; + */ + readonly quiet?: boolean; + /** + * Only synthesize the given stack + * + * @default false + */ + readonly exclusively?: boolean; +} diff --git a/packages/cdk-cli-wrapper/lib/commands/synth.js b/packages/cdk-cli-wrapper/lib/commands/synth.js new file mode 100644 index 0000000000000..c8a5cc4d5430f --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/commands/synth.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzeW50aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENka09wdGlvbnMgfSBmcm9tICcuL2NvbW1vbic7XG5cbi8qKlxuICogT3B0aW9ucyB0byB1c2Ugd2l0aCBjZGsgc3ludGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aE9wdGlvbnMgZXh0ZW5kcyBEZWZhdWx0Q2RrT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIEFmdGVyIHN5bnRoZXNpcywgdmFsaWRhdGUgc3RhY2tzIHdpdGggdGhlIFwidmFsaWRhdGVPblN5bnRoXCJcbiAgICogYXR0cmlidXRlIHNldCAoY2FuIGFsc28gYmUgY29udHJvbGxlZCB3aXRoIENES19WQUxJREFUSU9OKVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlO1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBvdXRwdXQgQ2xvdWRGb3JtYXRpb24gVGVtcGxhdGUgdG8gc3Rkb3V0XG4gICAqIEBkZWZhdWx0IGZhbHNlO1xuICAgKi9cbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPbmx5IHN5bnRoZXNpemUgdGhlIGdpdmVuIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGNsdXNpdmVseT86IGJvb2xlYW47XG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/index.d.ts b/packages/cdk-cli-wrapper/lib/index.d.ts new file mode 100644 index 0000000000000..a7ee3249f4cbe --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/index.d.ts @@ -0,0 +1,2 @@ +export * from './cdk-wrapper'; +export * from './commands'; diff --git a/packages/cdk-cli-wrapper/lib/index.js b/packages/cdk-cli-wrapper/lib/index.js new file mode 100644 index 0000000000000..290551246d018 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./cdk-wrapper"), exports); +__exportStar(require("./commands"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxnREFBOEI7QUFDOUIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jZGstd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzJztcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/utils.d.ts b/packages/cdk-cli-wrapper/lib/utils.d.ts new file mode 100644 index 0000000000000..1b087b5d46a9a --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/utils.d.ts @@ -0,0 +1,9 @@ +/** + * Our own execute function which doesn't use shells and strings. + */ +export declare function exec(commandLine: string[], options?: { + cwd?: string; + json?: boolean; + verbose?: boolean; + env?: any; +}): any; diff --git a/packages/cdk-cli-wrapper/lib/utils.js b/packages/cdk-cli-wrapper/lib/utils.js new file mode 100644 index 0000000000000..942a038fb0407 --- /dev/null +++ b/packages/cdk-cli-wrapper/lib/utils.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.exec = void 0; +// Helper functions for CDK Exec +const child_process_1 = require("child_process"); +/** + * Our own execute function which doesn't use shells and strings. + */ +function exec(commandLine, options = {}) { + const proc = child_process_1.spawnSync(commandLine[0], commandLine.slice(1), { + stdio: ['ignore', 'pipe', options.verbose ? 'inherit' : 'pipe'], + env: { + ...process.env, + ...options.env, + }, + cwd: options.cwd, + }); + if (proc.error) { + throw proc.error; + } + if (proc.status !== 0) { + if (process.stderr) { // will be 'null' in verbose mode + process.stderr.write(proc.stderr); + } + throw new Error(`Command exited with ${proc.status ? `status ${proc.status}` : `signal ${proc.signal}`}`); + } + const output = proc.stdout.toString('utf-8').trim(); + try { + if (options.json) { + if (output.length === 0) { + return {}; + } + return JSON.parse(output); + } + return output; + } + catch (e) { + // eslint-disable-next-line no-console + console.error('Not JSON: ' + output); + throw new Error('Command output is not JSON'); + } +} +exports.exec = exec; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQ0FBZ0M7QUFDaEMsaURBQTBDO0FBRTFDOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLFdBQXFCLEVBQUUsVUFBMEUsRUFBRztJQUN2SCxNQUFNLElBQUksR0FBRyx5QkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNELEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0QsR0FBRyxFQUFFO1lBQ0gsR0FBRyxPQUFPLENBQUMsR0FBRztZQUNkLEdBQUcsT0FBTyxDQUFDLEdBQUc7U0FDZjtRQUNELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztLQUNqQixDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUM7S0FBRTtJQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLGlDQUFpQztZQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzNHO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFcEQsSUFBSTtRQUNGLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUFFLE9BQU8sRUFBRSxDQUFDO2FBQUU7WUFFdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1Ysc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUM7QUFoQ0Qsb0JBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgQ0RLIEV4ZWNcbmltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG4vKipcbiAqIE91ciBvd24gZXhlY3V0ZSBmdW5jdGlvbiB3aGljaCBkb2Vzbid0IHVzZSBzaGVsbHMgYW5kIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNvbW1hbmRMaW5lOiBzdHJpbmdbXSwgb3B0aW9uczogeyBjd2Q/OiBzdHJpbmcsIGpzb24/OiBib29sZWFuLCB2ZXJib3NlPzogYm9vbGVhbiwgZW52PzogYW55IH0gPSB7IH0pOiBhbnkge1xuICBjb25zdCBwcm9jID0gc3Bhd25TeW5jKGNvbW1hbmRMaW5lWzBdLCBjb21tYW5kTGluZS5zbGljZSgxKSwge1xuICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgb3B0aW9ucy52ZXJib3NlID8gJ2luaGVyaXQnIDogJ3BpcGUnXSwgLy8gaW5oZXJpdCBTVERFUlIgaW4gdmVyYm9zZSBtb2RlXG4gICAgZW52OiB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIC4uLm9wdGlvbnMuZW52LFxuICAgIH0sXG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgfSk7XG5cbiAgaWYgKHByb2MuZXJyb3IpIHsgdGhyb3cgcHJvYy5lcnJvcjsgfVxuICBpZiAocHJvYy5zdGF0dXMgIT09IDApIHtcbiAgICBpZiAocHJvY2Vzcy5zdGRlcnIpIHsgLy8gd2lsbCBiZSAnbnVsbCcgaW4gdmVyYm9zZSBtb2RlXG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShwcm9jLnN0ZGVycik7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWFuZCBleGl0ZWQgd2l0aCAke3Byb2Muc3RhdHVzID8gYHN0YXR1cyAke3Byb2Muc3RhdHVzfWAgOiBgc2lnbmFsICR7cHJvYy5zaWduYWx9YH1gKTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IHByb2Muc3Rkb3V0LnRvU3RyaW5nKCd1dGYtOCcpLnRyaW0oKTtcblxuICB0cnkge1xuICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgIGlmIChvdXRwdXQubGVuZ3RoID09PSAwKSB7IHJldHVybiB7fTsgfVxuXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKCdOb3QgSlNPTjogJyArIG91dHB1dCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG91dHB1dCBpcyBub3QgSlNPTicpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts new file mode 100644 index 0000000000000..cb0ff5c3b541f --- /dev/null +++ b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js new file mode 100644 index 0000000000000..768822b56a363 --- /dev/null +++ b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js @@ -0,0 +1,408 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const child_process = require("child_process"); +const cdk_wrapper_1 = require("../lib/cdk-wrapper"); +const commands_1 = require("../lib/commands"); +let spawnSyncMock; +beforeEach(() => { + spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ + status: 0, + stderr: Buffer.from('stderr'), + stdout: Buffer.from('stdout'), + pid: 123, + output: ['stdout', 'stderr'], + signal: null, + }); +}); +afterEach(() => { + jest.resetAllMocks(); + jest.restoreAllMocks(); + jest.clearAllMocks(); +}); +test('default deploy', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['deploy', '--progress', 'events', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ + env: expect.anything(), + cwd: '/project', + })); +}); +test('deploy with all arguments', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + ci: false, + json: true, + color: false, + debug: false, + force: true, + proxy: 'https://proxy', + trace: false, + output: 'cdk.out', + strict: false, + execute: true, + lookups: false, + notices: true, + profile: 'my-profile', + roleArn: 'arn:aws:iam::1111111111:role/my-role', + staging: false, + verbose: true, + ec2Creds: true, + rollback: false, + exclusively: true, + outputsFile: 'outputs.json', + reuseAssets: [ + 'asset1234', + 'asset5678', + ], + caBundlePath: '/some/path', + ignoreErrors: false, + pathMetadata: false, + assetMetadata: true, + changeSetName: 'my-change-set', + requireApproval: commands_1.RequireApproval.NEVER, + toolkitStackName: 'Toolkit', + versionReporting: true, + usePreviousParameters: true, + progress: commands_1.StackActivityProgress.BAR, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), expect.arrayContaining([ + 'deploy', + '--no-strict', + '--no-trace', + '--no-lookups', + '--no-ignore-errors', + '--json', + '--verbose', + '--no-debug', + '--ec2creds', + '--version-reporting', + '--no-path-metadata', + '--asset-metadata', + '--notices', + '--no-color', + '--profile', 'my-profile', + '--proxy', 'https://proxy', + '--ca-bundle-path', '/some/path', + '--role-arn', 'arn:aws:iam::1111111111:role/my-role', + '--output', 'cdk.out', + '--no-ci', + '--execute', + '--exclusively', + '--force', + '--no-rollback', + '--no-staging', + '--reuse-assets', 'asset1234', + '--reuse-assets', 'asset5678', + '--outputs-file', 'outputs.json', + '--require-approval', 'never', + '--change-set-name', 'my-change-set', + '--toolkit-stack-name', 'Toolkit', + '--previous-parameters', + '--progress', 'bar', + '--app', + 'node bin/my-app.js', + 'test-stack1', + ]), expect.objectContaining({ + env: expect.anything(), + stdio: ['ignore', 'pipe', 'pipe'], + cwd: '/project', + })); +}); +test('can parse boolean arguments', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + json: true, + color: false, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ + 'deploy', + '--progress', 'events', + '--app', + 'node bin/my-app.js', + '--json', + '--no-color', + 'test-stack1', + ], expect.objectContaining({ + env: expect.anything(), + stdio: ['ignore', 'pipe', 'pipe'], + cwd: '/project', + })); +}); +test('can parse parameters', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + parameters: { + 'myparam': 'test', + 'test-stack1:myotherparam': 'test', + }, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ + 'deploy', + '--parameters', 'myparam=test', + '--parameters', 'test-stack1:myotherparam=test', + '--progress', 'events', + '--app', + 'node bin/my-app.js', + 'test-stack1', + ], expect.objectContaining({ + env: expect.anything(), + cwd: '/project', + })); +}); +test('can parse context', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + context: { + 'myContext': 'value', + 'test-stack1:OtherContext': 'otherValue', + }, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ + 'deploy', + '--progress', 'events', + '--app', + 'node bin/my-app.js', + '--context', 'myContext=value', + '--context', 'test-stack1:OtherContext=otherValue', + 'test-stack1', + ], expect.objectContaining({ + env: expect.anything(), + cwd: '/project', + })); +}); +test('can parse array arguments', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + notificationArns: [ + 'arn:aws:us-east-1:1111111111:some:resource', + 'arn:aws:us-east-1:1111111111:some:other-resource', + ], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ + 'deploy', + '--notification-arns', 'arn:aws:us-east-1:1111111111:some:resource', + '--notification-arns', 'arn:aws:us-east-1:1111111111:some:other-resource', + '--progress', 'events', + '--app', + 'node bin/my-app.js', + 'test-stack1', + ], expect.objectContaining({ + env: expect.anything(), + cwd: '/project', + })); +}); +test('can provide additional environment', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.deploy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['deploy', '--progress', 'events', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); +}); +test('default synth', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.synth({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['synth', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); +}); +test('synth arguments', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.destroy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['destroy', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); +}); +test('destroy arguments', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.destroy({ + app: 'node bin/my-app.js', + stacks: ['test-stack1'], + force: true, + exclusively: false, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['destroy', '--force', '--no-exclusively', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); +}); +test('default ls', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.list({ + app: 'node bin/my-app.js', + stacks: ['*'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['ls', '--app', 'node bin/my-app.js', '*'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); +}); +test('ls arguments', () => { + // WHEN + spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ + status: 0, + stderr: Buffer.from('stderr'), + stdout: Buffer.from('test-stack1\ntest-stack2'), + pid: 123, + output: ['stdout', 'stderr'], + signal: null, + }); + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + const list = cdk.list({ + app: 'node bin/my-app.js', + stacks: ['*'], + long: true, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['ls', '--long', '--app', 'node bin/my-app.js', '*'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + }), + cwd: '/project', + })); + expect(list).toEqual('test-stack1\ntest-stack2'); +}); +test('can synth fast', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + env: { + KEY: 'value', + }, + }); + cdk.synthFast({ + execCmd: ['node', 'bin/my-app.js'], + output: 'cdk.output', + env: { + OTHERKEY: 'othervalue', + }, + context: { + CONTEXT: 'value', + }, + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith('node', ['bin/my-app.js'], expect.objectContaining({ + env: expect.objectContaining({ + KEY: 'value', + OTHERKEY: 'othervalue', + CDK_OUTDIR: 'cdk.output', + CDK_CONTEXT_JSON: '{\"CONTEXT\":\"value\"}', + }), + cwd: '/project', + })); +}); +test('can show output', () => { + // WHEN + const cdk = new cdk_wrapper_1.CdkCliWrapper({ + directory: '/project', + showOutput: true, + }); + cdk.synthFast({ + execCmd: ['node', 'bin/my-app.js'], + }); + // THEN + expect(spawnSyncMock).toHaveBeenCalledWith('node', ['bin/my-app.js'], expect.objectContaining({ + env: expect.anything(), + stdio: ['ignore', 'pipe', 'inherit'], + cwd: '/project', + })); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXdyYXBwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay13cmFwcGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBK0M7QUFDL0Msb0RBQW1EO0FBQ25ELDhDQUF5RTtBQUN6RSxJQUFJLGFBQStCLENBQUM7QUFFcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFDckUsTUFBTSxFQUFFLENBQUM7UUFDVCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEdBQUcsRUFBRSxHQUFHO1FBQ1IsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUM1QixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUMxQixPQUFPO0lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBYSxDQUFDO1FBQzVCLFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUMsQ0FBQztJQUNILEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDVCxHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUN4QixDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLG9CQUFv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LENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLG9CQUFvQixDQUN4QyxNQUFNLEVBQ04sQ0FBQyxlQUFlLENBQUMsRUFDakIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3RCLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ3RCLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLEdBQUcsRUFBRSxVQUFVO0tBQ2hCLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgQ2RrQ2xpV3JhcHBlciB9IGZyb20gJy4uL2xpYi9jZGstd3JhcHBlcic7XG5pbXBvcnQgeyBSZXF1aXJlQXBwcm92YWwsIFN0YWNrQWN0aXZpdHlQcm9ncmVzcyB9IGZyb20gJy4uL2xpYi9jb21tYW5kcyc7XG5sZXQgc3Bhd25TeW5jTW9jazogamVzdC5TcHlJbnN0YW5jZTtcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIHNwYXduU3luY01vY2sgPSBqZXN0LnNweU9uKGNoaWxkX3Byb2Nlc3MsICdzcGF3blN5bmMnKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgIHN0YXR1czogMCxcbiAgICBzdGRlcnI6IEJ1ZmZlci5mcm9tKCdzdGRlcnInKSxcbiAgICBzdGRvdXQ6IEJ1ZmZlci5mcm9tKCdzdGRvdXQnKSxcbiAgICBwaWQ6IDEyMyxcbiAgICBvdXRwdXQ6IFsnc3Rkb3V0JywgJ3N0ZGVyciddLFxuICAgIHNpZ25hbDogbnVsbCxcbiAgfSk7XG59KTtcblxuYWZ0ZXJFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG4gIGplc3QuY2xlYXJBbGxNb2NrcygpO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQgZGVwbG95JywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVwbG95JywgJy0tcHJvZ3Jlc3MnLCAnZXZlbnRzJywgJy0tYXBwJywgJ25vZGUgYmluL215LWFwcC5qcycsICd0ZXN0LXN0YWNrMSddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVwbG95IHdpdGggYWxsIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgICBjaTogZmFsc2UsXG4gICAganNvbjogdHJ1ZSxcbiAgICBjb2xvcjogZmFsc2UsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIGZvcmNlOiB0cnVlLFxuICAgIHByb3h5OiAnaHR0cHM6Ly9wcm94eScsXG4gICAgdHJhY2U6IGZhbHNlLFxuICAgIG91dHB1dDogJ2Nkay5vdXQnLFxuICAgIHN0cmljdDogZmFsc2UsXG4gICAgZXhlY3V0ZTogdHJ1ZSxcbiAgICBsb29rdXBzOiBmYWxzZSxcbiAgICBub3RpY2VzOiB0cnVlLFxuICAgIHByb2ZpbGU6ICdteS1wcm9maWxlJyxcbiAgICByb2xlQXJuOiAnYXJuOmF3czppYW06OjExMTExMTExMTE6cm9sZS9teS1yb2xlJyxcbiAgICBzdGFnaW5nOiBmYWxzZSxcbiAgICB2ZXJib3NlOiB0cnVlLFxuICAgIGVjMkNyZWRzOiB0cnVlLFxuICAgIHJvbGxiYWNrOiBmYWxzZSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBvdXRwdXRzRmlsZTogJ291dHB1dHMuanNvbicsXG4gICAgcmV1c2VBc3NldHM6IFtcbiAgICAgICdhc3NldDEyMzQnLFxuICAgICAgJ2Fzc2V0NTY3OCcsXG4gICAgXSxcbiAgICBjYUJ1bmRsZVBhdGg6ICcvc29tZS9wYXRoJyxcbiAgICBpZ25vcmVFcnJvcnM6IGZhbHNlLFxuICAgIHBhdGhNZXRhZGF0YTogZmFsc2UsXG4gICAgYXNzZXRNZXRhZGF0YTogdHJ1ZSxcbiAgICBjaGFuZ2VTZXROYW1lOiAnbXktY2hhbmdlLXNldCcsXG4gICAgcmVxdWlyZUFwcHJvdmFsOiBSZXF1aXJlQXBwcm92YWwuTkVWRVIsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogJ1Rvb2xraXQnLFxuICAgIHZlcnNpb25SZXBvcnRpbmc6IHRydWUsXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICAgIHByb2dyZXNzOiBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQkFSLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW1xuICAgICAgJ2RlcGxveScsXG4gICAgICAnLS1uby1zdHJpY3QnLFxuICAgICAgJy0tbm8tdHJhY2UnLFxuICAgICAgJy0tbm8tbG9va3VwcycsXG4gICAgICAnLS1uby1pZ25vcmUtZXJyb3JzJyxcbiAgICAgICctLWpzb24nLFxuICAgICAgJy0tdmVyYm9zZScsXG4gICAgICAnLS1uby1kZWJ1ZycsXG4gICAgICAnLS1lYzJjcmVkcycsXG4gICAgICAnLS12ZXJzaW9uLXJlcG9ydGluZycsXG4gICAgICAnLS1uby1wYXRoLW1ldGFkYXRhJyxcbiAgICAgICctLWFzc2V0LW1ldGFkYXRhJyxcbiAgICAgICctLW5vdGljZXMnLFxuICAgICAgJy0tbm8tY29sb3InLFxuICAgICAgJy0tcHJvZmlsZScsICdteS1wcm9maWxlJyxcbiAgICAgICctLXByb3h5JywgJ2h0dHBzOi8vcHJveHknLFxuICAgICAgJy0tY2EtYnVuZGxlLXBhdGgnLCAnL3NvbWUvcGF0aCcsXG4gICAgICAnLS1yb2xlLWFybicsICdhcm46YXdzOmlhbTo6MTExMTExMTExMTpyb2xlL215LXJvbGUnLFxuICAgICAgJy0tb3V0cHV0JywgJ2Nkay5vdXQnLFxuICAgICAgJy0tbm8tY2knLFxuICAgICAgJy0tZXhlY3V0ZScsXG4gICAgICAnLS1leGNsdXNpdmVseScsXG4gICAgICAnLS1mb3JjZScsXG4gICAgICAnLS1uby1yb2xsYmFjaycsXG4gICAgICAnLS1uby1zdGFnaW5nJyxcbiAgICAgICctLXJldXNlLWFzc2V0cycsICdhc3NldDEyMzQnLFxuICAgICAgJy0tcmV1c2UtYXNzZXRzJywgJ2Fzc2V0NTY3OCcsXG4gICAgICAnLS1vdXRwdXRzLWZpbGUnLCAnb3V0cHV0cy5qc29uJyxcbiAgICAgICctLXJlcXVpcmUtYXBwcm92YWwnLCAnbmV2ZXInLFxuICAgICAgJy0tY2hhbmdlLXNldC1uYW1lJywgJ215LWNoYW5nZS1zZXQnLFxuICAgICAgJy0tdG9vbGtpdC1zdGFjay1uYW1lJywgJ1Rvb2xraXQnLFxuICAgICAgJy0tcHJldmlvdXMtcGFyYW1ldGVycycsXG4gICAgICAnLS1wcm9ncmVzcycsICdiYXInLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxJyxcbiAgICBdKSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBib29sZWFuIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgICBqc29uOiB0cnVlLFxuICAgIGNvbG9yOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbXG4gICAgICAnZGVwbG95JyxcbiAgICAgICctLXByb2dyZXNzJywgJ2V2ZW50cycsXG4gICAgICAnLS1hcHAnLFxuICAgICAgJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgICAnLS1qc29uJyxcbiAgICAgICctLW5vLWNvbG9yJyxcbiAgICAgICd0ZXN0LXN0YWNrMScsXG4gICAgXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBwYXJhbWV0ZXJzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICdteXBhcmFtJzogJ3Rlc3QnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxOm15b3RoZXJwYXJhbSc6ICd0ZXN0JyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFtcbiAgICAgICdkZXBsb3knLFxuICAgICAgJy0tcGFyYW1ldGVycycsICdteXBhcmFtPXRlc3QnLFxuICAgICAgJy0tcGFyYW1ldGVycycsICd0ZXN0LXN0YWNrMTpteW90aGVycGFyYW09dGVzdCcsXG4gICAgICAnLS1wcm9ncmVzcycsICdldmVudHMnLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxJyxcbiAgICBdLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnY2FuIHBhcnNlIGNvbnRleHQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgfSk7XG4gIGNkay5kZXBsb3koe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgY29udGV4dDoge1xuICAgICAgJ215Q29udGV4dCc6ICd2YWx1ZScsXG4gICAgICAndGVzdC1zdGFjazE6T3RoZXJDb250ZXh0JzogJ290aGVyVmFsdWUnLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNwYXduU3luY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZygvY2RrLyksXG4gICAgW1xuICAgICAgJ2RlcGxveScsXG4gICAgICAnLS1wcm9ncmVzcycsICdldmVudHMnLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJy0tY29udGV4dCcsICdteUNvbnRleHQ9dmFsdWUnLFxuICAgICAgJy0tY29udGV4dCcsICd0ZXN0LXN0YWNrMTpPdGhlckNvbnRleHQ9b3RoZXJWYWx1ZScsXG4gICAgICAndGVzdC1zdGFjazEnLFxuICAgIF0sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2UgYXJyYXkgYXJndW1lbnRzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICAgIG5vdGlmaWNhdGlvbkFybnM6IFtcbiAgICAgICdhcm46YXdzOnVzLWVhc3QtMToxMTExMTExMTExOnNvbWU6cmVzb3VyY2UnLFxuICAgICAgJ2Fybjphd3M6dXMtZWFzdC0xOjExMTExMTExMTE6c29tZTpvdGhlci1yZXNvdXJjZScsXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbXG4gICAgICAnZGVwbG95JyxcbiAgICAgICctLW5vdGlmaWNhdGlvbi1hcm5zJywgJ2Fybjphd3M6dXMtZWFzdC0xOjExMTExMTExMTE6c29tZTpyZXNvdXJjZScsXG4gICAgICAnLS1ub3RpZmljYXRpb24tYXJucycsICdhcm46YXdzOnVzLWVhc3QtMToxMTExMTExMTExOnNvbWU6b3RoZXItcmVzb3VyY2UnLFxuICAgICAgJy0tcHJvZ3Jlc3MnLCAnZXZlbnRzJyxcbiAgICAgICctLWFwcCcsXG4gICAgICAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICAgICd0ZXN0LXN0YWNrMScsXG4gICAgXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwcm92aWRlIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2RlcGxveScsICctLXByb2dyZXNzJywgJ2V2ZW50cycsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVmYXVsdCBzeW50aCcsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICAgIGVudjoge1xuICAgICAgS0VZOiAndmFsdWUnLFxuICAgIH0sXG4gIH0pO1xuICBjZGsuc3ludGgoe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNwYXduU3luY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZygvY2RrLyksXG4gICAgWydzeW50aCcsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnc3ludGggYXJndW1lbnRzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gICAgZW52OiB7XG4gICAgICBLRVk6ICd2YWx1ZScsXG4gICAgfSxcbiAgfSk7XG4gIGNkay5kZXN0cm95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVzdHJveScsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVzdHJveSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmRlc3Ryb3koe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgZm9yY2U6IHRydWUsXG4gICAgZXhjbHVzaXZlbHk6IGZhbHNlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVzdHJveScsICctLWZvcmNlJywgJy0tbm8tZXhjbHVzaXZlbHknLCAnLS1hcHAnLCAnbm9kZSBiaW4vbXktYXBwLmpzJywgJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgIH0pLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQgbHMnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmxpc3Qoe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJyonXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2xzJywgJy0tYXBwJywgJ25vZGUgYmluL215LWFwcC5qcycsICcqJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgIH0pLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2xzIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBzcGF3blN5bmNNb2NrID0gamVzdC5zcHlPbihjaGlsZF9wcm9jZXNzLCAnc3Bhd25TeW5jJykubW9ja1JldHVyblZhbHVlKHtcbiAgICBzdGF0dXM6IDAsXG4gICAgc3RkZXJyOiBCdWZmZXIuZnJvbSgnc3RkZXJyJyksXG4gICAgc3Rkb3V0OiBCdWZmZXIuZnJvbSgndGVzdC1zdGFjazFcXG50ZXN0LXN0YWNrMicpLFxuICAgIHBpZDogMTIzLFxuICAgIG91dHB1dDogWydzdGRvdXQnLCAnc3RkZXJyJ10sXG4gICAgc2lnbmFsOiBudWxsLFxuICB9KTtcbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgbGlzdCA9IGNkay5saXN0KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWycqJ10sXG4gICAgbG9uZzogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2xzJywgJy0tbG9uZycsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAnKiddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICBLRVk6ICd2YWx1ZScsXG4gICAgICB9KSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcblxuICBleHBlY3QobGlzdCkudG9FcXVhbCgndGVzdC1zdGFjazFcXG50ZXN0LXN0YWNrMicpO1xufSk7XG5cbnRlc3QoJ2NhbiBzeW50aCBmYXN0JywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gICAgZW52OiB7XG4gICAgICBLRVk6ICd2YWx1ZScsXG4gICAgfSxcbiAgfSk7XG4gIGNkay5zeW50aEZhc3Qoe1xuICAgIGV4ZWNDbWQ6IFsnbm9kZScsICdiaW4vbXktYXBwLmpzJ10sXG4gICAgb3V0cHV0OiAnY2RrLm91dHB1dCcsXG4gICAgZW52OiB7XG4gICAgICBPVEhFUktFWTogJ290aGVydmFsdWUnLFxuICAgIH0sXG4gICAgY29udGV4dDoge1xuICAgICAgQ09OVEVYVDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAnbm9kZScsXG4gICAgWydiaW4vbXktYXBwLmpzJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgICAgT1RIRVJLRVk6ICdvdGhlcnZhbHVlJyxcbiAgICAgICAgQ0RLX09VVERJUjogJ2Nkay5vdXRwdXQnLFxuICAgICAgICBDREtfQ09OVEVYVF9KU09OOiAne1xcXCJDT05URVhUXFxcIjpcXFwidmFsdWVcXFwifScsXG4gICAgICB9KSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdjYW4gc2hvdyBvdXRwdXQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBzaG93T3V0cHV0OiB0cnVlLFxuICB9KTtcbiAgY2RrLnN5bnRoRmFzdCh7XG4gICAgZXhlY0NtZDogWydub2RlJywgJ2Jpbi9teS1hcHAuanMnXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgJ25vZGUnLFxuICAgIFsnYmluL215LWFwcC5qcyddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdpbmhlcml0J10sXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/tsconfig.json b/packages/cdk-cli-wrapper/tsconfig.json new file mode 100644 index 0000000000000..3e962eca10f67 --- /dev/null +++ b/packages/cdk-cli-wrapper/tsconfig.json @@ -0,0 +1,48 @@ +{ + "compilerOptions": { + "declarationMap": false, + "inlineSourceMap": true, + "inlineSources": true, + "alwaysStrict": true, + "charset": "utf8", + "declaration": true, + "experimentalDecorators": true, + "incremental": true, + "lib": [ + "es2020" + ], + "module": "CommonJS", + "newLine": "lf", + "noEmitOnError": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": false, + "target": "ES2020", + "composite": true, + "tsBuildInfoFile": "tsconfig.tsbuildinfo" + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "node_modules" + ], + "references": [ + { + "path": "../../tools/@aws-cdk/cdk-build-tools" + }, + { + "path": "../../tools/@aws-cdk/pkglint" + } + ], + "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" +} From a25fdc8545f2a6731afddd3ab6f27becbf4dd6e1 Mon Sep 17 00:00:00 2001 From: Momo Kornher Date: Fri, 21 Jul 2023 19:16:51 +0100 Subject: [PATCH 3/3] cleanup --- packages/cdk-cli-wrapper/.jsii | 1522 ----------------- packages/cdk-cli-wrapper/.warnings.jsii.js | 83 - packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts | 132 -- packages/cdk-cli-wrapper/lib/cdk-wrapper.js | 229 --- .../cdk-cli-wrapper/lib/commands/common.d.ts | 178 -- .../cdk-cli-wrapper/lib/commands/common.js | 22 - .../cdk-cli-wrapper/lib/commands/deploy.d.ts | 109 -- .../cdk-cli-wrapper/lib/commands/deploy.js | 18 - .../cdk-cli-wrapper/lib/commands/destroy.d.ts | 18 - .../cdk-cli-wrapper/lib/commands/destroy.js | 3 - .../cdk-cli-wrapper/lib/commands/index.d.ts | 5 - .../cdk-cli-wrapper/lib/commands/index.js | 18 - .../cdk-cli-wrapper/lib/commands/list.d.ts | 12 - packages/cdk-cli-wrapper/lib/commands/list.js | 3 - .../cdk-cli-wrapper/lib/commands/synth.d.ts | 24 - .../cdk-cli-wrapper/lib/commands/synth.js | 3 - packages/cdk-cli-wrapper/lib/index.d.ts | 2 - packages/cdk-cli-wrapper/lib/index.js | 15 - packages/cdk-cli-wrapper/lib/utils.d.ts | 9 - packages/cdk-cli-wrapper/lib/utils.js | 44 - .../test/cdk-wrapper.test.d.ts | 1 - .../cdk-cli-wrapper/test/cdk-wrapper.test.js | 408 ----- packages/cdk-cli-wrapper/tsconfig.json | 48 - 23 files changed, 2906 deletions(-) delete mode 100644 packages/cdk-cli-wrapper/.jsii delete mode 100644 packages/cdk-cli-wrapper/.warnings.jsii.js delete mode 100644 packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/cdk-wrapper.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/common.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/common.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/deploy.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/deploy.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/destroy.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/destroy.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/index.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/index.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/list.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/list.js delete mode 100644 packages/cdk-cli-wrapper/lib/commands/synth.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/commands/synth.js delete mode 100644 packages/cdk-cli-wrapper/lib/index.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/index.js delete mode 100644 packages/cdk-cli-wrapper/lib/utils.d.ts delete mode 100644 packages/cdk-cli-wrapper/lib/utils.js delete mode 100644 packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts delete mode 100644 packages/cdk-cli-wrapper/test/cdk-wrapper.test.js delete mode 100644 packages/cdk-cli-wrapper/tsconfig.json diff --git a/packages/cdk-cli-wrapper/.jsii b/packages/cdk-cli-wrapper/.jsii deleted file mode 100644 index 38eb604547daf..0000000000000 --- a/packages/cdk-cli-wrapper/.jsii +++ /dev/null @@ -1,1522 +0,0 @@ -{ - "author": { - "name": "Amazon Web Services", - "organization": true, - "roles": [ - "author" - ], - "url": "https://aws.amazon.com" - }, - "description": "CDK CLI Wrapper Library", - "docs": { - "stability": "experimental" - }, - "homepage": "https://github.com/aws/aws-cdk", - "jsiiVersion": "1.75.0 (build 63bb957)", - "keywords": [ - "aws", - "cdk" - ], - "license": "Apache-2.0", - "metadata": { - "jsii": { - "compiledWithDeprecationWarnings": true, - "pacmak": { - "hasDefaultInterfaces": true - }, - "rosetta": { - "strict": true - } - } - }, - "name": "cdk-cli-wrapper", - "readme": { - "markdown": "# cdk-cli-wrapper\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\nCDK CLI Wrapper Library.\n\nInternal only for now.\n\n## Overview\n\nThis package provides a library which wraps the CDK CLI, allowing you to interact with the CLI programmatically.\n\nCurrently this package provides wrappers for:\n\n- `cdk deploy`\n- `cdk synth`\n- `cdk destroy`\n- `cdk list`\n\n## Usage\n\nFirst create a new `CdkCliWrapper` with the directory in which you want to execute commands,\nand optionally any environment variables that you want to include in the execution environment.\n\n```ts\nnew CdkCliWrapper({\n directory: '/path/to/project',\n env: {\n KEY: 'value',\n },\n});\n```\n\n### deploy\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.deploy({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### synth\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.synth({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### destroy\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.destroy({\n app: 'node bin/my-app.js',\n stacks: ['my-test-stack'],\n});\n```\n\n### list\n\n```ts\nconst cdk = new CdkCliWrapper({\n directory: '/project/path',\n});\n\ncdk.list({\n app: 'node bin/my-app.js',\n stacks: ['*'],\n});\n```\n" - }, - "repository": { - "directory": "packages/cdk-cli-wrapper", - "type": "git", - "url": "https://github.com/aws/aws-cdk.git" - }, - "schema": "jsii/0.10.0", - "targets": { - "dotnet": { - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", - "namespace": "Amazon.CDK.CdkCliWrapper", - "packageId": "Amazon.CDK.CdkCliWrapper" - }, - "java": { - "maven": { - "artifactId": "cdk-cli-wrapper", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk.cdkcliwrapper" - }, - "js": { - "npm": "cdk-cli-wrapper" - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 2" - ], - "distName": "aws-cdk.cdk-cli-wrapper", - "module": "aws_cdk.cdk_cli_wrapper" - } - }, - "types": { - "cdk-cli-wrapper.CdkCliWrapper": { - "assembly": "cdk-cli-wrapper", - "docs": { - "stability": "experimental", - "summary": "Provides a programmatic interface for interacting with the CDK CLI by wrapping the CLI with exec." - }, - "fqn": "cdk-cli-wrapper.CdkCliWrapper", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 125 - }, - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.CdkCliWrapperOptions" - } - } - ] - }, - "interfaces": [ - "cdk-cli-wrapper.ICdk" - ], - "kind": "class", - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 119 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "cdk deploy." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 157 - }, - "name": "deploy", - "overrides": "cdk-cli-wrapper.ICdk", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.DeployOptions" - } - } - ] - }, - { - "docs": { - "stability": "experimental", - "summary": "cdk destroy." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 187 - }, - "name": "destroy", - "overrides": "cdk-cli-wrapper.ICdk", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.DestroyOptions" - } - } - ] - }, - { - "docs": { - "stability": "experimental", - "summary": "cdk list." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 142 - }, - "name": "list", - "overrides": "cdk-cli-wrapper.ICdk", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.ListOptions" - } - } - ], - "returns": { - "type": { - "primitive": "string" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "cdk synth." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 204 - }, - "name": "synth", - "overrides": "cdk-cli-wrapper.ICdk", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.SynthOptions" - } - } - ] - }, - { - "docs": { - "remarks": "The CLI has a pretty slow startup time because of all the modules it needs to load,\nBypass it to be quicker!", - "stability": "experimental", - "summary": "Do a CDK synth, mimicking the CLI (without actually using it)." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 225 - }, - "name": "synthFast", - "overrides": "cdk-cli-wrapper.ICdk", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.SynthFastOptions" - } - } - ] - } - ], - "name": "CdkCliWrapper", - "symbolId": "lib/cdk-wrapper:CdkCliWrapper" - }, - "cdk-cli-wrapper.CdkCliWrapperOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "AWS CDK client that provides an API to programatically execute the CDK CLI by wrapping calls to exec the CLI." - }, - "fqn": "cdk-cli-wrapper.CdkCliWrapperOptions", - "kind": "interface", - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 85 - }, - "name": "CdkCliWrapperOptions", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The directory to run the cdk commands from." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 89 - }, - "name": "directory", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "'aws-cdk/bin/cdk'", - "stability": "experimental", - "summary": "The path to the cdk executable." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 105 - }, - "name": "cdkExecutable", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- no additional env vars", - "stability": "experimental", - "summary": "Additional environment variables to set in the execution environment that will be running the cdk commands." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 98 - }, - "name": "env", - "optional": true, - "type": { - "fqn": "cdk-cli-wrapper.Environment" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Show the output from running the CDK CLI." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 112 - }, - "name": "showOutput", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/cdk-wrapper:CdkCliWrapperOptions" - }, - "cdk-cli-wrapper.DefaultCdkOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Default CDK CLI options that apply to all commands." - }, - "fqn": "cdk-cli-wrapper.DefaultCdkOptions", - "kind": "interface", - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 24 - }, - "name": "DefaultCdkOptions", - "properties": [ - { - "abstract": true, - "docs": { - "default": "- false", - "remarks": "Requried if `stacks` is not set", - "stability": "experimental", - "summary": "Deploy all stacks." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 41 - }, - "name": "all", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- read from cdk.json", - "stability": "experimental", - "summary": "command-line for executing your app or a cloud assembly directory e.g. \"node bin/my-app.js\" or \"cdk.out\"." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 51 - }, - "name": "app", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Include \"aws:asset:*\" CloudFormation metadata for resources that use assets." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 171 - }, - "name": "assetMetadata", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- read from AWS_CA_BUNDLE environment variable", - "stability": "experimental", - "summary": "Path to CA certificate to use when validating HTTPS requests." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 143 - }, - "name": "caBundlePath", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Show colors and other style from console output." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 201 - }, - "name": "color", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- no additional context", - "stability": "experimental", - "summary": "Additional context." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 66 - }, - "name": "context", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "map" - } - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "enable emission of additional debugging information, such as creation stack traces of tokens." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 120 - }, - "name": "debug", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- guess EC2 instance status", - "stability": "experimental", - "summary": "Force trying to fetch EC2 instance credentials." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 150 - }, - "name": "ec2Creds", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Ignores synthesis errors, which will likely produce an invalid output." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 97 - }, - "name": "ignoreErrors", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Use JSON output instead of YAML when templates are printed to STDOUT." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 105 - }, - "name": "json", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "remarks": "Synthesis fails if this is disabled and context lookups need\nto be performed", - "stability": "experimental", - "summary": "Perform context lookups." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 90 - }, - "name": "lookups", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Show relevant notices." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 194 - }, - "name": "notices", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "cdk.out", - "stability": "experimental", - "summary": "Emits the synthesized cloud assembly into a directory." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 187 - }, - "name": "output", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Include \"aws:cdk:path\" CloudFormation metadata for each resource." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 164 - }, - "name": "pathMetadata", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- no profile is used", - "stability": "experimental", - "summary": "Use the indicated AWS profile as the default environment." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 127 - }, - "name": "profile", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- no proxy", - "remarks": "Will read from\nHTTPS_PROXY environment if specified", - "stability": "experimental", - "summary": "Use the indicated proxy." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 135 - }, - "name": "proxy", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- use the bootstrap cfn-exec role", - "stability": "experimental", - "summary": "Role to pass to CloudFormation for deployment." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 59 - }, - "name": "roleArn", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- []", - "remarks": "Requried if `all` is not set", - "stability": "experimental", - "summary": "List of stacks to deploy." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 32 - }, - "name": "stacks", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "remarks": "Needed for local debugging the source files with SAM CLI", - "stability": "experimental", - "summary": "Copy assets to the output directory." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 180 - }, - "name": "staging", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Do not construct stacks with warnings." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 80 - }, - "name": "strict", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Print trace for stack warnings." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 73 - }, - "name": "trace", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "show debug logs." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 112 - }, - "name": "verbose", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Include \"AWS::CDK::Metadata\" resource in synthesized templates." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 157 - }, - "name": "versionReporting", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/commands/common:DefaultCdkOptions" - }, - "cdk-cli-wrapper.DeployOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Options to use with cdk deploy." - }, - "fqn": "cdk-cli-wrapper.DeployOptions", - "interfaces": [ - "cdk-cli-wrapper.DefaultCdkOptions" - ], - "kind": "interface", - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 6 - }, - "name": "DeployOptions", - "properties": [ - { - "abstract": true, - "docs": { - "default": "- auto generate a name", - "remarks": "If not provided, a name will be generated automatically.", - "stability": "experimental", - "summary": "Optional name to use for the CloudFormation change set." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 34 - }, - "name": "changeSetName", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Whether we are on a CI system." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 96 - }, - "name": "ci", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Only perform action on the given stack." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 12 - }, - "name": "exclusively", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Whether to execute the ChangeSet Not providing `execute` parameter will result in execution of ChangeSet." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 68 - }, - "name": "execute", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Always deploy, even if templates are identical." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 40 - }, - "name": "force", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- no notifications", - "stability": "experimental", - "summary": "ARNs of SNS topics that CloudFormation will notify with stack related events." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 54 - }, - "name": "notificationArns", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- Outputs are not written to any file", - "stability": "experimental", - "summary": "Path to file where stack outputs will be written after a successful deploy as JSON." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 89 - }, - "name": "outputsFile", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "{}", - "stability": "experimental", - "summary": "Additional parameters for CloudFormation at deploy time." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 74 - }, - "name": "parameters", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "map" - } - } - }, - { - "abstract": true, - "docs": { - "default": "StackActivityProgress.EVENTS", - "remarks": "The default in the CLI is StackActivityProgress.BAR, but\nsince the cli-wrapper will most likely be run in automation it makes\nmore sense to set the default to StackActivityProgress.EVENTS", - "stability": "experimental", - "summary": "Display mode for stack activity events." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 107 - }, - "name": "progress", - "optional": true, - "type": { - "fqn": "cdk-cli-wrapper.StackActivityProgress" - } - }, - { - "abstract": true, - "docs": { - "default": "RequireApproval.Never", - "stability": "experimental", - "summary": "What kind of security changes require approval." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 61 - }, - "name": "requireApproval", - "optional": true, - "type": { - "fqn": "cdk-cli-wrapper.RequireApproval" - } - }, - { - "abstract": true, - "docs": { - "default": "- do not reuse assets", - "stability": "experimental", - "summary": "Reuse the assets with the given asset IDs." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 26 - }, - "name": "reuseAssets", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "stability": "experimental", - "summary": "Rollback failed deployments." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 47 - }, - "name": "rollback", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "CDKToolkit", - "stability": "experimental", - "summary": "Name of the toolkit stack to use/deploy." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 19 - }, - "name": "toolkitStackName", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "true", - "remarks": "If not set, all parameters must be specified for every deployment.", - "stability": "experimental", - "summary": "Use previous values for unspecified parameters." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 83 - }, - "name": "usePreviousParameters", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/commands/deploy:DeployOptions" - }, - "cdk-cli-wrapper.DestroyOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Options to use with cdk destroy." - }, - "fqn": "cdk-cli-wrapper.DestroyOptions", - "interfaces": [ - "cdk-cli-wrapper.DefaultCdkOptions" - ], - "kind": "interface", - "locationInModule": { - "filename": "lib/commands/destroy.ts", - "line": 6 - }, - "name": "DestroyOptions", - "properties": [ - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Only destroy the given stack." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/destroy.ts", - "line": 19 - }, - "name": "exclusively", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Do not ask for permission before destroying stacks." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/destroy.ts", - "line": 12 - }, - "name": "force", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/commands/destroy:DestroyOptions" - }, - "cdk-cli-wrapper.Environment": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Additional environment variables to set in the execution environment that will be running the cdk commands." - }, - "fqn": "cdk-cli-wrapper.Environment", - "kind": "interface", - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 77 - }, - "name": "Environment", - "symbolId": "lib/cdk-wrapper:Environment" - }, - "cdk-cli-wrapper.ICdk": { - "assembly": "cdk-cli-wrapper", - "docs": { - "stability": "experimental", - "summary": "AWS CDK CLI operations." - }, - "fqn": "cdk-cli-wrapper.ICdk", - "kind": "interface", - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 7 - }, - "methods": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "cdk deploy." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 12 - }, - "name": "deploy", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.DeployOptions" - } - } - ] - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "cdk destroy." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 22 - }, - "name": "destroy", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.DestroyOptions" - } - } - ] - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "cdk list." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 27 - }, - "name": "list", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.ListOptions" - } - } - ], - "returns": { - "type": { - "primitive": "string" - } - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "cdk synth." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 17 - }, - "name": "synth", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.SynthOptions" - } - } - ] - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "cdk synth fast." - }, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 32 - }, - "name": "synthFast", - "parameters": [ - { - "name": "options", - "type": { - "fqn": "cdk-cli-wrapper.SynthFastOptions" - } - } - ] - } - ], - "name": "ICdk", - "symbolId": "lib/cdk-wrapper:ICdk" - }, - "cdk-cli-wrapper.ListOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Options for cdk list." - }, - "fqn": "cdk-cli-wrapper.ListOptions", - "interfaces": [ - "cdk-cli-wrapper.DefaultCdkOptions" - ], - "kind": "interface", - "locationInModule": { - "filename": "lib/commands/list.ts", - "line": 6 - }, - "name": "ListOptions", - "properties": [ - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Display environment information for each stack." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/list.ts", - "line": 12 - }, - "name": "long", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/commands/list:ListOptions" - }, - "cdk-cli-wrapper.RequireApproval": { - "assembly": "cdk-cli-wrapper", - "docs": { - "stability": "experimental", - "summary": "In what scenarios should the CLI ask for approval." - }, - "fqn": "cdk-cli-wrapper.RequireApproval", - "kind": "enum", - "locationInModule": { - "filename": "lib/commands/common.ts", - "line": 4 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "Never ask for approval." - }, - "name": "NEVER" - }, - { - "docs": { - "stability": "experimental", - "summary": "Prompt for approval for any type of change to the stack." - }, - "name": "ANYCHANGE" - }, - { - "docs": { - "stability": "experimental", - "summary": "Only prompt for approval if there are security related changes." - }, - "name": "BROADENING" - } - ], - "name": "RequireApproval", - "symbolId": "lib/commands/common:RequireApproval" - }, - "cdk-cli-wrapper.StackActivityProgress": { - "assembly": "cdk-cli-wrapper", - "docs": { - "stability": "experimental", - "summary": "Supported display modes for stack deployment activity." - }, - "fqn": "cdk-cli-wrapper.StackActivityProgress", - "kind": "enum", - "locationInModule": { - "filename": "lib/commands/deploy.ts", - "line": 113 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "Displays a progress bar with only the events for the resource currently being deployed." - }, - "name": "BAR" - }, - { - "docs": { - "stability": "experimental", - "summary": "Displays complete history with all CloudFormation stack events." - }, - "name": "EVENTS" - } - ], - "name": "StackActivityProgress", - "symbolId": "lib/commands/deploy:StackActivityProgress" - }, - "cdk-cli-wrapper.SynthFastOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Options for synthing and bypassing the CDK CLI." - }, - "fqn": "cdk-cli-wrapper.SynthFastOptions", - "kind": "interface", - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 38 - }, - "name": "SynthFastOptions", - "properties": [ - { - "abstract": true, - "docs": { - "remarks": "e.g. \"node 'bin/my-app.ts'\"\nor 'go run main.go'", - "stability": "experimental", - "summary": "The command to use to execute the app. This is typically the same thing that normally gets passed to `--app`." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 47 - }, - "name": "execCmd", - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- no additional context", - "stability": "experimental", - "summary": "Additional context." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 61 - }, - "name": "context", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "map" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- no additional env", - "stability": "experimental", - "summary": "Additional environment variables to set in the execution environment." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 69 - }, - "name": "env", - "optional": true, - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "map" - } - } - }, - { - "abstract": true, - "docs": { - "default": "cdk.out", - "stability": "experimental", - "summary": "Emits the synthesized cloud assembly into a directory." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/cdk-wrapper.ts", - "line": 54 - }, - "name": "output", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "symbolId": "lib/cdk-wrapper:SynthFastOptions" - }, - "cdk-cli-wrapper.SynthOptions": { - "assembly": "cdk-cli-wrapper", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Options to use with cdk synth." - }, - "fqn": "cdk-cli-wrapper.SynthOptions", - "interfaces": [ - "cdk-cli-wrapper.DefaultCdkOptions" - ], - "kind": "interface", - "locationInModule": { - "filename": "lib/commands/synth.ts", - "line": 6 - }, - "name": "SynthOptions", - "properties": [ - { - "abstract": true, - "docs": { - "default": "false", - "stability": "experimental", - "summary": "Only synthesize the given stack." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/synth.ts", - "line": 27 - }, - "name": "exclusively", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "false;", - "stability": "experimental", - "summary": "Do not output CloudFormation Template to stdout." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/synth.ts", - "line": 20 - }, - "name": "quiet", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "true;", - "stability": "experimental", - "summary": "After synthesis, validate stacks with the \"validateOnSynth\" attribute set (can also be controlled with CDK_VALIDATION)." - }, - "immutable": true, - "locationInModule": { - "filename": "lib/commands/synth.ts", - "line": 14 - }, - "name": "validation", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "lib/commands/synth:SynthOptions" - } - }, - "version": "0.0.0", - "fingerprint": "qY+0eNhbMLHg8X33wDmXPNdVT+4e469qkHzaccBtWFY=" -} \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/.warnings.jsii.js b/packages/cdk-cli-wrapper/.warnings.jsii.js deleted file mode 100644 index a557d37749624..0000000000000 --- a/packages/cdk-cli-wrapper/.warnings.jsii.js +++ /dev/null @@ -1,83 +0,0 @@ -function cdk_cli_wrapper_ICdk(p) { -} -function cdk_cli_wrapper_SynthFastOptions(p) { -} -function cdk_cli_wrapper_Environment(p) { -} -function cdk_cli_wrapper_CdkCliWrapperOptions(p) { - if (p == null) - return; - visitedObjects.add(p); - try { - if (!visitedObjects.has(p.env)) - cdk_cli_wrapper_Environment(p.env); - } - finally { - visitedObjects.delete(p); - } -} -function cdk_cli_wrapper_CdkCliWrapper(p) { -} -function cdk_cli_wrapper_SynthOptions(p) { -} -function cdk_cli_wrapper_RequireApproval(p) { -} -function cdk_cli_wrapper_DefaultCdkOptions(p) { -} -function cdk_cli_wrapper_DeployOptions(p) { - if (p == null) - return; - visitedObjects.add(p); - try { - if (!visitedObjects.has(p.progress)) - cdk_cli_wrapper_StackActivityProgress(p.progress); - if (!visitedObjects.has(p.requireApproval)) - cdk_cli_wrapper_RequireApproval(p.requireApproval); - } - finally { - visitedObjects.delete(p); - } -} -function cdk_cli_wrapper_StackActivityProgress(p) { -} -function cdk_cli_wrapper_DestroyOptions(p) { -} -function cdk_cli_wrapper_ListOptions(p) { -} -function print(name, deprecationMessage) { - const deprecated = process.env.JSII_DEPRECATED; - const deprecationMode = ["warn", "fail", "quiet"].includes(deprecated) ? deprecated : "warn"; - const message = `${name} is deprecated.\n ${deprecationMessage.trim()}\n This API will be removed in the next major release.`; - switch (deprecationMode) { - case "fail": - throw new DeprecationError(message); - case "warn": - console.warn("[WARNING]", message); - break; - } -} -function getPropertyDescriptor(obj, prop) { - const descriptor = Object.getOwnPropertyDescriptor(obj, prop); - if (descriptor) { - return descriptor; - } - const proto = Object.getPrototypeOf(obj); - const prototypeDescriptor = proto && getPropertyDescriptor(proto, prop); - if (prototypeDescriptor) { - return prototypeDescriptor; - } - return {}; -} -const visitedObjects = new Set(); -class DeprecationError extends Error { - constructor(...args) { - super(...args); - Object.defineProperty(this, "name", { - configurable: false, - enumerable: true, - value: "DeprecationError", - writable: false, - }); - } -} -module.exports = { print, getPropertyDescriptor, DeprecationError, cdk_cli_wrapper_ICdk, cdk_cli_wrapper_SynthFastOptions, cdk_cli_wrapper_Environment, cdk_cli_wrapper_CdkCliWrapperOptions, cdk_cli_wrapper_CdkCliWrapper, cdk_cli_wrapper_SynthOptions, cdk_cli_wrapper_RequireApproval, cdk_cli_wrapper_DefaultCdkOptions, cdk_cli_wrapper_DeployOptions, cdk_cli_wrapper_StackActivityProgress, cdk_cli_wrapper_DestroyOptions, cdk_cli_wrapper_ListOptions }; diff --git a/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts b/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts deleted file mode 100644 index 70b88aaf4b79a..0000000000000 --- a/packages/cdk-cli-wrapper/lib/cdk-wrapper.d.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { DeployOptions, DestroyOptions, SynthOptions, ListOptions } from './commands'; -/** - * AWS CDK CLI operations - */ -export interface ICdk { - /** - * cdk deploy - */ - deploy(options: DeployOptions): void; - /** - * cdk synth - */ - synth(options: SynthOptions): void; - /** - * cdk destroy - */ - destroy(options: DestroyOptions): void; - /** - * cdk list - */ - list(options: ListOptions): string; - /** - * cdk synth fast - */ - synthFast(options: SynthFastOptions): void; -} -/** - * Options for synthing and bypassing the CDK CLI - */ -export interface SynthFastOptions { - /** - * The command to use to execute the app. - * This is typically the same thing that normally - * gets passed to `--app` - * - * e.g. "node 'bin/my-app.ts'" - * or 'go run main.go' - */ - readonly execCmd: string[]; - /** - * Emits the synthesized cloud assembly into a directory - * - * @default cdk.out - */ - readonly output?: string; - /** - * Additional context - * - * @default - no additional context - */ - readonly context?: Record; - /** - * Additional environment variables to set in the - * execution environment - * - * @default - no additional env - */ - readonly env?: { - [name: string]: string; - }; -} -/** - * Additional environment variables to set - * in the execution environment that will be running - * the cdk commands - */ -export interface Environment { - [key: string]: string | undefined; -} -/** - * AWS CDK client that provides an API to programatically execute the CDK CLI - * by wrapping calls to exec the CLI - */ -export interface CdkCliWrapperOptions { - /** - * The directory to run the cdk commands from - */ - readonly directory: string; - /** - * Additional environment variables to set - * in the execution environment that will be running - * the cdk commands - * - * @default - no additional env vars - */ - readonly env?: Environment; - /** - * The path to the cdk executable - * - * @default 'aws-cdk/bin/cdk' - */ - readonly cdkExecutable?: string; - /** - * Show the output from running the CDK CLI - * - * @default false - */ - readonly showOutput?: boolean; -} -/** - * Provides a programmatic interface for interacting with the CDK CLI by - * wrapping the CLI with exec - */ -export declare class CdkCliWrapper implements ICdk { - private readonly directory; - private readonly env?; - private readonly cdk; - private readonly showOutput; - constructor(options: CdkCliWrapperOptions); - private validateArgs; - list(options: ListOptions): string; - /** - * cdk deploy - */ - deploy(options: DeployOptions): void; - /** - * cdk destroy - */ - destroy(options: DestroyOptions): void; - /** - * cdk synth - */ - synth(options: SynthOptions): void; - /** - * Do a CDK synth, mimicking the CLI (without actually using it) - * - * The CLI has a pretty slow startup time because of all the modules it needs to load, - * Bypass it to be quicker! - */ - synthFast(options: SynthFastOptions): void; - private createDefaultArguments; -} diff --git a/packages/cdk-cli-wrapper/lib/cdk-wrapper.js b/packages/cdk-cli-wrapper/lib/cdk-wrapper.js deleted file mode 100644 index ed904b653b9b5..0000000000000 --- a/packages/cdk-cli-wrapper/lib/cdk-wrapper.js +++ /dev/null @@ -1,229 +0,0 @@ -"use strict"; -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CdkCliWrapper = void 0; -const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); -const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); -const commands_1 = require("./commands"); -const utils_1 = require("./utils"); -/** - * Provides a programmatic interface for interacting with the CDK CLI by - * wrapping the CLI with exec - */ -class CdkCliWrapper { - constructor(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_CdkCliWrapperOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, CdkCliWrapper); - } - throw error; - } - this.directory = options.directory; - this.env = options.env; - this.showOutput = options.showOutput ?? false; - try { - this.cdk = options.cdkExecutable ?? 'cdk'; - } - catch (e) { - throw new Error(`could not resolve path to cdk executable: "${options.cdkExecutable ?? 'cdk'}"`); - } - } - validateArgs(options) { - if (!options.stacks && !options.all) { - throw new Error('one of "app" or "stacks" must be provided'); - } - } - list(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_ListOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, this.list); - } - throw error; - } - const listCommandArgs = [ - ...renderBooleanArg('long', options.long), - ...this.createDefaultArguments(options), - ]; - return utils_1.exec([this.cdk, 'ls', ...listCommandArgs], { - cwd: this.directory, - verbose: this.showOutput, - env: this.env, - }); - } - /** - * cdk deploy - */ - deploy(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_DeployOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, this.deploy); - } - throw error; - } - const deployCommandArgs = [ - ...renderBooleanArg('ci', options.ci), - ...renderBooleanArg('execute', options.execute), - ...renderBooleanArg('exclusively', options.exclusively), - ...renderBooleanArg('force', options.force), - ...renderBooleanArg('previous-parameters', options.usePreviousParameters), - ...renderBooleanArg('rollback', options.rollback), - ...renderBooleanArg('staging', options.staging), - ...options.reuseAssets ? renderArrayArg('--reuse-assets', options.reuseAssets) : [], - ...options.notificationArns ? renderArrayArg('--notification-arns', options.notificationArns) : [], - ...options.parameters ? renderMapArrayArg('--parameters', options.parameters) : [], - ...options.outputsFile ? ['--outputs-file', options.outputsFile] : [], - ...options.requireApproval ? ['--require-approval', options.requireApproval] : [], - ...options.changeSetName ? ['--change-set-name', options.changeSetName] : [], - ...options.toolkitStackName ? ['--toolkit-stack-name', options.toolkitStackName] : [], - ...options.progress ? ['--progress', options.progress] : ['--progress', commands_1.StackActivityProgress.EVENTS], - ...this.createDefaultArguments(options), - ]; - utils_1.exec([this.cdk, 'deploy', ...deployCommandArgs], { - cwd: this.directory, - verbose: this.showOutput, - env: this.env, - }); - } - /** - * cdk destroy - */ - destroy(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_DestroyOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, this.destroy); - } - throw error; - } - const destroyCommandArgs = [ - ...renderBooleanArg('force', options.force), - ...renderBooleanArg('exclusively', options.exclusively), - ...this.createDefaultArguments(options), - ]; - utils_1.exec([this.cdk, 'destroy', ...destroyCommandArgs], { - cwd: this.directory, - verbose: this.showOutput, - env: this.env, - }); - } - /** - * cdk synth - */ - synth(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_SynthOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, this.synth); - } - throw error; - } - const synthCommandArgs = [ - ...renderBooleanArg('validation', options.validation), - ...renderBooleanArg('quiet', options.quiet), - ...renderBooleanArg('exclusively', options.exclusively), - ...this.createDefaultArguments(options), - ]; - utils_1.exec([this.cdk, 'synth', ...synthCommandArgs], { - cwd: this.directory, - verbose: this.showOutput, - env: this.env, - }); - } - /** - * Do a CDK synth, mimicking the CLI (without actually using it) - * - * The CLI has a pretty slow startup time because of all the modules it needs to load, - * Bypass it to be quicker! - */ - synthFast(options) { - try { - jsiiDeprecationWarnings.cdk_cli_wrapper_SynthFastOptions(options); - } - catch (error) { - if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { - Error.captureStackTrace(error, this.synthFast); - } - throw error; - } - utils_1.exec(options.execCmd, { - cwd: this.directory, - verbose: this.showOutput, - env: { - CDK_CONTEXT_JSON: JSON.stringify(options.context), - CDK_OUTDIR: options.output, - ...this.env, - ...options.env, - }, - }); - } - createDefaultArguments(options) { - this.validateArgs(options); - const stacks = options.stacks ?? []; - return [ - ...options.app ? ['--app', options.app] : [], - ...renderBooleanArg('strict', options.strict), - ...renderBooleanArg('trace', options.trace), - ...renderBooleanArg('lookups', options.lookups), - ...renderBooleanArg('ignore-errors', options.ignoreErrors), - ...renderBooleanArg('json', options.json), - ...renderBooleanArg('verbose', options.verbose), - ...renderBooleanArg('debug', options.debug), - ...renderBooleanArg('ec2creds', options.ec2Creds), - ...renderBooleanArg('version-reporting', options.versionReporting), - ...renderBooleanArg('path-metadata', options.pathMetadata), - ...renderBooleanArg('asset-metadata', options.assetMetadata), - ...renderBooleanArg('notices', options.notices), - ...renderBooleanArg('color', options.color), - ...options.context ? renderMapArrayArg('--context', options.context) : [], - ...options.profile ? ['--profile', options.profile] : [], - ...options.proxy ? ['--proxy', options.proxy] : [], - ...options.caBundlePath ? ['--ca-bundle-path', options.caBundlePath] : [], - ...options.roleArn ? ['--role-arn', options.roleArn] : [], - ...options.output ? ['--output', options.output] : [], - ...stacks, - ...options.all ? ['--all'] : [], - ]; - } -} -exports.CdkCliWrapper = CdkCliWrapper; -_a = JSII_RTTI_SYMBOL_1; -CdkCliWrapper[_a] = { fqn: "cdk-cli-wrapper.CdkCliWrapper", version: "0.0.0" }; -function renderMapArrayArg(flag, parameters) { - const params = []; - for (const [key, value] of Object.entries(parameters)) { - params.push(`${key}=${value}`); - } - return renderArrayArg(flag, params); -} -function renderArrayArg(flag, values) { - let args = []; - for (const value of values ?? []) { - args.push(flag, value); - } - return args; -} -function renderBooleanArg(val, arg) { - if (arg) { - return [`--${val}`]; - } - else if (arg === undefined) { - return []; - } - else { - return [`--no-${val}`]; - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5Q0FBZ0k7QUFDaEksbUNBQStCO0FBaUgvQjs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7SUFNeEIsWUFBWSxPQUE2Qjs7Ozs7OytDQU45QixhQUFhOzs7O1FBT3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztRQUM5QyxJQUFJO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztTQUMzQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2xHO0tBQ0Y7SUFFTyxZQUFZLENBQUMsT0FBMEI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtLQUNGO0lBRU0sSUFBSSxDQUFDLE9BQW9COzs7Ozs7Ozs7O1FBQzlCLE1BQU0sZUFBZSxHQUFhO1lBQ2hDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDekMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUM7UUFFRixPQUFPLFlBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUU7WUFDaEQs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YSxFQUFFLENBQUM7SUFDNUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZLEVBQUUsTUFBaUI7SUFDckQsSUFBSSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEdBQWE7SUFDbEQsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3JCO1NBQU0sSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFDO0tBQ1g7U0FBTTtRQUNMLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDeEI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENka09wdGlvbnMsIERlcGxveU9wdGlvbnMsIERlc3Ryb3lPcHRpb25zLCBTeW50aE9wdGlvbnMsIExpc3RPcHRpb25zLCBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MgfSBmcm9tICcuL2NvbW1hbmRzJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBV1MgQ0RLIENMSSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNkayB7XG5cbiAgLyoqXG4gICAqIGNkayBkZXBsb3lcbiAgICovXG4gIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogY2RrIHN5bnRoXG4gICAqL1xuICBzeW50aChvcHRpb25zOiBTeW50aE9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBjZGsgZGVzdHJveVxuICAgKi9cbiAgZGVzdHJveShvcHRpb25zOiBEZXN0cm95T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIGNkayBsaXN0XG4gICAqL1xuICBsaXN0KG9wdGlvbnM6IExpc3RPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjZGsgc3ludGggZmFzdFxuICAgKi9cbiAgc3ludGhGYXN0KG9wdGlvbnM6IFN5bnRoRmFzdE9wdGlvbnMpOiB2b2lkO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHN5bnRoaW5nIGFuZCBieXBhc3NpbmcgdGhlIENESyBDTElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aEZhc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHVzZSB0byBleGVjdXRlIHRoZSBhcHAuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBzYW1lIHRoaW5nIHRoYXQgbm9ybWFsbHlcbiAgICogZ2V0cyBwYXNzZWQgdG8gYC0tYXBwYFxuICAgKlxuICAgKiBlLmcuIFwibm9kZSAnYmluL215LWFwcC50cydcIlxuICAgKiBvciAnZ28gcnVuIG1haW4uZ28nXG4gICAqL1xuICByZWFkb25seSBleGVjQ21kOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGludG8gYSBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbnRleHRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gdGhlXG4gICAqIGV4ZWN1dGlvbiBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZW52XG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldFxuICogaW4gdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB0aGF0IHdpbGwgYmUgcnVubmluZ1xuICogdGhlIGNkayBjb21tYW5kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQVdTIENESyBjbGllbnQgdGhhdCBwcm92aWRlcyBhbiBBUEkgdG8gcHJvZ3JhbWF0aWNhbGx5IGV4ZWN1dGUgdGhlIENESyBDTElcbiAqIGJ5IHdyYXBwaW5nIGNhbGxzIHRvIGV4ZWMgdGhlIENMSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0NsaVdyYXBwZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gcnVuIHRoZSBjZGsgY29tbWFuZHMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldFxuICAgKiBpbiB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHRoYXQgd2lsbCBiZSBydW5uaW5nXG4gICAqIHRoZSBjZGsgY29tbWFuZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudiB2YXJzXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBFbnZpcm9ubWVudCxcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGNkayBleGVjdXRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrL2Jpbi9jZGsnXG4gICAqL1xuICByZWFkb25seSBjZGtFeGVjdXRhYmxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIHRoZSBDREsgQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzaG93T3V0cHV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIHByb2dyYW1tYXRpYyBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIENESyBDTEkgYnlcbiAqIHdyYXBwaW5nIHRoZSBDTEkgd2l0aCBleGVjXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtDbGlXcmFwcGVyIGltcGxlbWVudHMgSUNkayB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52PzogRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RrOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd091dHB1dDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtDbGlXcmFwcGVyT3B0aW9ucykge1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gb3B0aW9ucy5kaXJlY3Rvcnk7XG4gICAgdGhpcy5lbnYgPSBvcHRpb25zLmVudjtcbiAgICB0aGlzLnNob3dPdXRwdXQgPSBvcHRpb25zLnNob3dPdXRwdXQgPz8gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2RrID0gb3B0aW9ucy5jZGtFeGVjdXRhYmxlID8/ICdjZGsnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgcGF0aCB0byBjZGsgZXhlY3V0YWJsZTogXCIke29wdGlvbnMuY2RrRXhlY3V0YWJsZSA/PyAnY2RrJ31cImApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBcmdzKG9wdGlvbnM6IERlZmF1bHRDZGtPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zLnN0YWNrcyAmJiAhb3B0aW9ucy5hbGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb25lIG9mIFwiYXBwXCIgb3IgXCJzdGFja3NcIiBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxpc3Qob3B0aW9uczogTGlzdE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpc3RDb21tYW5kQXJnczogc3RyaW5nW10gPSBbXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdsb25nJywgb3B0aW9ucy5sb25nKSxcbiAgICAgIC4uLnRoaXMuY3JlYXRlRGVmYXVsdEFyZ3VtZW50cyhvcHRpb25zKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGV4ZWMoW3RoaXMuY2RrLCAnbHMnLCAuLi5saXN0Q29tbWFuZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB0aGlzLmVudixcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogY2RrIGRlcGxveVxuICAgKi9cbiAgcHVibGljIGRlcGxveShvcHRpb25zOiBEZXBsb3lPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZGVwbG95Q29tbWFuZEFyZ3M6IHN0cmluZ1tdID0gW1xuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnY2knLCBvcHRpb25zLmNpKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2V4ZWN1dGUnLCBvcHRpb25zLmV4ZWN1dGUpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnZXhjbHVzaXZlbHknLCBvcHRpb25zLmV4Y2x1c2l2ZWx5KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2ZvcmNlJywgb3B0aW9ucy5mb3JjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdwcmV2aW91cy1wYXJhbWV0ZXJzJywgb3B0aW9ucy51c2VQcmV2aW91c1BhcmFtZXRlcnMpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygncm9sbGJhY2snLCBvcHRpb25zLnJvbGxiYWNrKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3N0YWdpbmcnLCBvcHRpb25zLnN0YWdpbmcpLFxuICAgICAgLi4ub3B0aW9ucy5yZXVzZUFzc2V0cyA/IHJlbmRlckFycmF5QXJnKCctLXJldXNlLWFzc2V0cycsIG9wdGlvbnMucmV1c2VBc3NldHMpIDogW10sXG4gICAgICAuLi5vcHRpb25zLm5vdGlmaWNhdGlvbkFybnMgPyByZW5kZXJBcnJheUFyZygnLS1ub3RpZmljYXRpb24tYXJucycsIG9wdGlvbnMubm90aWZpY2F0aW9uQXJucykgOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucGFyYW1ldGVycyA/IHJlbmRlck1hcEFycmF5QXJnKCctLXBhcmFtZXRlcnMnLCBvcHRpb25zLnBhcmFtZXRlcnMpIDogW10sXG4gICAgICAuLi5vcHRpb25zLm91dHB1dHNGaWxlID8gWyctLW91dHB1dHMtZmlsZScsIG9wdGlvbnMub3V0cHV0c0ZpbGVdIDogW10sXG4gICAgICAuLi5vcHRpb25zLnJlcXVpcmVBcHByb3ZhbCA/IFsnLS1yZXF1aXJlLWFwcHJvdmFsJywgb3B0aW9ucy5yZXF1aXJlQXBwcm92YWxdIDogW10sXG4gICAgICAuLi5vcHRpb25zLmNoYW5nZVNldE5hbWUgPyBbJy0tY2hhbmdlLXNldC1uYW1lJywgb3B0aW9ucy5jaGFuZ2VTZXROYW1lXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy50b29sa2l0U3RhY2tOYW1lID8gWyctLXRvb2xraXQtc3RhY2stbmFtZScsIG9wdGlvbnMudG9vbGtpdFN0YWNrTmFtZV0gOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucHJvZ3Jlc3MgPyBbJy0tcHJvZ3Jlc3MnLCBvcHRpb25zLnByb2dyZXNzXSA6IFsnLS1wcm9ncmVzcycsIFN0YWNrQWN0aXZpdHlQcm9ncmVzcy5FVkVOVFNdLFxuICAgICAgLi4udGhpcy5jcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnMpLFxuICAgIF07XG5cbiAgICBleGVjKFt0aGlzLmNkaywgJ2RlcGxveScsIC4uLmRlcGxveUNvbW1hbmRBcmdzXSwge1xuICAgICAgY3dkOiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgIHZlcmJvc2U6IHRoaXMuc2hvd091dHB1dCxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY2RrIGRlc3Ryb3lcbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KG9wdGlvbnM6IERlc3Ryb3lPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdHJveUNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2ZvcmNlJywgb3B0aW9ucy5mb3JjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdleGNsdXNpdmVseScsIG9wdGlvbnMuZXhjbHVzaXZlbHkpLFxuICAgICAgLi4udGhpcy5jcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnMpLFxuICAgIF07XG5cbiAgICBleGVjKFt0aGlzLmNkaywgJ2Rlc3Ryb3knLCAuLi5kZXN0cm95Q29tbWFuZEFyZ3NdLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB0aGlzLmVudixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjZGsgc3ludGhcbiAgICovXG4gIHB1YmxpYyBzeW50aChvcHRpb25zOiBTeW50aE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBzeW50aENvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3ZhbGlkYXRpb24nLCBvcHRpb25zLnZhbGlkYXRpb24pLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygncXVpZXQnLCBvcHRpb25zLnF1aWV0KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2V4Y2x1c2l2ZWx5Jywgb3B0aW9ucy5leGNsdXNpdmVseSksXG4gICAgICAuLi50aGlzLmNyZWF0ZURlZmF1bHRBcmd1bWVudHMob3B0aW9ucyksXG4gICAgXTtcblxuICAgIGV4ZWMoW3RoaXMuY2RrLCAnc3ludGgnLCAuLi5zeW50aENvbW1hbmRBcmdzXSwge1xuICAgICAgY3dkOiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgIHZlcmJvc2U6IHRoaXMuc2hvd091dHB1dCxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRG8gYSBDREsgc3ludGgsIG1pbWlja2luZyB0aGUgQ0xJICh3aXRob3V0IGFjdHVhbGx5IHVzaW5nIGl0KVxuICAgKlxuICAgKiBUaGUgQ0xJIGhhcyBhIHByZXR0eSBzbG93IHN0YXJ0dXAgdGltZSBiZWNhdXNlIG9mIGFsbCB0aGUgbW9kdWxlcyBpdCBuZWVkcyB0byBsb2FkLFxuICAgKiBCeXBhc3MgaXQgdG8gYmUgcXVpY2tlciFcbiAgICovXG4gIHB1YmxpYyBzeW50aEZhc3Qob3B0aW9uczogU3ludGhGYXN0T3B0aW9ucyk6IHZvaWQge1xuICAgIGV4ZWMob3B0aW9ucy5leGVjQ21kLCB7XG4gICAgICBjd2Q6IHRoaXMuZGlyZWN0b3J5LFxuICAgICAgdmVyYm9zZTogdGhpcy5zaG93T3V0cHV0LFxuICAgICAgZW52OiB7XG4gICAgICAgIENES19DT05URVhUX0pTT046IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuY29udGV4dCksXG4gICAgICAgIENES19PVVRESVI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAuLi50aGlzLmVudixcbiAgICAgICAgLi4ub3B0aW9ucy5lbnYsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0QXJndW1lbnRzKG9wdGlvbnM6IERlZmF1bHRDZGtPcHRpb25zKTogc3RyaW5nW10ge1xuICAgIHRoaXMudmFsaWRhdGVBcmdzKG9wdGlvbnMpO1xuICAgIGNvbnN0IHN0YWNrcyA9IG9wdGlvbnMuc3RhY2tzID8/IFtdO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5vcHRpb25zLmFwcCA/IFsnLS1hcHAnLCBvcHRpb25zLmFwcF0gOiBbXSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3N0cmljdCcsIG9wdGlvbnMuc3RyaWN0KSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3RyYWNlJywgb3B0aW9ucy50cmFjZSksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdsb29rdXBzJywgb3B0aW9ucy5sb29rdXBzKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2lnbm9yZS1lcnJvcnMnLCBvcHRpb25zLmlnbm9yZUVycm9ycyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdqc29uJywgb3B0aW9ucy5qc29uKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ3ZlcmJvc2UnLCBvcHRpb25zLnZlcmJvc2UpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnZGVidWcnLCBvcHRpb25zLmRlYnVnKSxcbiAgICAgIC4uLnJlbmRlckJvb2xlYW5BcmcoJ2VjMmNyZWRzJywgb3B0aW9ucy5lYzJDcmVkcyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCd2ZXJzaW9uLXJlcG9ydGluZycsIG9wdGlvbnMudmVyc2lvblJlcG9ydGluZyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdwYXRoLW1ldGFkYXRhJywgb3B0aW9ucy5wYXRoTWV0YWRhdGEpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnYXNzZXQtbWV0YWRhdGEnLCBvcHRpb25zLmFzc2V0TWV0YWRhdGEpLFxuICAgICAgLi4ucmVuZGVyQm9vbGVhbkFyZygnbm90aWNlcycsIG9wdGlvbnMubm90aWNlcyksXG4gICAgICAuLi5yZW5kZXJCb29sZWFuQXJnKCdjb2xvcicsIG9wdGlvbnMuY29sb3IpLFxuICAgICAgLi4ub3B0aW9ucy5jb250ZXh0ID8gcmVuZGVyTWFwQXJyYXlBcmcoJy0tY29udGV4dCcsIG9wdGlvbnMuY29udGV4dCkgOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMucHJvZmlsZSA/IFsnLS1wcm9maWxlJywgb3B0aW9ucy5wcm9maWxlXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5wcm94eSA/IFsnLS1wcm94eScsIG9wdGlvbnMucHJveHldIDogW10sXG4gICAgICAuLi5vcHRpb25zLmNhQnVuZGxlUGF0aCA/IFsnLS1jYS1idW5kbGUtcGF0aCcsIG9wdGlvbnMuY2FCdW5kbGVQYXRoXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5yb2xlQXJuID8gWyctLXJvbGUtYXJuJywgb3B0aW9ucy5yb2xlQXJuXSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5vdXRwdXQgPyBbJy0tb3V0cHV0Jywgb3B0aW9ucy5vdXRwdXRdIDogW10sXG4gICAgICAuLi5zdGFja3MsXG4gICAgICAuLi5vcHRpb25zLmFsbCA/IFsnLS1hbGwnXSA6IFtdLFxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyTWFwQXJyYXlBcmcoZmxhZzogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKSkge1xuICAgIHBhcmFtcy5wdXNoKGAke2tleX09JHt2YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gcmVuZGVyQXJyYXlBcmcoZmxhZywgcGFyYW1zKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQXJyYXlBcmcoZmxhZzogc3RyaW5nLCB2YWx1ZXM/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgbGV0IGFyZ3M6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzID8/IFtdKSB7XG4gICAgYXJncy5wdXNoKGZsYWcsIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJncztcbn1cblxuZnVuY3Rpb24gcmVuZGVyQm9vbGVhbkFyZyh2YWw6IHN0cmluZywgYXJnPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgaWYgKGFyZykge1xuICAgIHJldHVybiBbYC0tJHt2YWx9YF07XG4gIH0gZWxzZSBpZiAoYXJnID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gW107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtgLS1uby0ke3ZhbH1gXTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/common.d.ts b/packages/cdk-cli-wrapper/lib/commands/common.d.ts deleted file mode 100644 index 25a86432d628e..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/common.d.ts +++ /dev/null @@ -1,178 +0,0 @@ -/** - * In what scenarios should the CLI ask for approval - */ -export declare enum RequireApproval { - /** - * Never ask for approval - */ - NEVER = "never", - /** - * Prompt for approval for any type of change to the stack - */ - ANYCHANGE = "any-change", - /** - * Only prompt for approval if there are security related changes - */ - BROADENING = "broadening" -} -/** - * Default CDK CLI options that apply to all commands - */ -export interface DefaultCdkOptions { - /** - * List of stacks to deploy - * - * Requried if `all` is not set - * - * @default - [] - */ - readonly stacks?: string[]; - /** - * Deploy all stacks - * - * Requried if `stacks` is not set - * - * @default - false - */ - readonly all?: boolean; - /** - * command-line for executing your app or a cloud assembly directory - * e.g. "node bin/my-app.js" - * or - * "cdk.out" - * - * @default - read from cdk.json - */ - readonly app?: string; - /** - * Role to pass to CloudFormation for deployment - * - * @default - use the bootstrap cfn-exec role - */ - readonly roleArn?: string; - /** - * Additional context - * - * @default - no additional context - */ - readonly context?: { - [name: string]: string; - }; - /** - * Print trace for stack warnings - * - * @default false - */ - readonly trace?: boolean; - /** - * Do not construct stacks with warnings - * - * @default false - */ - readonly strict?: boolean; - /** - * Perform context lookups. - * - * Synthesis fails if this is disabled and context lookups need - * to be performed - * - * @default true - */ - readonly lookups?: boolean; - /** - * Ignores synthesis errors, which will likely produce an invalid output - * - * @default false - */ - readonly ignoreErrors?: boolean; - /** - * Use JSON output instead of YAML when templates are printed - * to STDOUT - * - * @default false - */ - readonly json?: boolean; - /** - * show debug logs - * - * @default false - */ - readonly verbose?: boolean; - /** - * enable emission of additional debugging information, such as creation stack - * traces of tokens - * - * @default false - */ - readonly debug?: boolean; - /** - * Use the indicated AWS profile as the default environment - * - * @default - no profile is used - */ - readonly profile?: string; - /** - * Use the indicated proxy. Will read from - * HTTPS_PROXY environment if specified - * - * @default - no proxy - */ - readonly proxy?: string; - /** - * Path to CA certificate to use when validating HTTPS - * requests. - * - * @default - read from AWS_CA_BUNDLE environment variable - */ - readonly caBundlePath?: string; - /** - * Force trying to fetch EC2 instance credentials - * - * @default - guess EC2 instance status - */ - readonly ec2Creds?: boolean; - /** - * Include "AWS::CDK::Metadata" resource in synthesized templates - * - * @default true - */ - readonly versionReporting?: boolean; - /** - * Include "aws:cdk:path" CloudFormation metadata for each resource - * - * @default true - */ - readonly pathMetadata?: boolean; - /** - * Include "aws:asset:*" CloudFormation metadata for resources that use assets - * - * @default true - */ - readonly assetMetadata?: boolean; - /** - * Copy assets to the output directory - * - * Needed for local debugging the source files with SAM CLI - * - * @default false - */ - readonly staging?: boolean; - /** - * Emits the synthesized cloud assembly into a directory - * - * @default cdk.out - */ - readonly output?: string; - /** - * Show relevant notices - * - * @default true - */ - readonly notices?: boolean; - /** - * Show colors and other style from console output - * - * @default true - */ - readonly color?: boolean; -} diff --git a/packages/cdk-cli-wrapper/lib/commands/common.js b/packages/cdk-cli-wrapper/lib/commands/common.js deleted file mode 100644 index a9377bcc06ace..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/common.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RequireApproval = void 0; -/** - * In what scenarios should the CLI ask for approval - */ -var RequireApproval; -(function (RequireApproval) { - /** - * Never ask for approval - */ - RequireApproval["NEVER"] = "never"; - /** - * Prompt for approval for any type of change to the stack - */ - RequireApproval["ANYCHANGE"] = "any-change"; - /** - * Only prompt for approval if there are security related changes - */ - RequireApproval["BROADENING"] = "broadening"; -})(RequireApproval = exports.RequireApproval || (exports.RequireApproval = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQWVYO0FBZkQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsa0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsMkNBQXdCLENBQUE7SUFFeEI7O09BRUc7SUFDSCw0Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBZlcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFlMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluIHdoYXQgc2NlbmFyaW9zIHNob3VsZCB0aGUgQ0xJIGFzayBmb3IgYXBwcm92YWxcbiAqL1xuZXhwb3J0IGVudW0gUmVxdWlyZUFwcHJvdmFsIHtcbiAgLyoqXG4gICAqIE5ldmVyIGFzayBmb3IgYXBwcm92YWxcbiAgICovXG4gIE5FVkVSID0gJ25ldmVyJyxcblxuICAvKipcbiAgICogUHJvbXB0IGZvciBhcHByb3ZhbCBmb3IgYW55IHR5cGUgIG9mIGNoYW5nZSB0byB0aGUgc3RhY2tcbiAgICovXG4gIEFOWUNIQU5HRSA9ICdhbnktY2hhbmdlJyxcblxuICAvKipcbiAgICogT25seSBwcm9tcHQgZm9yIGFwcHJvdmFsIGlmIHRoZXJlIGFyZSBzZWN1cml0eSByZWxhdGVkIGNoYW5nZXNcbiAgICovXG4gIEJST0FERU5JTkcgPSAnYnJvYWRlbmluZydcbn1cblxuLyoqXG4gKiBEZWZhdWx0IENESyBDTEkgb3B0aW9ucyB0aGF0IGFwcGx5IHRvIGFsbCBjb21tYW5kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHRvIGRlcGxveVxuICAgKlxuICAgKiBSZXF1cmllZCBpZiBgYWxsYCBpcyBub3Qgc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gW11cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZXBsb3kgYWxsIHN0YWNrc1xuICAgKlxuICAgKiBSZXF1cmllZCBpZiBgc3RhY2tzYCBpcyBub3Qgc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNvbW1hbmQtbGluZSBmb3IgZXhlY3V0aW5nIHlvdXIgYXBwIG9yIGEgY2xvdWQgYXNzZW1ibHkgZGlyZWN0b3J5XG4gICAqIGUuZy4gXCJub2RlIGJpbi9teS1hcHAuanNcIlxuICAgKiBvclxuICAgKiBcImNkay5vdXRcIlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlYWQgZnJvbSBjZGsuanNvblxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuXG5cbiAgLyoqXG4gICAqIFJvbGUgdG8gcGFzcyB0byBDbG91ZEZvcm1hdGlvbiBmb3IgZGVwbG95bWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgYm9vdHN0cmFwIGNmbi1leGVjIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBQcmludCB0cmFjZSBmb3Igc3RhY2sgd2FybmluZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGNvbnN0cnVjdCBzdGFja3Mgd2l0aCB3YXJuaW5nc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGVyZm9ybSBjb250ZXh0IGxvb2t1cHMuXG4gICAqXG4gICAqIFN5bnRoZXNpcyBmYWlscyBpZiB0aGlzIGlzIGRpc2FibGVkIGFuZCBjb250ZXh0IGxvb2t1cHMgbmVlZFxuICAgKiB0byBiZSBwZXJmb3JtZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3Vwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAgKiBJZ25vcmVzIHN5bnRoZXNpcyBlcnJvcnMsIHdoaWNoIHdpbGwgbGlrZWx5IHByb2R1Y2UgYW4gaW52YWxpZCBvdXRwdXRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUVycm9ycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZSBKU09OIG91dHB1dCBpbnN0ZWFkIG9mIFlBTUwgd2hlbiB0ZW1wbGF0ZXMgYXJlIHByaW50ZWRcbiAgICogdG8gU1RET1VUXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBqc29uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBkZWJ1ZyBsb2dzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIGVtaXNzaW9uIG9mIGFkZGl0aW9uYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uLCBzdWNoIGFzIGNyZWF0aW9uIHN0YWNrXG4gICAqIHRyYWNlcyBvZiB0b2tlbnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIHRoZSBpbmRpY2F0ZWQgQVdTIHByb2ZpbGUgYXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm9maWxlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgaW5kaWNhdGVkIHByb3h5LiBXaWxsIHJlYWQgZnJvbVxuICAgKiBIVFRQU19QUk9YWSBlbnZpcm9ubWVudCBpZiBzcGVjaWZpZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gQ0EgY2VydGlmaWNhdGUgdG8gdXNlIHdoZW4gdmFsaWRhdGluZyBIVFRQU1xuICAgKiByZXF1ZXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZWFkIGZyb20gQVdTX0NBX0JVTkRMRSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FCdW5kbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGb3JjZSB0cnlpbmcgdG8gZmV0Y2ggRUMyIGluc3RhbmNlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZ3Vlc3MgRUMyIGluc3RhbmNlIHN0YXR1c1xuICAgKi9cbiAgcmVhZG9ubHkgZWMyQ3JlZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIFwiQVdTOjpDREs6Ok1ldGFkYXRhXCIgcmVzb3VyY2UgaW4gc3ludGhlc2l6ZWQgdGVtcGxhdGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25SZXBvcnRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIFwiYXdzOmNkazpwYXRoXCIgQ2xvdWRGb3JtYXRpb24gbWV0YWRhdGEgZm9yIGVhY2ggcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5jbHVkZSBcImF3czphc3NldDoqXCIgQ2xvdWRGb3JtYXRpb24gbWV0YWRhdGEgZm9yIHJlc291cmNlcyB0aGF0IHVzZSBhc3NldHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvcHkgYXNzZXRzIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIE5lZWRlZCBmb3IgbG9jYWwgZGVidWdnaW5nIHRoZSBzb3VyY2UgZmlsZXMgd2l0aCBTQU0gQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGludG8gYSBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHJlbGV2YW50IG5vdGljZXNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgY29sb3JzIGFuZCBvdGhlciBzdHlsZSBmcm9tIGNvbnNvbGUgb3V0cHV0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogYm9vbGVhbjtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts b/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts deleted file mode 100644 index ea46aa88ee335..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/deploy.d.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { DefaultCdkOptions, RequireApproval } from './common'; -/** - * Options to use with cdk deploy - */ -export interface DeployOptions extends DefaultCdkOptions { - /** - * Only perform action on the given stack - * - * @default false - */ - readonly exclusively?: boolean; - /** - * Name of the toolkit stack to use/deploy - * - * @default CDKToolkit - */ - readonly toolkitStackName?: string; - /** - * Reuse the assets with the given asset IDs - * - * @default - do not reuse assets - */ - readonly reuseAssets?: string[]; - /** - * Optional name to use for the CloudFormation change set. - * If not provided, a name will be generated automatically. - * - * @default - auto generate a name - */ - readonly changeSetName?: string; - /** - * Always deploy, even if templates are identical. - * @default false - */ - readonly force?: boolean; - /** - * Rollback failed deployments - * - * @default true - */ - readonly rollback?: boolean; - /** - * ARNs of SNS topics that CloudFormation will notify with stack related events - * - * @default - no notifications - */ - readonly notificationArns?: string[]; - /** - * What kind of security changes require approval - * - * @default RequireApproval.Never - */ - readonly requireApproval?: RequireApproval; - /** - * Whether to execute the ChangeSet - * Not providing `execute` parameter will result in execution of ChangeSet - * @default true - */ - readonly execute?: boolean; - /** - * Additional parameters for CloudFormation at deploy time - * @default {} - */ - readonly parameters?: { - [name: string]: string; - }; - /** - * Use previous values for unspecified parameters - * - * If not set, all parameters must be specified for every deployment. - * - * @default true - */ - readonly usePreviousParameters?: boolean; - /** - * Path to file where stack outputs will be written after a successful deploy as JSON - * @default - Outputs are not written to any file - */ - readonly outputsFile?: string; - /** - * Whether we are on a CI system - * - * @default false - */ - readonly ci?: boolean; - /** - * Display mode for stack activity events - * - * The default in the CLI is StackActivityProgress.BAR, but - * since the cli-wrapper will most likely be run in automation it makes - * more sense to set the default to StackActivityProgress.EVENTS - * - * @default StackActivityProgress.EVENTS - */ - readonly progress?: StackActivityProgress; -} -/** - * Supported display modes for stack deployment activity - */ -export declare enum StackActivityProgress { - /** - * Displays a progress bar with only the events for the resource currently being deployed - */ - BAR = "bar", - /** - * Displays complete history with all CloudFormation stack events - */ - EVENTS = "events" -} diff --git a/packages/cdk-cli-wrapper/lib/commands/deploy.js b/packages/cdk-cli-wrapper/lib/commands/deploy.js deleted file mode 100644 index e0899dfc397ec..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/deploy.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StackActivityProgress = void 0; -/** - * Supported display modes for stack deployment activity - */ -var StackActivityProgress; -(function (StackActivityProgress) { - /** - * Displays a progress bar with only the events for the resource currently being deployed - */ - StackActivityProgress["BAR"] = "bar"; - /** - * Displays complete history with all CloudFormation stack events - */ - StackActivityProgress["EVENTS"] = "events"; -})(StackActivityProgress = exports.StackActivityProgress || (exports.StackActivityProgress = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVwbG95LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZHQTs7R0FFRztBQUNILElBQVkscUJBVVg7QUFWRCxXQUFZLHFCQUFxQjtJQUMvQjs7T0FFRztJQUNILG9DQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDBDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQVVoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zLCBSZXF1aXJlQXBwcm92YWwgfSBmcm9tICcuL2NvbW1vbic7XG5cbi8qKlxuICogT3B0aW9ucyB0byB1c2Ugd2l0aCBjZGsgZGVwbG95XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95T3B0aW9ucyBleHRlbmRzIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9ubHkgcGVyZm9ybSBhY3Rpb24gb24gdGhlIGdpdmVuIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGNsdXNpdmVseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRvb2xraXQgc3RhY2sgdG8gdXNlL2RlcGxveVxuICAgKlxuICAgKiBAZGVmYXVsdCBDREtUb29sa2l0XG4gICAqL1xuICByZWFkb25seSB0b29sa2l0U3RhY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXVzZSB0aGUgYXNzZXRzIHdpdGggdGhlIGdpdmVuIGFzc2V0IElEc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvIG5vdCByZXVzZSBhc3NldHNcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlQXNzZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gY2hhbmdlIHNldC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlIGEgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWx3YXlzIGRlcGxveSwgZXZlbiBpZiB0ZW1wbGF0ZXMgYXJlIGlkZW50aWNhbC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUm9sbGJhY2sgZmFpbGVkIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQVJOcyBvZiBTTlMgdG9waWNzIHRoYXQgQ2xvdWRGb3JtYXRpb24gd2lsbCBub3RpZnkgd2l0aCBzdGFjayByZWxhdGVkIGV2ZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hhdCBraW5kIG9mIHNlY3VyaXR5IGNoYW5nZXMgcmVxdWlyZSBhcHByb3ZhbFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZXF1aXJlQXBwcm92YWwuTmV2ZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVBcHByb3ZhbD86IFJlcXVpcmVBcHByb3ZhbDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBleGVjdXRlIHRoZSBDaGFuZ2VTZXRcbiAgICogTm90IHByb3ZpZGluZyBgZXhlY3V0ZWAgcGFyYW1ldGVyIHdpbGwgcmVzdWx0IGluIGV4ZWN1dGlvbiBvZiBDaGFuZ2VTZXRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgQ2xvdWRGb3JtYXRpb24gYXQgZGVwbG95IHRpbWVcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVXNlIHByZXZpb3VzIHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBJZiBub3Qgc2V0LCBhbGwgcGFyYW1ldGVycyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgZXZlcnkgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUHJldmlvdXNQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0aCB0byBmaWxlIHdoZXJlIHN0YWNrIG91dHB1dHMgd2lsbCBiZSB3cml0dGVuIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkZXBsb3kgYXMgSlNPTlxuICAgKiBAZGVmYXVsdCAtIE91dHB1dHMgYXJlIG5vdCB3cml0dGVuIHRvIGFueSBmaWxlXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB3ZSBhcmUgb24gYSBDSSBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheSBtb2RlIGZvciBzdGFjayBhY3Rpdml0eSBldmVudHNcbiAgICpcbiAgICogVGhlIGRlZmF1bHQgaW4gdGhlIENMSSBpcyBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQkFSLCBidXRcbiAgICogc2luY2UgdGhlIGNsaS13cmFwcGVyIHdpbGwgbW9zdCBsaWtlbHkgYmUgcnVuIGluIGF1dG9tYXRpb24gaXQgbWFrZXNcbiAgICogbW9yZSBzZW5zZSB0byBzZXQgdGhlIGRlZmF1bHQgdG8gU3RhY2tBY3Rpdml0eVByb2dyZXNzLkVWRU5UU1xuICAgKlxuICAgKiBAZGVmYXVsdCBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuRVZFTlRTXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzcz86IFN0YWNrQWN0aXZpdHlQcm9ncmVzcztcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgZGlzcGxheSBtb2RlcyBmb3Igc3RhY2sgZGVwbG95bWVudCBhY3Rpdml0eVxuICovXG5leHBvcnQgZW51bSBTdGFja0FjdGl2aXR5UHJvZ3Jlc3Mge1xuICAvKipcbiAgICogRGlzcGxheXMgYSBwcm9ncmVzcyBiYXIgd2l0aCBvbmx5IHRoZSBldmVudHMgZm9yIHRoZSByZXNvdXJjZSBjdXJyZW50bHkgYmVpbmcgZGVwbG95ZWRcbiAgICovXG4gIEJBUiA9ICdiYXInLFxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBjb21wbGV0ZSBoaXN0b3J5IHdpdGggYWxsIENsb3VkRm9ybWF0aW9uIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgRVZFTlRTID0gJ2V2ZW50cycsXG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts b/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts deleted file mode 100644 index d981fba122309..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/destroy.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DefaultCdkOptions } from './common'; -/** - * Options to use with cdk destroy - */ -export interface DestroyOptions extends DefaultCdkOptions { - /** - * Do not ask for permission before destroying stacks - * - * @default false - */ - readonly force?: boolean; - /** - * Only destroy the given stack - * - * @default false - */ - readonly exclusively?: boolean; -} diff --git a/packages/cdk-cli-wrapper/lib/commands/destroy.js b/packages/cdk-cli-wrapper/lib/commands/destroy.js deleted file mode 100644 index cc24c854836f0..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/destroy.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlc3Ryb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gdXNlIHdpdGggY2RrIGRlc3Ryb3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95T3B0aW9ucyBleHRlbmRzIERlZmF1bHRDZGtPcHRpb25zIHtcbiAgLyoqXG4gICAqIERvIG5vdCBhc2sgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGRlc3Ryb3lpbmcgc3RhY2tzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgZGVzdHJveSB0aGUgZ2l2ZW4gc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1c2l2ZWx5PzogYm9vbGVhbjtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/index.d.ts b/packages/cdk-cli-wrapper/lib/commands/index.d.ts deleted file mode 100644 index 33e0e77569a92..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './synth'; -export * from './common'; -export * from './deploy'; -export * from './destroy'; -export * from './list'; diff --git a/packages/cdk-cli-wrapper/lib/commands/index.js b/packages/cdk-cli-wrapper/lib/commands/index.js deleted file mode 100644 index a9b8ec15dca49..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/index.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./synth"), exports); -__exportStar(require("./common"), exports); -__exportStar(require("./deploy"), exports); -__exportStar(require("./destroy"), exports); -__exportStar(require("./list"), exports); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIseUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zeW50aCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2RlcGxveSc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc3Ryb3knO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0JztcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/list.d.ts b/packages/cdk-cli-wrapper/lib/commands/list.d.ts deleted file mode 100644 index acc752155affb..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/list.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DefaultCdkOptions } from './common'; -/** - * Options for cdk list - */ -export interface ListOptions extends DefaultCdkOptions { - /** - *Display environment information for each stack - * - * @default false - */ - readonly long?: boolean; -} diff --git a/packages/cdk-cli-wrapper/lib/commands/list.js b/packages/cdk-cli-wrapper/lib/commands/list.js deleted file mode 100644 index 0912bb75d266f..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/list.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDZGtPcHRpb25zIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNkayBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnMgZXh0ZW5kcyBEZWZhdWx0Q2RrT3B0aW9ucyB7XG4gIC8qKlxuICAgKkRpc3BsYXkgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24gZm9yIGVhY2ggc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxvbmc/OiBib29sZWFuO1xufVxuIl19 \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/commands/synth.d.ts b/packages/cdk-cli-wrapper/lib/commands/synth.d.ts deleted file mode 100644 index 16a66236889d4..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/synth.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { DefaultCdkOptions } from './common'; -/** - * Options to use with cdk synth - */ -export interface SynthOptions extends DefaultCdkOptions { - /** - * After synthesis, validate stacks with the "validateOnSynth" - * attribute set (can also be controlled with CDK_VALIDATION) - * - * @default true; - */ - readonly validation?: boolean; - /** - * Do not output CloudFormation Template to stdout - * @default false; - */ - readonly quiet?: boolean; - /** - * Only synthesize the given stack - * - * @default false - */ - readonly exclusively?: boolean; -} diff --git a/packages/cdk-cli-wrapper/lib/commands/synth.js b/packages/cdk-cli-wrapper/lib/commands/synth.js deleted file mode 100644 index c8a5cc4d5430f..0000000000000 --- a/packages/cdk-cli-wrapper/lib/commands/synth.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzeW50aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENka09wdGlvbnMgfSBmcm9tICcuL2NvbW1vbic7XG5cbi8qKlxuICogT3B0aW9ucyB0byB1c2Ugd2l0aCBjZGsgc3ludGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aE9wdGlvbnMgZXh0ZW5kcyBEZWZhdWx0Q2RrT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIEFmdGVyIHN5bnRoZXNpcywgdmFsaWRhdGUgc3RhY2tzIHdpdGggdGhlIFwidmFsaWRhdGVPblN5bnRoXCJcbiAgICogYXR0cmlidXRlIHNldCAoY2FuIGFsc28gYmUgY29udHJvbGxlZCB3aXRoIENES19WQUxJREFUSU9OKVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlO1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBvdXRwdXQgQ2xvdWRGb3JtYXRpb24gVGVtcGxhdGUgdG8gc3Rkb3V0XG4gICAqIEBkZWZhdWx0IGZhbHNlO1xuICAgKi9cbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPbmx5IHN5bnRoZXNpemUgdGhlIGdpdmVuIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBleGNsdXNpdmVseT86IGJvb2xlYW47XG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/index.d.ts b/packages/cdk-cli-wrapper/lib/index.d.ts deleted file mode 100644 index a7ee3249f4cbe..0000000000000 --- a/packages/cdk-cli-wrapper/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './cdk-wrapper'; -export * from './commands'; diff --git a/packages/cdk-cli-wrapper/lib/index.js b/packages/cdk-cli-wrapper/lib/index.js deleted file mode 100644 index 290551246d018..0000000000000 --- a/packages/cdk-cli-wrapper/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./cdk-wrapper"), exports); -__exportStar(require("./commands"), exports); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxnREFBOEI7QUFDOUIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jZGstd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzJztcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/lib/utils.d.ts b/packages/cdk-cli-wrapper/lib/utils.d.ts deleted file mode 100644 index 1b087b5d46a9a..0000000000000 --- a/packages/cdk-cli-wrapper/lib/utils.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Our own execute function which doesn't use shells and strings. - */ -export declare function exec(commandLine: string[], options?: { - cwd?: string; - json?: boolean; - verbose?: boolean; - env?: any; -}): any; diff --git a/packages/cdk-cli-wrapper/lib/utils.js b/packages/cdk-cli-wrapper/lib/utils.js deleted file mode 100644 index 942a038fb0407..0000000000000 --- a/packages/cdk-cli-wrapper/lib/utils.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.exec = void 0; -// Helper functions for CDK Exec -const child_process_1 = require("child_process"); -/** - * Our own execute function which doesn't use shells and strings. - */ -function exec(commandLine, options = {}) { - const proc = child_process_1.spawnSync(commandLine[0], commandLine.slice(1), { - stdio: ['ignore', 'pipe', options.verbose ? 'inherit' : 'pipe'], - env: { - ...process.env, - ...options.env, - }, - cwd: options.cwd, - }); - if (proc.error) { - throw proc.error; - } - if (proc.status !== 0) { - if (process.stderr) { // will be 'null' in verbose mode - process.stderr.write(proc.stderr); - } - throw new Error(`Command exited with ${proc.status ? `status ${proc.status}` : `signal ${proc.signal}`}`); - } - const output = proc.stdout.toString('utf-8').trim(); - try { - if (options.json) { - if (output.length === 0) { - return {}; - } - return JSON.parse(output); - } - return output; - } - catch (e) { - // eslint-disable-next-line no-console - console.error('Not JSON: ' + output); - throw new Error('Command output is not JSON'); - } -} -exports.exec = exec; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQ0FBZ0M7QUFDaEMsaURBQTBDO0FBRTFDOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLFdBQXFCLEVBQUUsVUFBMEUsRUFBRztJQUN2SCxNQUFNLElBQUksR0FBRyx5QkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNELEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0QsR0FBRyxFQUFFO1lBQ0gsR0FBRyxPQUFPLENBQUMsR0FBRztZQUNkLEdBQUcsT0FBTyxDQUFDLEdBQUc7U0FDZjtRQUNELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztLQUNqQixDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUM7S0FBRTtJQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLGlDQUFpQztZQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzNHO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFcEQsSUFBSTtRQUNGLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUFFLE9BQU8sRUFBRSxDQUFDO2FBQUU7WUFFdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1Ysc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUM7QUFoQ0Qsb0JBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgQ0RLIEV4ZWNcbmltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG4vKipcbiAqIE91ciBvd24gZXhlY3V0ZSBmdW5jdGlvbiB3aGljaCBkb2Vzbid0IHVzZSBzaGVsbHMgYW5kIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNvbW1hbmRMaW5lOiBzdHJpbmdbXSwgb3B0aW9uczogeyBjd2Q/OiBzdHJpbmcsIGpzb24/OiBib29sZWFuLCB2ZXJib3NlPzogYm9vbGVhbiwgZW52PzogYW55IH0gPSB7IH0pOiBhbnkge1xuICBjb25zdCBwcm9jID0gc3Bhd25TeW5jKGNvbW1hbmRMaW5lWzBdLCBjb21tYW5kTGluZS5zbGljZSgxKSwge1xuICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgb3B0aW9ucy52ZXJib3NlID8gJ2luaGVyaXQnIDogJ3BpcGUnXSwgLy8gaW5oZXJpdCBTVERFUlIgaW4gdmVyYm9zZSBtb2RlXG4gICAgZW52OiB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIC4uLm9wdGlvbnMuZW52LFxuICAgIH0sXG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgfSk7XG5cbiAgaWYgKHByb2MuZXJyb3IpIHsgdGhyb3cgcHJvYy5lcnJvcjsgfVxuICBpZiAocHJvYy5zdGF0dXMgIT09IDApIHtcbiAgICBpZiAocHJvY2Vzcy5zdGRlcnIpIHsgLy8gd2lsbCBiZSAnbnVsbCcgaW4gdmVyYm9zZSBtb2RlXG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShwcm9jLnN0ZGVycik7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWFuZCBleGl0ZWQgd2l0aCAke3Byb2Muc3RhdHVzID8gYHN0YXR1cyAke3Byb2Muc3RhdHVzfWAgOiBgc2lnbmFsICR7cHJvYy5zaWduYWx9YH1gKTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IHByb2Muc3Rkb3V0LnRvU3RyaW5nKCd1dGYtOCcpLnRyaW0oKTtcblxuICB0cnkge1xuICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgIGlmIChvdXRwdXQubGVuZ3RoID09PSAwKSB7IHJldHVybiB7fTsgfVxuXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKCdOb3QgSlNPTjogJyArIG91dHB1dCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG91dHB1dCBpcyBub3QgSlNPTicpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts deleted file mode 100644 index cb0ff5c3b541f..0000000000000 --- a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js b/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js deleted file mode 100644 index 768822b56a363..0000000000000 --- a/packages/cdk-cli-wrapper/test/cdk-wrapper.test.js +++ /dev/null @@ -1,408 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const child_process = require("child_process"); -const cdk_wrapper_1 = require("../lib/cdk-wrapper"); -const commands_1 = require("../lib/commands"); -let spawnSyncMock; -beforeEach(() => { - spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ - status: 0, - stderr: Buffer.from('stderr'), - stdout: Buffer.from('stdout'), - pid: 123, - output: ['stdout', 'stderr'], - signal: null, - }); -}); -afterEach(() => { - jest.resetAllMocks(); - jest.restoreAllMocks(); - jest.clearAllMocks(); -}); -test('default deploy', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['deploy', '--progress', 'events', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ - env: expect.anything(), - cwd: '/project', - })); -}); -test('deploy with all arguments', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - ci: false, - json: true, - color: false, - debug: false, - force: true, - proxy: 'https://proxy', - trace: false, - output: 'cdk.out', - strict: false, - execute: true, - lookups: false, - notices: true, - profile: 'my-profile', - roleArn: 'arn:aws:iam::1111111111:role/my-role', - staging: false, - verbose: true, - ec2Creds: true, - rollback: false, - exclusively: true, - outputsFile: 'outputs.json', - reuseAssets: [ - 'asset1234', - 'asset5678', - ], - caBundlePath: '/some/path', - ignoreErrors: false, - pathMetadata: false, - assetMetadata: true, - changeSetName: 'my-change-set', - requireApproval: commands_1.RequireApproval.NEVER, - toolkitStackName: 'Toolkit', - versionReporting: true, - usePreviousParameters: true, - progress: commands_1.StackActivityProgress.BAR, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), expect.arrayContaining([ - 'deploy', - '--no-strict', - '--no-trace', - '--no-lookups', - '--no-ignore-errors', - '--json', - '--verbose', - '--no-debug', - '--ec2creds', - '--version-reporting', - '--no-path-metadata', - '--asset-metadata', - '--notices', - '--no-color', - '--profile', 'my-profile', - '--proxy', 'https://proxy', - '--ca-bundle-path', '/some/path', - '--role-arn', 'arn:aws:iam::1111111111:role/my-role', - '--output', 'cdk.out', - '--no-ci', - '--execute', - '--exclusively', - '--force', - '--no-rollback', - '--no-staging', - '--reuse-assets', 'asset1234', - '--reuse-assets', 'asset5678', - '--outputs-file', 'outputs.json', - '--require-approval', 'never', - '--change-set-name', 'my-change-set', - '--toolkit-stack-name', 'Toolkit', - '--previous-parameters', - '--progress', 'bar', - '--app', - 'node bin/my-app.js', - 'test-stack1', - ]), expect.objectContaining({ - env: expect.anything(), - stdio: ['ignore', 'pipe', 'pipe'], - cwd: '/project', - })); -}); -test('can parse boolean arguments', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - json: true, - color: false, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ - 'deploy', - '--progress', 'events', - '--app', - 'node bin/my-app.js', - '--json', - '--no-color', - 'test-stack1', - ], expect.objectContaining({ - env: expect.anything(), - stdio: ['ignore', 'pipe', 'pipe'], - cwd: '/project', - })); -}); -test('can parse parameters', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - parameters: { - 'myparam': 'test', - 'test-stack1:myotherparam': 'test', - }, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ - 'deploy', - '--parameters', 'myparam=test', - '--parameters', 'test-stack1:myotherparam=test', - '--progress', 'events', - '--app', - 'node bin/my-app.js', - 'test-stack1', - ], expect.objectContaining({ - env: expect.anything(), - cwd: '/project', - })); -}); -test('can parse context', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - context: { - 'myContext': 'value', - 'test-stack1:OtherContext': 'otherValue', - }, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ - 'deploy', - '--progress', 'events', - '--app', - 'node bin/my-app.js', - '--context', 'myContext=value', - '--context', 'test-stack1:OtherContext=otherValue', - 'test-stack1', - ], expect.objectContaining({ - env: expect.anything(), - cwd: '/project', - })); -}); -test('can parse array arguments', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - notificationArns: [ - 'arn:aws:us-east-1:1111111111:some:resource', - 'arn:aws:us-east-1:1111111111:some:other-resource', - ], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), [ - 'deploy', - '--notification-arns', 'arn:aws:us-east-1:1111111111:some:resource', - '--notification-arns', 'arn:aws:us-east-1:1111111111:some:other-resource', - '--progress', 'events', - '--app', - 'node bin/my-app.js', - 'test-stack1', - ], expect.objectContaining({ - env: expect.anything(), - cwd: '/project', - })); -}); -test('can provide additional environment', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.deploy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['deploy', '--progress', 'events', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); -}); -test('default synth', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.synth({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['synth', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); -}); -test('synth arguments', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.destroy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['destroy', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); -}); -test('destroy arguments', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.destroy({ - app: 'node bin/my-app.js', - stacks: ['test-stack1'], - force: true, - exclusively: false, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['destroy', '--force', '--no-exclusively', '--app', 'node bin/my-app.js', 'test-stack1'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); -}); -test('default ls', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.list({ - app: 'node bin/my-app.js', - stacks: ['*'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['ls', '--app', 'node bin/my-app.js', '*'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); -}); -test('ls arguments', () => { - // WHEN - spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ - status: 0, - stderr: Buffer.from('stderr'), - stdout: Buffer.from('test-stack1\ntest-stack2'), - pid: 123, - output: ['stdout', 'stderr'], - signal: null, - }); - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - const list = cdk.list({ - app: 'node bin/my-app.js', - stacks: ['*'], - long: true, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith(expect.stringMatching(/cdk/), ['ls', '--long', '--app', 'node bin/my-app.js', '*'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - }), - cwd: '/project', - })); - expect(list).toEqual('test-stack1\ntest-stack2'); -}); -test('can synth fast', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - env: { - KEY: 'value', - }, - }); - cdk.synthFast({ - execCmd: ['node', 'bin/my-app.js'], - output: 'cdk.output', - env: { - OTHERKEY: 'othervalue', - }, - context: { - CONTEXT: 'value', - }, - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith('node', ['bin/my-app.js'], expect.objectContaining({ - env: expect.objectContaining({ - KEY: 'value', - OTHERKEY: 'othervalue', - CDK_OUTDIR: 'cdk.output', - CDK_CONTEXT_JSON: '{\"CONTEXT\":\"value\"}', - }), - cwd: '/project', - })); -}); -test('can show output', () => { - // WHEN - const cdk = new cdk_wrapper_1.CdkCliWrapper({ - directory: '/project', - showOutput: true, - }); - cdk.synthFast({ - execCmd: ['node', 'bin/my-app.js'], - }); - // THEN - expect(spawnSyncMock).toHaveBeenCalledWith('node', ['bin/my-app.js'], expect.objectContaining({ - env: expect.anything(), - stdio: ['ignore', 'pipe', 'inherit'], - cwd: '/project', - })); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXdyYXBwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay13cmFwcGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBK0M7QUFDL0Msb0RBQW1EO0FBQ25ELDhDQUF5RTtBQUN6RSxJQUFJLGFBQStCLENBQUM7QUFFcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFDckUsTUFBTSxFQUFFLENBQUM7UUFDVCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEdBQUcsRUFBRSxHQUFHO1FBQ1IsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUM1QixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUMxQixPQUFPO0lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBYSxDQUFDO1FBQzVCLFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUMsQ0FBQztJQUNILEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDVCxHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUN4QixDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLG9CQUFv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LENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLG9CQUFvQixDQUN4QyxNQUFNLEVBQ04sQ0FBQyxlQUFlLENBQUMsRUFDakIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3RCLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ3RCLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLEdBQUcsRUFBRSxVQUFVO0tBQ2hCLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgQ2RrQ2xpV3JhcHBlciB9IGZyb20gJy4uL2xpYi9jZGstd3JhcHBlcic7XG5pbXBvcnQgeyBSZXF1aXJlQXBwcm92YWwsIFN0YWNrQWN0aXZpdHlQcm9ncmVzcyB9IGZyb20gJy4uL2xpYi9jb21tYW5kcyc7XG5sZXQgc3Bhd25TeW5jTW9jazogamVzdC5TcHlJbnN0YW5jZTtcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIHNwYXduU3luY01vY2sgPSBqZXN0LnNweU9uKGNoaWxkX3Byb2Nlc3MsICdzcGF3blN5bmMnKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgIHN0YXR1czogMCxcbiAgICBzdGRlcnI6IEJ1ZmZlci5mcm9tKCdzdGRlcnInKSxcbiAgICBzdGRvdXQ6IEJ1ZmZlci5mcm9tKCdzdGRvdXQnKSxcbiAgICBwaWQ6IDEyMyxcbiAgICBvdXRwdXQ6IFsnc3Rkb3V0JywgJ3N0ZGVyciddLFxuICAgIHNpZ25hbDogbnVsbCxcbiAgfSk7XG59KTtcblxuYWZ0ZXJFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG4gIGplc3QuY2xlYXJBbGxNb2NrcygpO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQgZGVwbG95JywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVwbG95JywgJy0tcHJvZ3Jlc3MnLCAnZXZlbnRzJywgJy0tYXBwJywgJ25vZGUgYmluL215LWFwcC5qcycsICd0ZXN0LXN0YWNrMSddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVwbG95IHdpdGggYWxsIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgICBjaTogZmFsc2UsXG4gICAganNvbjogdHJ1ZSxcbiAgICBjb2xvcjogZmFsc2UsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIGZvcmNlOiB0cnVlLFxuICAgIHByb3h5OiAnaHR0cHM6Ly9wcm94eScsXG4gICAgdHJhY2U6IGZhbHNlLFxuICAgIG91dHB1dDogJ2Nkay5vdXQnLFxuICAgIHN0cmljdDogZmFsc2UsXG4gICAgZXhlY3V0ZTogdHJ1ZSxcbiAgICBsb29rdXBzOiBmYWxzZSxcbiAgICBub3RpY2VzOiB0cnVlLFxuICAgIHByb2ZpbGU6ICdteS1wcm9maWxlJyxcbiAgICByb2xlQXJuOiAnYXJuOmF3czppYW06OjExMTExMTExMTE6cm9sZS9teS1yb2xlJyxcbiAgICBzdGFnaW5nOiBmYWxzZSxcbiAgICB2ZXJib3NlOiB0cnVlLFxuICAgIGVjMkNyZWRzOiB0cnVlLFxuICAgIHJvbGxiYWNrOiBmYWxzZSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBvdXRwdXRzRmlsZTogJ291dHB1dHMuanNvbicsXG4gICAgcmV1c2VBc3NldHM6IFtcbiAgICAgICdhc3NldDEyMzQnLFxuICAgICAgJ2Fzc2V0NTY3OCcsXG4gICAgXSxcbiAgICBjYUJ1bmRsZVBhdGg6ICcvc29tZS9wYXRoJyxcbiAgICBpZ25vcmVFcnJvcnM6IGZhbHNlLFxuICAgIHBhdGhNZXRhZGF0YTogZmFsc2UsXG4gICAgYXNzZXRNZXRhZGF0YTogdHJ1ZSxcbiAgICBjaGFuZ2VTZXROYW1lOiAnbXktY2hhbmdlLXNldCcsXG4gICAgcmVxdWlyZUFwcHJvdmFsOiBSZXF1aXJlQXBwcm92YWwuTkVWRVIsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogJ1Rvb2xraXQnLFxuICAgIHZlcnNpb25SZXBvcnRpbmc6IHRydWUsXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICAgIHByb2dyZXNzOiBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQkFSLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW1xuICAgICAgJ2RlcGxveScsXG4gICAgICAnLS1uby1zdHJpY3QnLFxuICAgICAgJy0tbm8tdHJhY2UnLFxuICAgICAgJy0tbm8tbG9va3VwcycsXG4gICAgICAnLS1uby1pZ25vcmUtZXJyb3JzJyxcbiAgICAgICctLWpzb24nLFxuICAgICAgJy0tdmVyYm9zZScsXG4gICAgICAnLS1uby1kZWJ1ZycsXG4gICAgICAnLS1lYzJjcmVkcycsXG4gICAgICAnLS12ZXJzaW9uLXJlcG9ydGluZycsXG4gICAgICAnLS1uby1wYXRoLW1ldGFkYXRhJyxcbiAgICAgICctLWFzc2V0LW1ldGFkYXRhJyxcbiAgICAgICctLW5vdGljZXMnLFxuICAgICAgJy0tbm8tY29sb3InLFxuICAgICAgJy0tcHJvZmlsZScsICdteS1wcm9maWxlJyxcbiAgICAgICctLXByb3h5JywgJ2h0dHBzOi8vcHJveHknLFxuICAgICAgJy0tY2EtYnVuZGxlLXBhdGgnLCAnL3NvbWUvcGF0aCcsXG4gICAgICAnLS1yb2xlLWFybicsICdhcm46YXdzOmlhbTo6MTExMTExMTExMTpyb2xlL215LXJvbGUnLFxuICAgICAgJy0tb3V0cHV0JywgJ2Nkay5vdXQnLFxuICAgICAgJy0tbm8tY2knLFxuICAgICAgJy0tZXhlY3V0ZScsXG4gICAgICAnLS1leGNsdXNpdmVseScsXG4gICAgICAnLS1mb3JjZScsXG4gICAgICAnLS1uby1yb2xsYmFjaycsXG4gICAgICAnLS1uby1zdGFnaW5nJyxcbiAgICAgICctLXJldXNlLWFzc2V0cycsICdhc3NldDEyMzQnLFxuICAgICAgJy0tcmV1c2UtYXNzZXRzJywgJ2Fzc2V0NTY3OCcsXG4gICAgICAnLS1vdXRwdXRzLWZpbGUnLCAnb3V0cHV0cy5qc29uJyxcbiAgICAgICctLXJlcXVpcmUtYXBwcm92YWwnLCAnbmV2ZXInLFxuICAgICAgJy0tY2hhbmdlLXNldC1uYW1lJywgJ215LWNoYW5nZS1zZXQnLFxuICAgICAgJy0tdG9vbGtpdC1zdGFjay1uYW1lJywgJ1Rvb2xraXQnLFxuICAgICAgJy0tcHJldmlvdXMtcGFyYW1ldGVycycsXG4gICAgICAnLS1wcm9ncmVzcycsICdiYXInLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxJyxcbiAgICBdKSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBib29sZWFuIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgICBqc29uOiB0cnVlLFxuICAgIGNvbG9yOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbXG4gICAgICAnZGVwbG95JyxcbiAgICAgICctLXByb2dyZXNzJywgJ2V2ZW50cycsXG4gICAgICAnLS1hcHAnLFxuICAgICAgJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgICAnLS1qc29uJyxcbiAgICAgICctLW5vLWNvbG9yJyxcbiAgICAgICd0ZXN0LXN0YWNrMScsXG4gICAgXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBwYXJhbWV0ZXJzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICdteXBhcmFtJzogJ3Rlc3QnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxOm15b3RoZXJwYXJhbSc6ICd0ZXN0JyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFtcbiAgICAgICdkZXBsb3knLFxuICAgICAgJy0tcGFyYW1ldGVycycsICdteXBhcmFtPXRlc3QnLFxuICAgICAgJy0tcGFyYW1ldGVycycsICd0ZXN0LXN0YWNrMTpteW90aGVycGFyYW09dGVzdCcsXG4gICAgICAnLS1wcm9ncmVzcycsICdldmVudHMnLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJ3Rlc3Qtc3RhY2sxJyxcbiAgICBdLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnY2FuIHBhcnNlIGNvbnRleHQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgfSk7XG4gIGNkay5kZXBsb3koe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgY29udGV4dDoge1xuICAgICAgJ215Q29udGV4dCc6ICd2YWx1ZScsXG4gICAgICAndGVzdC1zdGFjazE6T3RoZXJDb250ZXh0JzogJ290aGVyVmFsdWUnLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNwYXduU3luY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZygvY2RrLyksXG4gICAgW1xuICAgICAgJ2RlcGxveScsXG4gICAgICAnLS1wcm9ncmVzcycsICdldmVudHMnLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgICAgJy0tY29udGV4dCcsICdteUNvbnRleHQ9dmFsdWUnLFxuICAgICAgJy0tY29udGV4dCcsICd0ZXN0LXN0YWNrMTpPdGhlckNvbnRleHQ9b3RoZXJWYWx1ZScsXG4gICAgICAndGVzdC1zdGFjazEnLFxuICAgIF0sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2UgYXJyYXkgYXJndW1lbnRzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gIH0pO1xuICBjZGsuZGVwbG95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICAgIG5vdGlmaWNhdGlvbkFybnM6IFtcbiAgICAgICdhcm46YXdzOnVzLWVhc3QtMToxMTExMTExMTExOnNvbWU6cmVzb3VyY2UnLFxuICAgICAgJ2Fybjphd3M6dXMtZWFzdC0xOjExMTExMTExMTE6c29tZTpvdGhlci1yZXNvdXJjZScsXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbXG4gICAgICAnZGVwbG95JyxcbiAgICAgICctLW5vdGlmaWNhdGlvbi1hcm5zJywgJ2Fybjphd3M6dXMtZWFzdC0xOjExMTExMTExMTE6c29tZTpyZXNvdXJjZScsXG4gICAgICAnLS1ub3RpZmljYXRpb24tYXJucycsICdhcm46YXdzOnVzLWVhc3QtMToxMTExMTExMTExOnNvbWU6b3RoZXItcmVzb3VyY2UnLFxuICAgICAgJy0tcHJvZ3Jlc3MnLCAnZXZlbnRzJyxcbiAgICAgICctLWFwcCcsXG4gICAgICAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICAgICd0ZXN0LXN0YWNrMScsXG4gICAgXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2NhbiBwcm92aWRlIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmRlcGxveSh7XG4gICAgYXBwOiAnbm9kZSBiaW4vbXktYXBwLmpzJyxcbiAgICBzdGFja3M6IFsndGVzdC1zdGFjazEnXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2RlcGxveScsICctLXByb2dyZXNzJywgJ2V2ZW50cycsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVmYXVsdCBzeW50aCcsICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBjZGsgPSBuZXcgQ2RrQ2xpV3JhcHBlcih7XG4gICAgZGlyZWN0b3J5OiAnL3Byb2plY3QnLFxuICAgIGVudjoge1xuICAgICAgS0VZOiAndmFsdWUnLFxuICAgIH0sXG4gIH0pO1xuICBjZGsuc3ludGgoe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNwYXduU3luY01vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZygvY2RrLyksXG4gICAgWydzeW50aCcsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnc3ludGggYXJndW1lbnRzJywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gICAgZW52OiB7XG4gICAgICBLRVk6ICd2YWx1ZScsXG4gICAgfSxcbiAgfSk7XG4gIGNkay5kZXN0cm95KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWyd0ZXN0LXN0YWNrMSddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVzdHJveScsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAndGVzdC1zdGFjazEnXSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBlbnY6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgS0VZOiAndmFsdWUnLFxuICAgICAgfSksXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVzdHJveSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmRlc3Ryb3koe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgZm9yY2U6IHRydWUsXG4gICAgZXhjbHVzaXZlbHk6IGZhbHNlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL2Nkay8pLFxuICAgIFsnZGVzdHJveScsICctLWZvcmNlJywgJy0tbm8tZXhjbHVzaXZlbHknLCAnLS1hcHAnLCAnbm9kZSBiaW4vbXktYXBwLmpzJywgJ3Rlc3Qtc3RhY2sxJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgIH0pLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQgbHMnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY2RrLmxpc3Qoe1xuICAgIGFwcDogJ25vZGUgYmluL215LWFwcC5qcycsXG4gICAgc3RhY2tzOiBbJyonXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2xzJywgJy0tYXBwJywgJ25vZGUgYmluL215LWFwcC5qcycsICcqJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgIH0pLFxuICAgICAgY3dkOiAnL3Byb2plY3QnLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ2xzIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gV0hFTlxuICBzcGF3blN5bmNNb2NrID0gamVzdC5zcHlPbihjaGlsZF9wcm9jZXNzLCAnc3Bhd25TeW5jJykubW9ja1JldHVyblZhbHVlKHtcbiAgICBzdGF0dXM6IDAsXG4gICAgc3RkZXJyOiBCdWZmZXIuZnJvbSgnc3RkZXJyJyksXG4gICAgc3Rkb3V0OiBCdWZmZXIuZnJvbSgndGVzdC1zdGFjazFcXG50ZXN0LXN0YWNrMicpLFxuICAgIHBpZDogMTIzLFxuICAgIG91dHB1dDogWydzdGRvdXQnLCAnc3RkZXJyJ10sXG4gICAgc2lnbmFsOiBudWxsLFxuICB9KTtcbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBlbnY6IHtcbiAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgbGlzdCA9IGNkay5saXN0KHtcbiAgICBhcHA6ICdub2RlIGJpbi9teS1hcHAuanMnLFxuICAgIHN0YWNrczogWycqJ10sXG4gICAgbG9uZzogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9jZGsvKSxcbiAgICBbJ2xzJywgJy0tbG9uZycsICctLWFwcCcsICdub2RlIGJpbi9teS1hcHAuanMnLCAnKiddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICBLRVk6ICd2YWx1ZScsXG4gICAgICB9KSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcblxuICBleHBlY3QobGlzdCkudG9FcXVhbCgndGVzdC1zdGFjazFcXG50ZXN0LXN0YWNrMicpO1xufSk7XG5cbnRlc3QoJ2NhbiBzeW50aCBmYXN0JywgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGNkayA9IG5ldyBDZGtDbGlXcmFwcGVyKHtcbiAgICBkaXJlY3Rvcnk6ICcvcHJvamVjdCcsXG4gICAgZW52OiB7XG4gICAgICBLRVk6ICd2YWx1ZScsXG4gICAgfSxcbiAgfSk7XG4gIGNkay5zeW50aEZhc3Qoe1xuICAgIGV4ZWNDbWQ6IFsnbm9kZScsICdiaW4vbXktYXBwLmpzJ10sXG4gICAgb3V0cHV0OiAnY2RrLm91dHB1dCcsXG4gICAgZW52OiB7XG4gICAgICBPVEhFUktFWTogJ290aGVydmFsdWUnLFxuICAgIH0sXG4gICAgY29udGV4dDoge1xuICAgICAgQ09OVEVYVDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzcGF3blN5bmNNb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAnbm9kZScsXG4gICAgWydiaW4vbXktYXBwLmpzJ10sXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgZW52OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIEtFWTogJ3ZhbHVlJyxcbiAgICAgICAgT1RIRVJLRVk6ICdvdGhlcnZhbHVlJyxcbiAgICAgICAgQ0RLX09VVERJUjogJ2Nkay5vdXRwdXQnLFxuICAgICAgICBDREtfQ09OVEVYVF9KU09OOiAne1xcXCJDT05URVhUXFxcIjpcXFwidmFsdWVcXFwifScsXG4gICAgICB9KSxcbiAgICAgIGN3ZDogJy9wcm9qZWN0JyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdjYW4gc2hvdyBvdXRwdXQnLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgY2RrID0gbmV3IENka0NsaVdyYXBwZXIoe1xuICAgIGRpcmVjdG9yeTogJy9wcm9qZWN0JyxcbiAgICBzaG93T3V0cHV0OiB0cnVlLFxuICB9KTtcbiAgY2RrLnN5bnRoRmFzdCh7XG4gICAgZXhlY0NtZDogWydub2RlJywgJ2Jpbi9teS1hcHAuanMnXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc3Bhd25TeW5jTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgJ25vZGUnLFxuICAgIFsnYmluL215LWFwcC5qcyddLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGVudjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdpbmhlcml0J10sXG4gICAgICBjd2Q6ICcvcHJvamVjdCcsXG4gICAgfSksXG4gICk7XG59KTtcbiJdfQ== \ No newline at end of file diff --git a/packages/cdk-cli-wrapper/tsconfig.json b/packages/cdk-cli-wrapper/tsconfig.json deleted file mode 100644 index 3e962eca10f67..0000000000000 --- a/packages/cdk-cli-wrapper/tsconfig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "compilerOptions": { - "declarationMap": false, - "inlineSourceMap": true, - "inlineSources": true, - "alwaysStrict": true, - "charset": "utf8", - "declaration": true, - "experimentalDecorators": true, - "incremental": true, - "lib": [ - "es2020" - ], - "module": "CommonJS", - "newLine": "lf", - "noEmitOnError": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "strictNullChecks": true, - "strictPropertyInitialization": true, - "stripInternal": false, - "target": "ES2020", - "composite": true, - "tsBuildInfoFile": "tsconfig.tsbuildinfo" - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "node_modules" - ], - "references": [ - { - "path": "../../tools/@aws-cdk/cdk-build-tools" - }, - { - "path": "../../tools/@aws-cdk/pkglint" - } - ], - "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" -}