├── .github ├── dependabot.yaml └── workflows │ └── workflow.yaml ├── .gitignore ├── .mergify.yml ├── .npmignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── bin └── cdk-amplify-console.ts ├── cdk.json ├── lib └── cdk-amplify-console-stack.ts ├── package-lock.json ├── package.json └── tsconfig.json /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | versioning-strategy: lockfile-only 5 | directory: / 6 | schedule: 7 | interval: weekly 8 | - package-ecosystem: github-actions 9 | directory: / 10 | schedule: 11 | interval: weekly -------------------------------------------------------------------------------- /.github/workflows/workflow.yaml: -------------------------------------------------------------------------------- 1 | name: Build and Synth 2 | 3 | on: 4 | pull_request: {} 5 | workflow_dispatch: {} 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | env: 10 | CI: "true" 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v3 14 | - name: Install dependencies 15 | run: npm ci 16 | - name: Anti-tamper check 17 | run: git diff --exit-code 18 | - name: Set git identity 19 | run: |- 20 | git config user.name "Auto-bump" 21 | git config user.email "github-actions@github.com" 22 | - name: Build 23 | run: npm run build 24 | - name: Synth 25 | run: npx aws-cdk@next synth 26 | - name: Anti-tamper check 27 | run: git diff --exit-code -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.js 2 | !jest.config.js 3 | *.d.ts 4 | node_modules 5 | 6 | # CDK asset staging directory 7 | .cdk.staging 8 | cdk.out 9 | 10 | # Parcel build directories 11 | .cache 12 | .build 13 | -------------------------------------------------------------------------------- /.mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | - name: Automatic merge on approval and successful build 3 | actions: 4 | merge: 5 | method: squash 6 | commit_message: title+body 7 | strict: smart 8 | strict_method: merge 9 | delete_head_branch: {} 10 | conditions: 11 | - "#approved-reviews-by>=1" 12 | - status-success=build 13 | - name: Automatic merge PRs with auto-merge label upon successful build 14 | actions: 15 | merge: 16 | method: squash 17 | commit_message: title+body 18 | strict: smart 19 | strict_method: merge 20 | delete_head_branch: {} 21 | conditions: 22 | - label=auto-merge 23 | - status-success=build 24 | - name: Merge pull requests from dependabot if CI passes 25 | conditions: 26 | - author=dependabot[bot] 27 | - status-success=build 28 | actions: 29 | merge: 30 | method: squash 31 | commit_message: title+body 32 | strict: smart 33 | strict_method: merge -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.ts 2 | !*.d.ts 3 | 4 | # CDK asset staging directory 5 | .cdk.staging 6 | cdk.out 7 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "semi": true, 6 | "singleQuote": true, 7 | "trailingComma": "all", 8 | "bracketSpacing": true, 9 | "arrowParens": "always", 10 | "endOfLine": "lf" 11 | } 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Niko Virtala 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Configure AWS Amplify Console with AWS CDK 2 | 3 | ## TL;DR 4 | 5 | In this example, I'll show you how to configure AWS Amplify Console using the AWS Cloud Development Kit (CDK). 6 | 7 | This example enables the following configuration: 8 | 9 | - Connect to the page [source repository](https://github.com/nikovirtala/amplify-console-demo/) in GitHub 10 | - Enable deployment from `master` and `dev` branches 11 | - Enable feature branch preview deployments 12 | - Deploy artifacts from source repository root and subfolders 13 | - Configure custom domain `amplified.host` 14 | - `master` branch: https://amplified.host 15 | - `dev` branch: https://dev.amplified.host 16 | 17 | All this configuration is done on: `lib/cdk-amplify-console-stack.ts` 18 | 19 | The sample code reads the GitHub Personal Access Token from AWS Secrets Manager. You can store the secret there, using the following CLI command: 20 | 21 | `aws secretsmanager create-secret --name github-access-token --secret-string ` 22 | 23 | ## The Stack 24 | 25 | ### AWS Amplify Console 26 | 27 | > The [AWS Amplify Console](https://aws.amazon.com/amplify/console/) provides a Git-based workflow for hosting fullstack serverless web apps with continuous deployment. A fullstack serverless app consists of a backend built with cloud resources such as GraphQL or REST APIs, file and data storage, and a frontend built with single page application frameworks such as React, Angular, Vue, or Gatsby. 28 | > 29 | > AWS Amplify Console supports common Single Page App (SPA) frameworks (e.g. React, Angular, Vue.js, Ionic, Ember), as well as static-site generators like Gatsby, Eleventy, Hugo, VuePress, and Jekyll. 30 | 31 | ### AWS Cloud Development Kit 32 | 33 | > The [AWS Cloud Development Kit](https://docs.aws.amazon.com/cdk/index.html) (AWS CDK) is a software development framework for defining your cloud infrastructure in code and provisioning it through AWS CloudFormation. 34 | 35 | In my example we use Typescript, and the project was inited with the command: `cdk init app --language typescript` 36 | 37 | ### `aws-amplify` CDK Module 38 | 39 | In this example we use [aws-amplify CDK module](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-amplify-readme.html). 40 | 41 | ### GitHub Actions 42 | 43 | ![](https://github.com/nikovirtala/cdk-amplify-console/workflows/Deploy%20to%20AWS%20Amplify%20Console/badge.svg) 44 | 45 | ## To-Do 46 | 47 | - [x] Complete the GitHub Actions workflow 48 | 49 | ## Useful commands 50 | 51 | - `npm run build` compile typescript to js 52 | - `npm run watch` watch for changes and compile 53 | - `cdk deploy` deploy this stack to your default AWS account/region 54 | - `cdk diff` compare deployed stack with the current state 55 | - `cdk synth` emits the synthesized CloudFormation template 56 | -------------------------------------------------------------------------------- /bin/cdk-amplify-console.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import 'source-map-support/register'; 3 | import * as cdk from 'aws-cdk-lib'; 4 | import { AwsCdkAmplifyConsoleStack } from '../lib/cdk-amplify-console-stack'; 5 | 6 | const app = new cdk.App(); 7 | new AwsCdkAmplifyConsoleStack(app, 'AwsCdkAmplifyConsoleStack', { 8 | env: { 9 | account: process.env.CDK_DEFAULT_ACCOUNT, 10 | region: process.env.CDK_DEFAULT_REGION, 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /cdk.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": "npx ts-node bin/cdk-amplify-console.ts", 3 | "context": { 4 | "@aws-cdk/core:newStyleStackSynthesis": "true", 5 | "aws-cdk:enableDiffNoFail": "true" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lib/cdk-amplify-console-stack.ts: -------------------------------------------------------------------------------- 1 | import { Stack, StackProps, SecretValue, aws_amplify, aws_codebuild } from 'aws-cdk-lib'; 2 | import { Construct } from 'constructs'; 3 | import * as aws_amplify_alpha from '@aws-cdk/aws-amplify-alpha'; 4 | 5 | export class AwsCdkAmplifyConsoleStack extends Stack { 6 | constructor(scope: Construct, id: string, props?: StackProps) { 7 | super(scope, id, props); 8 | 9 | const amplifyApp = new aws_amplify_alpha.App(this, 'AmplifyConsoleDemo', { 10 | sourceCodeProvider: new aws_amplify_alpha.GitHubSourceCodeProvider({ 11 | owner: 'nikovirtala', 12 | repository: 'amplify-console-demo', 13 | oauthToken: SecretValue.secretsManager('github-access-token'), 14 | }), 15 | autoBranchCreation: { 16 | patterns: ['*'], 17 | basicAuth: aws_amplify_alpha.BasicAuth.fromGeneratedPassword('username'), 18 | }, 19 | autoBranchDeletion: true, 20 | buildSpec: aws_codebuild.BuildSpec.fromObject({ 21 | version: '1.0', 22 | frontend: { 23 | artifacts: { 24 | baseDirectory: '/', 25 | files: '**/*', 26 | }, 27 | }, 28 | }), 29 | }); 30 | 31 | const master = amplifyApp.addBranch('master'); 32 | const dev = amplifyApp.addBranch('dev', { 33 | basicAuth: aws_amplify_alpha.BasicAuth.fromGeneratedPassword('username'), 34 | }); 35 | 36 | const domain = amplifyApp.addDomain('amplified.host'); 37 | domain.mapRoot(master); 38 | domain.mapSubDomain(master, 'www'); 39 | domain.mapSubDomain(dev); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cdk-amplify-console", 3 | "version": "2.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "cdk-amplify-console", 9 | "version": "2.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@aws-cdk/aws-amplify-alpha": "2.84.0-alpha.0", 13 | "aws-cdk-lib": "2.84.0", 14 | "constructs": "10.2.52", 15 | "source-map-support": "0.5.21" 16 | }, 17 | "bin": { 18 | "cdk-amplify-console": "bin/cdk-amplify-console.js" 19 | }, 20 | "devDependencies": { 21 | "@types/node": "16.18.36", 22 | "aws-cdk": "2.84.0", 23 | "ts-node": "10.9.1", 24 | "typescript": "4.9.5" 25 | } 26 | }, 27 | "node_modules/@aws-cdk/asset-awscli-v1": { 28 | "version": "2.2.191", 29 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.191.tgz", 30 | "integrity": "sha512-mV37Y8Lwi0unz+vNxX8CA8spfFGRHmsn0cO+d1NdqDLIvplxM6wwO/IQSzoMTFPOWKHd8kbzW0UUwRlK5fRwYw==" 31 | }, 32 | "node_modules/@aws-cdk/asset-kubectl-v20": { 33 | "version": "2.1.1", 34 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz", 35 | "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==" 36 | }, 37 | "node_modules/@aws-cdk/asset-node-proxy-agent-v5": { 38 | "version": "2.0.165", 39 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.165.tgz", 40 | "integrity": "sha512-bsyLQD/vqXQcc9RDmlM1XqiFNO/yewgVFXmkMcQkndJbmE/jgYkzewwYGrBlfL725hGLQipXq19+jwWwdsXQqg==" 41 | }, 42 | "node_modules/@aws-cdk/aws-amplify-alpha": { 43 | "version": "2.84.0-alpha.0", 44 | "resolved": "https://registry.npmjs.org/@aws-cdk/aws-amplify-alpha/-/aws-amplify-alpha-2.84.0-alpha.0.tgz", 45 | "integrity": "sha512-lknuQzM367kz2iJPa6gxZ8/CvPmDT4sSZNGUaceuxl0+ImQDobHTAM1mAUKgksZyf/V2fp/Xjs8Kc4XtG/bl0w==", 46 | "engines": { 47 | "node": ">= 14.15.0" 48 | }, 49 | "peerDependencies": { 50 | "aws-cdk-lib": "2.84.0", 51 | "constructs": "^10.0.0" 52 | } 53 | }, 54 | "node_modules/@cspotcode/source-map-support": { 55 | "version": "0.8.1", 56 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 57 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 58 | "dev": true, 59 | "dependencies": { 60 | "@jridgewell/trace-mapping": "0.3.9" 61 | }, 62 | "engines": { 63 | "node": ">=12" 64 | } 65 | }, 66 | "node_modules/@jridgewell/resolve-uri": { 67 | "version": "3.1.1", 68 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 69 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 70 | "dev": true, 71 | "engines": { 72 | "node": ">=6.0.0" 73 | } 74 | }, 75 | "node_modules/@jridgewell/sourcemap-codec": { 76 | "version": "1.4.15", 77 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 78 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 79 | "dev": true 80 | }, 81 | "node_modules/@jridgewell/trace-mapping": { 82 | "version": "0.3.9", 83 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 84 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 85 | "dev": true, 86 | "dependencies": { 87 | "@jridgewell/resolve-uri": "^3.0.3", 88 | "@jridgewell/sourcemap-codec": "^1.4.10" 89 | } 90 | }, 91 | "node_modules/@tsconfig/node10": { 92 | "version": "1.0.8", 93 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 94 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 95 | "dev": true 96 | }, 97 | "node_modules/@tsconfig/node12": { 98 | "version": "1.0.9", 99 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 100 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 101 | "dev": true 102 | }, 103 | "node_modules/@tsconfig/node14": { 104 | "version": "1.0.1", 105 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 106 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 107 | "dev": true 108 | }, 109 | "node_modules/@tsconfig/node16": { 110 | "version": "1.0.2", 111 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 112 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 113 | "dev": true 114 | }, 115 | "node_modules/@types/node": { 116 | "version": "16.18.36", 117 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.36.tgz", 118 | "integrity": "sha512-8egDX8dE50XyXWH6C6PRCNkTP106DuUrvdrednFouDSmCi7IOvrqr0frznfZaHifHH/3aq/7a7v9N4wdXMqhBQ==", 119 | "dev": true 120 | }, 121 | "node_modules/acorn": { 122 | "version": "8.6.0", 123 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", 124 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", 125 | "dev": true, 126 | "bin": { 127 | "acorn": "bin/acorn" 128 | }, 129 | "engines": { 130 | "node": ">=0.4.0" 131 | } 132 | }, 133 | "node_modules/acorn-walk": { 134 | "version": "8.2.0", 135 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 136 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 137 | "dev": true, 138 | "engines": { 139 | "node": ">=0.4.0" 140 | } 141 | }, 142 | "node_modules/arg": { 143 | "version": "4.1.3", 144 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 145 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 146 | "dev": true 147 | }, 148 | "node_modules/aws-cdk": { 149 | "version": "2.84.0", 150 | "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.84.0.tgz", 151 | "integrity": "sha512-XypGsMW+H6DLLIPt4zG5KWv1FuUlpS6jqEROxg5maJFFsRaQnMkfgXP/ZT1IELyIWCYAZl6xD1rz7WRS3yMueA==", 152 | "dev": true, 153 | "bin": { 154 | "cdk": "bin/cdk" 155 | }, 156 | "engines": { 157 | "node": ">= 14.15.0" 158 | }, 159 | "optionalDependencies": { 160 | "fsevents": "2.3.2" 161 | } 162 | }, 163 | "node_modules/aws-cdk-lib": { 164 | "version": "2.84.0", 165 | "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.84.0.tgz", 166 | "integrity": "sha512-4zLtCLCIs5Ia4WRGqiXRwxSkpGaNy3NxMexO9qYHSuIYpqf4sHObzZ0tDHZCFL5Wkui3sCu3OLQWrRHrr93HvA==", 167 | "bundleDependencies": [ 168 | "@balena/dockerignore", 169 | "case", 170 | "fs-extra", 171 | "ignore", 172 | "jsonschema", 173 | "minimatch", 174 | "punycode", 175 | "semver", 176 | "table", 177 | "yaml" 178 | ], 179 | "dependencies": { 180 | "@aws-cdk/asset-awscli-v1": "^2.2.177", 181 | "@aws-cdk/asset-kubectl-v20": "^2.1.1", 182 | "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.148", 183 | "@balena/dockerignore": "^1.0.2", 184 | "case": "1.6.3", 185 | "fs-extra": "^11.1.1", 186 | "ignore": "^5.2.4", 187 | "jsonschema": "^1.4.1", 188 | "minimatch": "^3.1.2", 189 | "punycode": "^2.3.0", 190 | "semver": "^7.5.1", 191 | "table": "^6.8.1", 192 | "yaml": "1.10.2" 193 | }, 194 | "engines": { 195 | "node": ">= 14.15.0" 196 | }, 197 | "peerDependencies": { 198 | "constructs": "^10.0.0" 199 | } 200 | }, 201 | "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { 202 | "version": "1.0.2", 203 | "inBundle": true, 204 | "license": "Apache-2.0" 205 | }, 206 | "node_modules/aws-cdk-lib/node_modules/ajv": { 207 | "version": "8.12.0", 208 | "inBundle": true, 209 | "license": "MIT", 210 | "dependencies": { 211 | "fast-deep-equal": "^3.1.1", 212 | "json-schema-traverse": "^1.0.0", 213 | "require-from-string": "^2.0.2", 214 | "uri-js": "^4.2.2" 215 | }, 216 | "funding": { 217 | "type": "github", 218 | "url": "https://github.com/sponsors/epoberezkin" 219 | } 220 | }, 221 | "node_modules/aws-cdk-lib/node_modules/ansi-regex": { 222 | "version": "5.0.1", 223 | "inBundle": true, 224 | "license": "MIT", 225 | "engines": { 226 | "node": ">=8" 227 | } 228 | }, 229 | "node_modules/aws-cdk-lib/node_modules/ansi-styles": { 230 | "version": "4.3.0", 231 | "inBundle": true, 232 | "license": "MIT", 233 | "dependencies": { 234 | "color-convert": "^2.0.1" 235 | }, 236 | "engines": { 237 | "node": ">=8" 238 | }, 239 | "funding": { 240 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 241 | } 242 | }, 243 | "node_modules/aws-cdk-lib/node_modules/astral-regex": { 244 | "version": "2.0.0", 245 | "inBundle": true, 246 | "license": "MIT", 247 | "engines": { 248 | "node": ">=8" 249 | } 250 | }, 251 | "node_modules/aws-cdk-lib/node_modules/balanced-match": { 252 | "version": "1.0.2", 253 | "inBundle": true, 254 | "license": "MIT" 255 | }, 256 | "node_modules/aws-cdk-lib/node_modules/brace-expansion": { 257 | "version": "1.1.11", 258 | "inBundle": true, 259 | "license": "MIT", 260 | "dependencies": { 261 | "balanced-match": "^1.0.0", 262 | "concat-map": "0.0.1" 263 | } 264 | }, 265 | "node_modules/aws-cdk-lib/node_modules/case": { 266 | "version": "1.6.3", 267 | "inBundle": true, 268 | "license": "(MIT OR GPL-3.0-or-later)", 269 | "engines": { 270 | "node": ">= 0.8.0" 271 | } 272 | }, 273 | "node_modules/aws-cdk-lib/node_modules/color-convert": { 274 | "version": "2.0.1", 275 | "inBundle": true, 276 | "license": "MIT", 277 | "dependencies": { 278 | "color-name": "~1.1.4" 279 | }, 280 | "engines": { 281 | "node": ">=7.0.0" 282 | } 283 | }, 284 | "node_modules/aws-cdk-lib/node_modules/color-name": { 285 | "version": "1.1.4", 286 | "inBundle": true, 287 | "license": "MIT" 288 | }, 289 | "node_modules/aws-cdk-lib/node_modules/concat-map": { 290 | "version": "0.0.1", 291 | "inBundle": true, 292 | "license": "MIT" 293 | }, 294 | "node_modules/aws-cdk-lib/node_modules/emoji-regex": { 295 | "version": "8.0.0", 296 | "inBundle": true, 297 | "license": "MIT" 298 | }, 299 | "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { 300 | "version": "3.1.3", 301 | "inBundle": true, 302 | "license": "MIT" 303 | }, 304 | "node_modules/aws-cdk-lib/node_modules/fs-extra": { 305 | "version": "11.1.1", 306 | "inBundle": true, 307 | "license": "MIT", 308 | "dependencies": { 309 | "graceful-fs": "^4.2.0", 310 | "jsonfile": "^6.0.1", 311 | "universalify": "^2.0.0" 312 | }, 313 | "engines": { 314 | "node": ">=14.14" 315 | } 316 | }, 317 | "node_modules/aws-cdk-lib/node_modules/graceful-fs": { 318 | "version": "4.2.11", 319 | "inBundle": true, 320 | "license": "ISC" 321 | }, 322 | "node_modules/aws-cdk-lib/node_modules/ignore": { 323 | "version": "5.2.4", 324 | "inBundle": true, 325 | "license": "MIT", 326 | "engines": { 327 | "node": ">= 4" 328 | } 329 | }, 330 | "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { 331 | "version": "3.0.0", 332 | "inBundle": true, 333 | "license": "MIT", 334 | "engines": { 335 | "node": ">=8" 336 | } 337 | }, 338 | "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { 339 | "version": "1.0.0", 340 | "inBundle": true, 341 | "license": "MIT" 342 | }, 343 | "node_modules/aws-cdk-lib/node_modules/jsonfile": { 344 | "version": "6.1.0", 345 | "inBundle": true, 346 | "license": "MIT", 347 | "dependencies": { 348 | "universalify": "^2.0.0" 349 | }, 350 | "optionalDependencies": { 351 | "graceful-fs": "^4.1.6" 352 | } 353 | }, 354 | "node_modules/aws-cdk-lib/node_modules/jsonschema": { 355 | "version": "1.4.1", 356 | "inBundle": true, 357 | "license": "MIT", 358 | "engines": { 359 | "node": "*" 360 | } 361 | }, 362 | "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { 363 | "version": "4.4.2", 364 | "inBundle": true, 365 | "license": "MIT" 366 | }, 367 | "node_modules/aws-cdk-lib/node_modules/lru-cache": { 368 | "version": "6.0.0", 369 | "inBundle": true, 370 | "license": "ISC", 371 | "dependencies": { 372 | "yallist": "^4.0.0" 373 | }, 374 | "engines": { 375 | "node": ">=10" 376 | } 377 | }, 378 | "node_modules/aws-cdk-lib/node_modules/minimatch": { 379 | "version": "3.1.2", 380 | "inBundle": true, 381 | "license": "ISC", 382 | "dependencies": { 383 | "brace-expansion": "^1.1.7" 384 | }, 385 | "engines": { 386 | "node": "*" 387 | } 388 | }, 389 | "node_modules/aws-cdk-lib/node_modules/punycode": { 390 | "version": "2.3.0", 391 | "inBundle": true, 392 | "license": "MIT", 393 | "engines": { 394 | "node": ">=6" 395 | } 396 | }, 397 | "node_modules/aws-cdk-lib/node_modules/require-from-string": { 398 | "version": "2.0.2", 399 | "inBundle": true, 400 | "license": "MIT", 401 | "engines": { 402 | "node": ">=0.10.0" 403 | } 404 | }, 405 | "node_modules/aws-cdk-lib/node_modules/semver": { 406 | "version": "7.5.1", 407 | "inBundle": true, 408 | "license": "ISC", 409 | "dependencies": { 410 | "lru-cache": "^6.0.0" 411 | }, 412 | "bin": { 413 | "semver": "bin/semver.js" 414 | }, 415 | "engines": { 416 | "node": ">=10" 417 | } 418 | }, 419 | "node_modules/aws-cdk-lib/node_modules/slice-ansi": { 420 | "version": "4.0.0", 421 | "inBundle": true, 422 | "license": "MIT", 423 | "dependencies": { 424 | "ansi-styles": "^4.0.0", 425 | "astral-regex": "^2.0.0", 426 | "is-fullwidth-code-point": "^3.0.0" 427 | }, 428 | "engines": { 429 | "node": ">=10" 430 | }, 431 | "funding": { 432 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 433 | } 434 | }, 435 | "node_modules/aws-cdk-lib/node_modules/string-width": { 436 | "version": "4.2.3", 437 | "inBundle": true, 438 | "license": "MIT", 439 | "dependencies": { 440 | "emoji-regex": "^8.0.0", 441 | "is-fullwidth-code-point": "^3.0.0", 442 | "strip-ansi": "^6.0.1" 443 | }, 444 | "engines": { 445 | "node": ">=8" 446 | } 447 | }, 448 | "node_modules/aws-cdk-lib/node_modules/strip-ansi": { 449 | "version": "6.0.1", 450 | "inBundle": true, 451 | "license": "MIT", 452 | "dependencies": { 453 | "ansi-regex": "^5.0.1" 454 | }, 455 | "engines": { 456 | "node": ">=8" 457 | } 458 | }, 459 | "node_modules/aws-cdk-lib/node_modules/table": { 460 | "version": "6.8.1", 461 | "inBundle": true, 462 | "license": "BSD-3-Clause", 463 | "dependencies": { 464 | "ajv": "^8.0.1", 465 | "lodash.truncate": "^4.4.2", 466 | "slice-ansi": "^4.0.0", 467 | "string-width": "^4.2.3", 468 | "strip-ansi": "^6.0.1" 469 | }, 470 | "engines": { 471 | "node": ">=10.0.0" 472 | } 473 | }, 474 | "node_modules/aws-cdk-lib/node_modules/universalify": { 475 | "version": "2.0.0", 476 | "inBundle": true, 477 | "license": "MIT", 478 | "engines": { 479 | "node": ">= 10.0.0" 480 | } 481 | }, 482 | "node_modules/aws-cdk-lib/node_modules/uri-js": { 483 | "version": "4.4.1", 484 | "inBundle": true, 485 | "license": "BSD-2-Clause", 486 | "dependencies": { 487 | "punycode": "^2.1.0" 488 | } 489 | }, 490 | "node_modules/aws-cdk-lib/node_modules/yallist": { 491 | "version": "4.0.0", 492 | "inBundle": true, 493 | "license": "ISC" 494 | }, 495 | "node_modules/aws-cdk-lib/node_modules/yaml": { 496 | "version": "1.10.2", 497 | "inBundle": true, 498 | "license": "ISC", 499 | "engines": { 500 | "node": ">= 6" 501 | } 502 | }, 503 | "node_modules/buffer-from": { 504 | "version": "1.1.2", 505 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 506 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" 507 | }, 508 | "node_modules/constructs": { 509 | "version": "10.2.52", 510 | "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.52.tgz", 511 | "integrity": "sha512-+agHle0qck/Z2ARWtI8WpAiFzBFweti2ai03ShK3R708WTmny+HO97joPQ99oQQvmHaAgCZmAqEUufeySk9J0Q==", 512 | "engines": { 513 | "node": ">= 16.14.0" 514 | } 515 | }, 516 | "node_modules/create-require": { 517 | "version": "1.1.1", 518 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 519 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 520 | "dev": true 521 | }, 522 | "node_modules/fsevents": { 523 | "version": "2.3.2", 524 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 525 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 526 | "dev": true, 527 | "hasInstallScript": true, 528 | "optional": true, 529 | "os": [ 530 | "darwin" 531 | ], 532 | "engines": { 533 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 534 | } 535 | }, 536 | "node_modules/make-error": { 537 | "version": "1.3.6", 538 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 539 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 540 | "dev": true 541 | }, 542 | "node_modules/source-map": { 543 | "version": "0.6.1", 544 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 545 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 546 | "engines": { 547 | "node": ">=0.10.0" 548 | } 549 | }, 550 | "node_modules/source-map-support": { 551 | "version": "0.5.21", 552 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 553 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 554 | "dependencies": { 555 | "buffer-from": "^1.0.0", 556 | "source-map": "^0.6.0" 557 | } 558 | }, 559 | "node_modules/ts-node": { 560 | "version": "10.9.1", 561 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 562 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 563 | "dev": true, 564 | "dependencies": { 565 | "@cspotcode/source-map-support": "^0.8.0", 566 | "@tsconfig/node10": "^1.0.7", 567 | "@tsconfig/node12": "^1.0.7", 568 | "@tsconfig/node14": "^1.0.0", 569 | "@tsconfig/node16": "^1.0.2", 570 | "acorn": "^8.4.1", 571 | "acorn-walk": "^8.1.1", 572 | "arg": "^4.1.0", 573 | "create-require": "^1.1.0", 574 | "diff": "^4.0.1", 575 | "make-error": "^1.1.1", 576 | "v8-compile-cache-lib": "^3.0.1", 577 | "yn": "3.1.1" 578 | }, 579 | "bin": { 580 | "ts-node": "dist/bin.js", 581 | "ts-node-cwd": "dist/bin-cwd.js", 582 | "ts-node-esm": "dist/bin-esm.js", 583 | "ts-node-script": "dist/bin-script.js", 584 | "ts-node-transpile-only": "dist/bin-transpile.js", 585 | "ts-script": "dist/bin-script-deprecated.js" 586 | }, 587 | "peerDependencies": { 588 | "@swc/core": ">=1.2.50", 589 | "@swc/wasm": ">=1.2.50", 590 | "@types/node": "*", 591 | "typescript": ">=2.7" 592 | }, 593 | "peerDependenciesMeta": { 594 | "@swc/core": { 595 | "optional": true 596 | }, 597 | "@swc/wasm": { 598 | "optional": true 599 | } 600 | } 601 | }, 602 | "node_modules/ts-node/node_modules/diff": { 603 | "version": "4.0.2", 604 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 605 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 606 | "dev": true, 607 | "engines": { 608 | "node": ">=0.3.1" 609 | } 610 | }, 611 | "node_modules/typescript": { 612 | "version": "4.9.5", 613 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 614 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 615 | "dev": true, 616 | "bin": { 617 | "tsc": "bin/tsc", 618 | "tsserver": "bin/tsserver" 619 | }, 620 | "engines": { 621 | "node": ">=4.2.0" 622 | } 623 | }, 624 | "node_modules/v8-compile-cache-lib": { 625 | "version": "3.0.1", 626 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 627 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 628 | "dev": true 629 | }, 630 | "node_modules/yn": { 631 | "version": "3.1.1", 632 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 633 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">=6" 637 | } 638 | } 639 | }, 640 | "dependencies": { 641 | "@aws-cdk/asset-awscli-v1": { 642 | "version": "2.2.191", 643 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.191.tgz", 644 | "integrity": "sha512-mV37Y8Lwi0unz+vNxX8CA8spfFGRHmsn0cO+d1NdqDLIvplxM6wwO/IQSzoMTFPOWKHd8kbzW0UUwRlK5fRwYw==" 645 | }, 646 | "@aws-cdk/asset-kubectl-v20": { 647 | "version": "2.1.1", 648 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz", 649 | "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==" 650 | }, 651 | "@aws-cdk/asset-node-proxy-agent-v5": { 652 | "version": "2.0.165", 653 | "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.165.tgz", 654 | "integrity": "sha512-bsyLQD/vqXQcc9RDmlM1XqiFNO/yewgVFXmkMcQkndJbmE/jgYkzewwYGrBlfL725hGLQipXq19+jwWwdsXQqg==" 655 | }, 656 | "@aws-cdk/aws-amplify-alpha": { 657 | "version": "2.84.0-alpha.0", 658 | "resolved": "https://registry.npmjs.org/@aws-cdk/aws-amplify-alpha/-/aws-amplify-alpha-2.84.0-alpha.0.tgz", 659 | "integrity": "sha512-lknuQzM367kz2iJPa6gxZ8/CvPmDT4sSZNGUaceuxl0+ImQDobHTAM1mAUKgksZyf/V2fp/Xjs8Kc4XtG/bl0w==", 660 | "requires": {} 661 | }, 662 | "@cspotcode/source-map-support": { 663 | "version": "0.8.1", 664 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 665 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 666 | "dev": true, 667 | "requires": { 668 | "@jridgewell/trace-mapping": "0.3.9" 669 | } 670 | }, 671 | "@jridgewell/resolve-uri": { 672 | "version": "3.1.1", 673 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 674 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 675 | "dev": true 676 | }, 677 | "@jridgewell/sourcemap-codec": { 678 | "version": "1.4.15", 679 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 680 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 681 | "dev": true 682 | }, 683 | "@jridgewell/trace-mapping": { 684 | "version": "0.3.9", 685 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 686 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 687 | "dev": true, 688 | "requires": { 689 | "@jridgewell/resolve-uri": "^3.0.3", 690 | "@jridgewell/sourcemap-codec": "^1.4.10" 691 | } 692 | }, 693 | "@tsconfig/node10": { 694 | "version": "1.0.8", 695 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 696 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 697 | "dev": true 698 | }, 699 | "@tsconfig/node12": { 700 | "version": "1.0.9", 701 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 702 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 703 | "dev": true 704 | }, 705 | "@tsconfig/node14": { 706 | "version": "1.0.1", 707 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 708 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 709 | "dev": true 710 | }, 711 | "@tsconfig/node16": { 712 | "version": "1.0.2", 713 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 714 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 715 | "dev": true 716 | }, 717 | "@types/node": { 718 | "version": "16.18.36", 719 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.36.tgz", 720 | "integrity": "sha512-8egDX8dE50XyXWH6C6PRCNkTP106DuUrvdrednFouDSmCi7IOvrqr0frznfZaHifHH/3aq/7a7v9N4wdXMqhBQ==", 721 | "dev": true 722 | }, 723 | "acorn": { 724 | "version": "8.6.0", 725 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", 726 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", 727 | "dev": true 728 | }, 729 | "acorn-walk": { 730 | "version": "8.2.0", 731 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 732 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 733 | "dev": true 734 | }, 735 | "arg": { 736 | "version": "4.1.3", 737 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 738 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 739 | "dev": true 740 | }, 741 | "aws-cdk": { 742 | "version": "2.84.0", 743 | "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.84.0.tgz", 744 | "integrity": "sha512-XypGsMW+H6DLLIPt4zG5KWv1FuUlpS6jqEROxg5maJFFsRaQnMkfgXP/ZT1IELyIWCYAZl6xD1rz7WRS3yMueA==", 745 | "dev": true, 746 | "requires": { 747 | "fsevents": "2.3.2" 748 | } 749 | }, 750 | "aws-cdk-lib": { 751 | "version": "2.84.0", 752 | "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.84.0.tgz", 753 | "integrity": "sha512-4zLtCLCIs5Ia4WRGqiXRwxSkpGaNy3NxMexO9qYHSuIYpqf4sHObzZ0tDHZCFL5Wkui3sCu3OLQWrRHrr93HvA==", 754 | "requires": { 755 | "@aws-cdk/asset-awscli-v1": "^2.2.177", 756 | "@aws-cdk/asset-kubectl-v20": "^2.1.1", 757 | "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.148", 758 | "@balena/dockerignore": "^1.0.2", 759 | "case": "1.6.3", 760 | "fs-extra": "^11.1.1", 761 | "ignore": "^5.2.4", 762 | "jsonschema": "^1.4.1", 763 | "minimatch": "^3.1.2", 764 | "punycode": "^2.3.0", 765 | "semver": "^7.5.1", 766 | "table": "^6.8.1", 767 | "yaml": "1.10.2" 768 | }, 769 | "dependencies": { 770 | "@balena/dockerignore": { 771 | "version": "1.0.2", 772 | "bundled": true 773 | }, 774 | "ajv": { 775 | "version": "8.12.0", 776 | "bundled": true, 777 | "requires": { 778 | "fast-deep-equal": "^3.1.1", 779 | "json-schema-traverse": "^1.0.0", 780 | "require-from-string": "^2.0.2", 781 | "uri-js": "^4.2.2" 782 | } 783 | }, 784 | "ansi-regex": { 785 | "version": "5.0.1", 786 | "bundled": true 787 | }, 788 | "ansi-styles": { 789 | "version": "4.3.0", 790 | "bundled": true, 791 | "requires": { 792 | "color-convert": "^2.0.1" 793 | } 794 | }, 795 | "astral-regex": { 796 | "version": "2.0.0", 797 | "bundled": true 798 | }, 799 | "balanced-match": { 800 | "version": "1.0.2", 801 | "bundled": true 802 | }, 803 | "brace-expansion": { 804 | "version": "1.1.11", 805 | "bundled": true, 806 | "requires": { 807 | "balanced-match": "^1.0.0", 808 | "concat-map": "0.0.1" 809 | } 810 | }, 811 | "case": { 812 | "version": "1.6.3", 813 | "bundled": true 814 | }, 815 | "color-convert": { 816 | "version": "2.0.1", 817 | "bundled": true, 818 | "requires": { 819 | "color-name": "~1.1.4" 820 | } 821 | }, 822 | "color-name": { 823 | "version": "1.1.4", 824 | "bundled": true 825 | }, 826 | "concat-map": { 827 | "version": "0.0.1", 828 | "bundled": true 829 | }, 830 | "emoji-regex": { 831 | "version": "8.0.0", 832 | "bundled": true 833 | }, 834 | "fast-deep-equal": { 835 | "version": "3.1.3", 836 | "bundled": true 837 | }, 838 | "fs-extra": { 839 | "version": "11.1.1", 840 | "bundled": true, 841 | "requires": { 842 | "graceful-fs": "^4.2.0", 843 | "jsonfile": "^6.0.1", 844 | "universalify": "^2.0.0" 845 | } 846 | }, 847 | "graceful-fs": { 848 | "version": "4.2.11", 849 | "bundled": true 850 | }, 851 | "ignore": { 852 | "version": "5.2.4", 853 | "bundled": true 854 | }, 855 | "is-fullwidth-code-point": { 856 | "version": "3.0.0", 857 | "bundled": true 858 | }, 859 | "json-schema-traverse": { 860 | "version": "1.0.0", 861 | "bundled": true 862 | }, 863 | "jsonfile": { 864 | "version": "6.1.0", 865 | "bundled": true, 866 | "requires": { 867 | "graceful-fs": "^4.1.6", 868 | "universalify": "^2.0.0" 869 | } 870 | }, 871 | "jsonschema": { 872 | "version": "1.4.1", 873 | "bundled": true 874 | }, 875 | "lodash.truncate": { 876 | "version": "4.4.2", 877 | "bundled": true 878 | }, 879 | "lru-cache": { 880 | "version": "6.0.0", 881 | "bundled": true, 882 | "requires": { 883 | "yallist": "^4.0.0" 884 | } 885 | }, 886 | "minimatch": { 887 | "version": "3.1.2", 888 | "bundled": true, 889 | "requires": { 890 | "brace-expansion": "^1.1.7" 891 | } 892 | }, 893 | "punycode": { 894 | "version": "2.3.0", 895 | "bundled": true 896 | }, 897 | "require-from-string": { 898 | "version": "2.0.2", 899 | "bundled": true 900 | }, 901 | "semver": { 902 | "version": "7.5.1", 903 | "bundled": true, 904 | "requires": { 905 | "lru-cache": "^6.0.0" 906 | } 907 | }, 908 | "slice-ansi": { 909 | "version": "4.0.0", 910 | "bundled": true, 911 | "requires": { 912 | "ansi-styles": "^4.0.0", 913 | "astral-regex": "^2.0.0", 914 | "is-fullwidth-code-point": "^3.0.0" 915 | } 916 | }, 917 | "string-width": { 918 | "version": "4.2.3", 919 | "bundled": true, 920 | "requires": { 921 | "emoji-regex": "^8.0.0", 922 | "is-fullwidth-code-point": "^3.0.0", 923 | "strip-ansi": "^6.0.1" 924 | } 925 | }, 926 | "strip-ansi": { 927 | "version": "6.0.1", 928 | "bundled": true, 929 | "requires": { 930 | "ansi-regex": "^5.0.1" 931 | } 932 | }, 933 | "table": { 934 | "version": "6.8.1", 935 | "bundled": true, 936 | "requires": { 937 | "ajv": "^8.0.1", 938 | "lodash.truncate": "^4.4.2", 939 | "slice-ansi": "^4.0.0", 940 | "string-width": "^4.2.3", 941 | "strip-ansi": "^6.0.1" 942 | } 943 | }, 944 | "universalify": { 945 | "version": "2.0.0", 946 | "bundled": true 947 | }, 948 | "uri-js": { 949 | "version": "4.4.1", 950 | "bundled": true, 951 | "requires": { 952 | "punycode": "^2.1.0" 953 | } 954 | }, 955 | "yallist": { 956 | "version": "4.0.0", 957 | "bundled": true 958 | }, 959 | "yaml": { 960 | "version": "1.10.2", 961 | "bundled": true 962 | } 963 | } 964 | }, 965 | "buffer-from": { 966 | "version": "1.1.2", 967 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 968 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" 969 | }, 970 | "constructs": { 971 | "version": "10.2.52", 972 | "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.52.tgz", 973 | "integrity": "sha512-+agHle0qck/Z2ARWtI8WpAiFzBFweti2ai03ShK3R708WTmny+HO97joPQ99oQQvmHaAgCZmAqEUufeySk9J0Q==" 974 | }, 975 | "create-require": { 976 | "version": "1.1.1", 977 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 978 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 979 | "dev": true 980 | }, 981 | "fsevents": { 982 | "version": "2.3.2", 983 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 984 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 985 | "dev": true, 986 | "optional": true 987 | }, 988 | "make-error": { 989 | "version": "1.3.6", 990 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 991 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 992 | "dev": true 993 | }, 994 | "source-map": { 995 | "version": "0.6.1", 996 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 997 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 998 | }, 999 | "source-map-support": { 1000 | "version": "0.5.21", 1001 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1002 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1003 | "requires": { 1004 | "buffer-from": "^1.0.0", 1005 | "source-map": "^0.6.0" 1006 | } 1007 | }, 1008 | "ts-node": { 1009 | "version": "10.9.1", 1010 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 1011 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 1012 | "dev": true, 1013 | "requires": { 1014 | "@cspotcode/source-map-support": "^0.8.0", 1015 | "@tsconfig/node10": "^1.0.7", 1016 | "@tsconfig/node12": "^1.0.7", 1017 | "@tsconfig/node14": "^1.0.0", 1018 | "@tsconfig/node16": "^1.0.2", 1019 | "acorn": "^8.4.1", 1020 | "acorn-walk": "^8.1.1", 1021 | "arg": "^4.1.0", 1022 | "create-require": "^1.1.0", 1023 | "diff": "^4.0.1", 1024 | "make-error": "^1.1.1", 1025 | "v8-compile-cache-lib": "^3.0.1", 1026 | "yn": "3.1.1" 1027 | }, 1028 | "dependencies": { 1029 | "diff": { 1030 | "version": "4.0.2", 1031 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1032 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1033 | "dev": true 1034 | } 1035 | } 1036 | }, 1037 | "typescript": { 1038 | "version": "4.9.5", 1039 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1040 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1041 | "dev": true 1042 | }, 1043 | "v8-compile-cache-lib": { 1044 | "version": "3.0.1", 1045 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1046 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 1047 | "dev": true 1048 | }, 1049 | "yn": { 1050 | "version": "3.1.1", 1051 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1052 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1053 | "dev": true 1054 | } 1055 | } 1056 | } 1057 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cdk-amplify-console", 3 | "version": "2.0.0", 4 | "license": "MIT", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/nikovirtala/cdk-amplify-console.git" 8 | }, 9 | "bin": { 10 | "cdk-amplify-console": "bin/cdk-amplify-console.js" 11 | }, 12 | "author": { 13 | "name": "Niko Virtala", 14 | "email": "niko.virtala@hey.com", 15 | "organization": false 16 | }, 17 | "scripts": { 18 | "build": "tsc", 19 | "watch": "tsc -w", 20 | "cdk": "cdk" 21 | }, 22 | "devDependencies": { 23 | "@types/node": "16.18.36", 24 | "aws-cdk": "2.84.0", 25 | "ts-node": "10.9.1", 26 | "typescript": "4.9.5" 27 | }, 28 | "dependencies": { 29 | "@aws-cdk/aws-amplify-alpha": "2.84.0-alpha.0", 30 | "aws-cdk-lib": "2.84.0", 31 | "constructs": "10.2.52", 32 | "source-map-support": "0.5.21" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2018", 4 | "module": "commonjs", 5 | "lib": ["es2018"], 6 | "declaration": true, 7 | "strict": true, 8 | "noImplicitAny": true, 9 | "strictNullChecks": true, 10 | "noImplicitThis": true, 11 | "alwaysStrict": true, 12 | "noUnusedLocals": false, 13 | "noUnusedParameters": false, 14 | "noImplicitReturns": true, 15 | "noFallthroughCasesInSwitch": false, 16 | "inlineSourceMap": true, 17 | "inlineSources": true, 18 | "experimentalDecorators": true, 19 | "strictPropertyInitialization": false, 20 | "typeRoots": ["./node_modules/@types"] 21 | }, 22 | "exclude": ["cdk.out"] 23 | } 24 | --------------------------------------------------------------------------------