projen 0.34.17 → 0.34.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/.jsii +17 -14
  2. package/API.md +1 -1
  3. package/docs/awscdk-apps.md +15 -0
  4. package/docs/awscdk-construct.md +39 -63
  5. package/docs/awscdk.md +176 -0
  6. package/lib/awscdk/auto-discover.js +1 -1
  7. package/lib/awscdk/cdk-config.js +1 -1
  8. package/lib/awscdk/cdk-tasks.js +1 -1
  9. package/lib/awscdk/java-app.js +1 -1
  10. package/lib/awscdk/lambda-function.js +2 -2
  11. package/lib/awscdk-app-ts.js +1 -1
  12. package/lib/awscdk-construct.js +2 -2
  13. package/lib/cdk8s-app-ts.js +1 -1
  14. package/lib/cdk8s-construct.js +1 -1
  15. package/lib/cdktf-construct.js +1 -1
  16. package/lib/component.js +1 -1
  17. package/lib/construct-lib.js +1 -1
  18. package/lib/deps/dependencies.js +1 -1
  19. package/lib/dev-env.js +1 -1
  20. package/lib/docker-compose.js +2 -2
  21. package/lib/eslint.js +1 -1
  22. package/lib/file.js +1 -1
  23. package/lib/git/gitattributes.js +1 -1
  24. package/lib/github/auto-approve.js +1 -1
  25. package/lib/github/auto-merge.js +1 -1
  26. package/lib/github/dependabot.js +1 -1
  27. package/lib/github/github.js +1 -1
  28. package/lib/github/mergify.js +1 -1
  29. package/lib/github/pr-template.js +1 -1
  30. package/lib/github/pull-request-lint.js +1 -1
  31. package/lib/github/stale.js +1 -1
  32. package/lib/github/task-workflow.js +1 -1
  33. package/lib/github/workflows.js +1 -1
  34. package/lib/gitpod.js +1 -1
  35. package/lib/ignore-file.js +1 -1
  36. package/lib/ini.js +1 -1
  37. package/lib/java/java-project.js +1 -1
  38. package/lib/java/junit.js +1 -1
  39. package/lib/java/maven-compile.js +1 -1
  40. package/lib/java/maven-packaging.js +1 -1
  41. package/lib/java/maven-sample.js +1 -1
  42. package/lib/java/pom.js +1 -1
  43. package/lib/java/projenrc.js +1 -1
  44. package/lib/javascript/bundler.d.ts +1 -0
  45. package/lib/javascript/bundler.js +3 -2
  46. package/lib/javascript/npm-config.js +1 -1
  47. package/lib/javascript/projenrc.js +1 -1
  48. package/lib/jest.js +1 -1
  49. package/lib/jsii-project.js +1 -1
  50. package/lib/json/projenrc.js +1 -1
  51. package/lib/json.js +1 -1
  52. package/lib/license.js +1 -1
  53. package/lib/logger.js +1 -1
  54. package/lib/makefile.js +1 -1
  55. package/lib/node-package.js +1 -1
  56. package/lib/node-project.js +1 -1
  57. package/lib/object-file.js +1 -1
  58. package/lib/project-build.js +1 -1
  59. package/lib/project.js +2 -2
  60. package/lib/projects.js +1 -1
  61. package/lib/python/pip.js +1 -1
  62. package/lib/python/poetry.js +2 -2
  63. package/lib/python/projenrc.js +1 -1
  64. package/lib/python/pytest.js +1 -1
  65. package/lib/python/python-project.js +1 -1
  66. package/lib/python/python-sample.js +1 -1
  67. package/lib/python/requirements-file.js +1 -1
  68. package/lib/python/setuppy.js +1 -1
  69. package/lib/python/setuptools.js +1 -1
  70. package/lib/python/venv.js +1 -1
  71. package/lib/readme.js +1 -1
  72. package/lib/release/publisher.js +1 -1
  73. package/lib/release/release-trigger.js +1 -1
  74. package/lib/release/release.js +1 -1
  75. package/lib/sample-file.js +2 -2
  76. package/lib/semver.js +1 -1
  77. package/lib/source-code.js +1 -1
  78. package/lib/tasks/runtime.js +1 -1
  79. package/lib/tasks/task.js +1 -1
  80. package/lib/tasks/tasks.js +1 -1
  81. package/lib/textfile.js +1 -1
  82. package/lib/toml.js +1 -1
  83. package/lib/typescript/projenrc.js +1 -1
  84. package/lib/typescript-config.js +1 -1
  85. package/lib/typescript.js +3 -3
  86. package/lib/upgrade-dependencies.js +2 -2
  87. package/lib/version.js +1 -1
  88. package/lib/vscode/devcontainer.js +1 -1
  89. package/lib/vscode/launch-config.js +1 -1
  90. package/lib/vscode/vscode.js +1 -1
  91. package/lib/web/next.js +3 -3
  92. package/lib/web/postcss.js +1 -1
  93. package/lib/web/react.js +4 -4
  94. package/lib/web/tailwind.js +1 -1
  95. package/lib/xmlfile.js +1 -1
  96. package/lib/yaml.js +1 -1
  97. package/package.json +2 -2
  98. package/docs/aws-lambda.md +0 -104
package/.jsii CHANGED
@@ -25775,7 +25775,7 @@
25775
25775
  "kind": "interface",
25776
25776
  "locationInModule": {
25777
25777
  "filename": "src/javascript/bundler.ts",
25778
- "line": 209
25778
+ "line": 208
25779
25779
  },
25780
25780
  "name": "AddBundleOptions",
25781
25781
  "namespace": "javascript",
@@ -25790,7 +25790,7 @@
25790
25790
  "immutable": true,
25791
25791
  "locationInModule": {
25792
25792
  "filename": "src/javascript/bundler.ts",
25793
- "line": 222
25793
+ "line": 221
25794
25794
  },
25795
25795
  "name": "platform",
25796
25796
  "type": {
@@ -25807,7 +25807,7 @@
25807
25807
  "immutable": true,
25808
25808
  "locationInModule": {
25809
25809
  "filename": "src/javascript/bundler.ts",
25810
- "line": 215
25810
+ "line": 214
25811
25811
  },
25812
25812
  "name": "target",
25813
25813
  "type": {
@@ -25827,7 +25827,7 @@
25827
25827
  "kind": "interface",
25828
25828
  "locationInModule": {
25829
25829
  "filename": "src/javascript/bundler.ts",
25830
- "line": 150
25830
+ "line": 149
25831
25831
  },
25832
25832
  "name": "Bundle",
25833
25833
  "namespace": "javascript",
@@ -25841,7 +25841,7 @@
25841
25841
  "immutable": true,
25842
25842
  "locationInModule": {
25843
25843
  "filename": "src/javascript/bundler.ts",
25844
- "line": 154
25844
+ "line": 153
25845
25845
  },
25846
25846
  "name": "bundleTask",
25847
25847
  "type": {
@@ -25857,7 +25857,7 @@
25857
25857
  "immutable": true,
25858
25858
  "locationInModule": {
25859
25859
  "filename": "src/javascript/bundler.ts",
25860
- "line": 164
25860
+ "line": 163
25861
25861
  },
25862
25862
  "name": "outfile",
25863
25863
  "type": {
@@ -25873,7 +25873,7 @@
25873
25873
  "immutable": true,
25874
25874
  "locationInModule": {
25875
25875
  "filename": "src/javascript/bundler.ts",
25876
- "line": 159
25876
+ "line": 158
25877
25877
  },
25878
25878
  "name": "watchTask",
25879
25879
  "optional": true,
@@ -25961,11 +25961,14 @@
25961
25961
  },
25962
25962
  "locationInModule": {
25963
25963
  "filename": "src/javascript/bundler.ts",
25964
- "line": 91
25964
+ "line": 90
25965
25965
  },
25966
25966
  "name": "addBundle",
25967
25967
  "parameters": [
25968
25968
  {
25969
+ "docs": {
25970
+ "summary": "The relative path of the artifact within the project."
25971
+ },
25969
25972
  "name": "entrypoint",
25970
25973
  "type": {
25971
25974
  "primitive": "string"
@@ -26107,7 +26110,7 @@
26107
26110
  "kind": "interface",
26108
26111
  "locationInModule": {
26109
26112
  "filename": "src/javascript/bundler.ts",
26110
- "line": 170
26113
+ "line": 169
26111
26114
  },
26112
26115
  "name": "BundlingOptions",
26113
26116
  "namespace": "javascript",
@@ -26123,7 +26126,7 @@
26123
26126
  "immutable": true,
26124
26127
  "locationInModule": {
26125
26128
  "filename": "src/javascript/bundler.ts",
26126
- "line": 187
26129
+ "line": 186
26127
26130
  },
26128
26131
  "name": "externals",
26129
26132
  "optional": true,
@@ -26146,7 +26149,7 @@
26146
26149
  "immutable": true,
26147
26150
  "locationInModule": {
26148
26151
  "filename": "src/javascript/bundler.ts",
26149
- "line": 194
26152
+ "line": 193
26150
26153
  },
26151
26154
  "name": "sourcemap",
26152
26155
  "optional": true,
@@ -26165,7 +26168,7 @@
26165
26168
  "immutable": true,
26166
26169
  "locationInModule": {
26167
26170
  "filename": "src/javascript/bundler.ts",
26168
- "line": 203
26171
+ "line": 202
26169
26172
  },
26170
26173
  "name": "watchTask",
26171
26174
  "optional": true,
@@ -34353,6 +34356,6 @@
34353
34356
  "symbolId": "src/web/tailwind:TailwindConfigOptions"
34354
34357
  }
34355
34358
  },
34356
- "version": "0.34.17",
34357
- "fingerprint": "eKzhQjwBp7xKPZHVk+qXLXdhuW/kmY5xTAOSRHpg1v0="
34359
+ "version": "0.34.21",
34360
+ "fingerprint": "kQRxLbT220q8PqCwTvCKfK0I8OweiakL0ZlKqhB5BPw="
34358
34361
  }
package/API.md CHANGED
@@ -6470,7 +6470,7 @@ Adds a task to the project which bundles a specific entrypoint and all of its de
6470
6470
  addBundle(entrypoint: string, options: AddBundleOptions): Bundle
6471
6471
  ```
6472
6472
 
6473
- * **entrypoint** (<code>string</code>) *No description*
6473
+ * **entrypoint** (<code>string</code>) The relative path of the artifact within the project.
6474
6474
  * **options** (<code>[javascript.AddBundleOptions](#projen-javascript-addbundleoptions)</code>) Bundling options.
6475
6475
  * **externals** (<code>Array<string></code>) You can mark a file or a package as external to exclude it from your build. __*Default*__: []
6476
6476
  * **sourcemap** (<code>boolean</code>) Include a source map in the bundle. __*Default*__: false
@@ -0,0 +1,15 @@
1
+ # AWS CDK Applications
2
+
3
+ Project types: `awscdk-app-java`, `awscdk-app-ts`.
4
+
5
+ ## Deployment (NOT IMPLEMENTED YET)
6
+
7
+ CDK application projects produce complete cloud applications. When a commit is
8
+ merged into the default branch, the app is rolled out by the release workflow to
9
+ AWS environments.
10
+
11
+ ## Dev Stage (NOT IMPLEMENTED YET)
12
+
13
+ Every app includes an instance of the application stage which can be deployed to
14
+ a development AWS account. This allows each developer to use their AWS account
15
+ as part of their development environment.
@@ -1,26 +1,22 @@
1
1
  # AWS CDK Construct Library
2
2
 
3
- This projen type is used for building AWS CDK constructs using the jsii. The [jsii](https://github.com/aws/jsii) allows
4
- you to write code once in Typescript and it will generate the Python, .net, and Java equivalents. Use this if you'd
5
- like to build and distribute CDK constructs for others to use.
3
+ AWS CDK library projects produce artifacts with reusable constructs which can be
4
+ consumed by other AWS CDK libraries or apps. Library artifacts are published to
5
+ private or public package managers under a semantic version.
6
6
 
7
- Class heirarchy: `AwsCdkConstructLibrary` -> `ConstructLibrary` -> `JsiiProject` -> `TypeScriptProject` -> `NodeProject` -> `Project`
7
+ By default, for every commit to the default branch, a new version is released
8
+ (trunk-based development). This includes the following steps:
8
9
 
9
- # Table of Contents
10
+ 1. Compile, lint and test the code.
11
+ 1. Use [JSII](https://github.com/aws/jsii) to produce library artifacts for all
12
+ target languages.
13
+ 1. Determine the next minor/patch version based on [conventional
14
+ commits](https://www.conventionalcommits.org). Major versions must be
15
+ explicitly bumped to protect consumers against breaking changes.
16
+ 1. A changelog entry is generated based on commit history.
17
+ 1. Packages are published to all target package managers.
10
18
 
11
- * [Getting Started](#getting-started)
12
- * [Standard Node Module Fields](#standard-node-module-fields)
13
- * [Dependencies](#dependencies)
14
- * [jsii Publishing](#jsii-publishing)
15
- * [Workflows](#workflows)
16
- * [Scripts](#scripts)
17
- * [Construct Catalog](#construct-catalog)
18
- * [API Documentation](#api-documentation)
19
- * [Project structure](#project-structure)
20
- * [Migrating existing projects](#migrating-existing-projects)
21
- * [Feedback](#feedback)
22
-
23
- # Getting Started
19
+ ## Getting Started
24
20
 
25
21
  Start like all projen projects:
26
22
 
@@ -46,7 +42,7 @@ keywords: ['cloudwatch', 'monitoring']
46
42
  ```
47
43
 
48
44
  All are pretty standard setup and nothing CDK-specific at this point. The `keywords` automatically gets 'cdk' so you don't
49
- need to specify it.
45
+ need to specify it.
50
46
 
51
47
  ## Dependencies
52
48
 
@@ -60,11 +56,11 @@ cdkDependencies: ['@aws-cdk/aws-ec2'],
60
56
  cdkTestDependencies: ['@aws-cdk/assert'],
61
57
  ```
62
58
 
63
- `cdkDependencies` will add both dependencies and peerDependencies to your package.json file with a caret semver
64
- requirement (e.g. `^1.67.0`). CDK dependencies must be both direct and peer dependencies,
65
- see [this issue](https://github.com/aws/aws-cdk/issues/5064). You can set `cdkVersionPinning` to `true` to use a fixed
66
- version, but this means that any consumer of your library will have to use this exact CDK version.
67
- Likewise, `cdkTestDependencies` will add dependencies to the `devDependencies`.
59
+ `cdkDependencies` will add both dependencies and peerDependencies to your package.json file with a caret semver
60
+ requirement (e.g. `^1.67.0`). CDK dependencies must be both direct and peer dependencies,
61
+ see [this issue](https://github.com/aws/aws-cdk/issues/5064). You can set `cdkVersionPinning` to `true` to use a fixed
62
+ version, but this means that any consumer of your library will have to use this exact CDK version.
63
+ Likewise, `cdkTestDependencies` will add dependencies to the `devDependencies`.
68
64
 
69
65
  Additionally, you can add CDK dependencies using the methods:
70
66
 
@@ -77,9 +73,9 @@ project.addCdkTestDependencies('aws-cdk/something-else');
77
73
 
78
74
  ### Depending on other modules
79
75
 
80
- If your library consumes other jsii modules, you should declare them thorugh the `deps` or `peerDeps` options. `deps` should be used if
81
- types from the consumed module is _not_ part of the public API of the library (the module is used as an implementation detail),
82
- while `peerDeps` _must_ be used if types from the consumed module are exported as part of your library's API. You can read more
76
+ If your library consumes other jsii modules, you should declare them thorugh the `deps` or `peerDeps` options. `deps` should be used if
77
+ types from the consumed module is _not_ part of the public API of the library (the module is used as an implementation detail),
78
+ while `peerDeps` _must_ be used if types from the consumed module are exported as part of your library's API. You can read more
83
79
  [here](https://github.com/aws/jsii/blob/master/docs/configuration.md#dependency-considerations).
84
80
 
85
81
  ```ts
@@ -88,10 +84,10 @@ deps: [ 'cdk-time-bomb' ]
88
84
 
89
85
  A [dependabot](https://dependabot.com/) file will be added unless `dependabot` is set to 'false'.
90
86
 
91
- ## jsii Publishing
87
+ ## Publishing
92
88
 
93
- As this is a [jsii project](./jsii.md), it will cross-compile to other languages. You can set up
94
- any number of jsii target languages.
89
+ As this is a [jsii project](./jsii.md), it will cross-compile to other languages. You can set up
90
+ any number of jsii target languages.
95
91
 
96
92
  ```typescript
97
93
  dotnet: {
@@ -122,19 +118,19 @@ For help in getting these secrets for your project, read the [jsii-release](http
122
118
 
123
119
  If you don't want to publish a particular package, do not include the `dotnet`, `java`, or `python` field.
124
120
 
125
- # Workflows
121
+ ## Workflows
126
122
 
127
123
  Two workflows will be created as Github Actions:
128
124
 
129
125
  * The Build workflow - controlled by the `buildWorkflow` field. On a 'pull_request' or 'workflow_dispatch' the library
130
126
  will be built and checked for anti-tamper (ensure no manual changes to generated files).
131
127
  * The Release workflow - controlled by the `releaseWorkflow` field. On a push to `main` (overridden at
132
- `props.defaultReleaseBranch`) the library is built, anti-tampered, version bumped with a commit, pushed back to git,
128
+ `props.defaultReleaseBranch`) the library is built, anti-tampered, version bumped with a commit, pushed back to git,
133
129
  and then published to the configured artifact repositories (e.g. npm, pypi).
134
130
 
135
- # Scripts
131
+ ## Tasks
136
132
 
137
- There are a number of package scripts that are created for you. Any of them can be overwritten using the `addScript*`
133
+ There are a number of package scripts that are created for you. Any of them can be overwritten using the `addScript*`
138
134
  methods.
139
135
 
140
136
  script|description
@@ -157,38 +153,24 @@ docgen|generate documentation
157
153
 
158
154
  As you develop your library you'll likely be using the `test:watch` command the most.
159
155
 
160
- # Construct Catalog
161
-
162
- Finally, a field for setting up publishing to the [construct catalog](https://awscdk.io):
163
-
164
- ```typescript
165
- catalog: {
166
- announce: true,
167
- twitter: '@yourhandle'
168
- }
169
- ```
170
-
171
- These values are optional but allow the construct catalog's Twitter account to mention your handle on the tweet. Setting `announce`
172
- to 'false' will stop all tweets about the library. However, the library will still be indexed.
173
-
174
- # API Documentation
156
+ ## API Documentation
175
157
 
176
158
  Docs will be generated from [Typescript comments](https://typedoc.org/guides/doccomments/) and saved in the `API.md` file.
177
- Please review this file regularly and document your constructs liberally.
159
+ Please review this file regularly and document your constructs liberally.
178
160
 
179
- # Project structure
161
+ ## Project structure
180
162
 
181
163
  ```
182
164
  .
183
- |--lib/ (generated)
165
+ |--lib/ (build output)
184
166
  |--src/
185
167
  |--main.ts
186
168
  |--test/
187
169
  |--main.test.ts
188
170
  ```
189
171
 
190
- Source .ts files should reside in the `src` directory. Constructs should be exported from the main.ts file.
191
- Compiled files will be put in the `lib` directory. Tests are in the `test` directory. If you need additional
172
+ Source .ts files should reside in the `src` directory. Constructs should be exported from the main.ts file.
173
+ Compiled files will be put in the `lib` directory. Tests are in the `test` directory. If you need additional
192
174
  resources that are packaged with your library, add those to a `resources` directory that is besides the `src` directory
193
175
  and modify your references accordingly:
194
176
 
@@ -196,24 +178,18 @@ and modify your references accordingly:
196
178
  const thing = require('../resources/some-resource.json')
197
179
  ```
198
180
 
199
- # Migrating existing projects
181
+ ## Migrating existing projects
200
182
 
201
183
  Your existing CDK constructs likely have a different file structure than what this projen project expects. Projen projects
202
184
  are highly opinionated. There are a few expectations of this project you should modify your existing library to conform to:
203
185
 
204
- * All .ts files are expected to be in the `src/` directory. Existing constructs should all be moved there. However,
186
+ * All .ts files are expected to be in the `src/` directory. Existing constructs should all be moved there. However,
205
187
  you can override this directory by setting `srcdir`.
206
188
  * Compiled .js and .d.ts files will go into the `lib/` directory. This directory will be removed and rebuilt each build.
207
189
  Do not store source .ts files in your `lib/` or 'libdir'.
208
- * The entrypoint file for all constructs should be `src/main.ts`. If your existing library is not in the main.ts file,
190
+ * The entrypoint file for all constructs should be `src/main.ts`. If your existing library is not in the main.ts file,
209
191
  you can add the following to export it:
210
192
 
211
193
  ```typescript
212
194
  export * from './our-s3-bucket'
213
195
  ```
214
-
215
- # Feedback
216
-
217
- If you find there is anything we missed, please submit Issues or (better yet) Pull Requests on Github.
218
-
219
-
package/docs/awscdk.md ADDED
@@ -0,0 +1,176 @@
1
+ # AWS Cloud Projects
2
+
3
+ We support two types of projects for cloud development powered by the AWS Cloud
4
+ Development Kit (AWS CDK): **apps** and **libraries**. Apps represent complete
5
+ cloud applications while libraries vend constructs which can be consumed by
6
+ other libraries or by apps. Libraries are published to public or internal
7
+ package managers (npm, PyPI, Maven, NuGet, etc) while apps are deployed into AWS
8
+ environments.
9
+
10
+ This section describes features that are available in both cloud libraries and
11
+ applications. See [AWS CDK Construct Library](./awscdk-construct.md) and [AWS
12
+ CDK Applications](./awscdk-apps.md) for specific details about libraries and
13
+ applications.
14
+
15
+ ## AWS Lambda Functions
16
+
17
+ AWS Lambda is a serverless compute platform which executes short running code
18
+ within a managed runtime environment.
19
+
20
+ To define AWS Lambda functions, create a file with a `.lambda.ts` suffix under
21
+ the source tree with AWS Lambda handler code.
22
+
23
+ For example, say we create `src/resize-image.lambda.ts` with the following
24
+ content:
25
+
26
+ ```ts
27
+ export async function handler(event: any) {
28
+ console.log('I am resizing the image now!');
29
+ }
30
+ ```
31
+
32
+ Now, after you run `npx projen` and you'll notice that a new file
33
+ `src/resize-image-function.ts` has been added to your project. This is a
34
+ generated source file which exports a construct named `ResizeImageFunction`.
35
+ This construct is a subclass of `@aws-cdk/aws-lambda.Function`, bound to your
36
+ specific handler. This means that you don't need to specify neither the `code`
37
+ nor the `runtime` options when you add it to your app:
38
+
39
+ ```ts
40
+ import { ResizeImageFunction } from './resize-image-function.ts';
41
+
42
+ const handler = new ResizeImageFunction(this, 'ResizeImageFunction', {
43
+ env: {
44
+ FOO: '1234',
45
+ },
46
+
47
+ // all lambda options are supported...
48
+ });
49
+ ```
50
+
51
+ Under the hood, we also added a compilation task to your project which creates a
52
+ .zip bundle for each handler. This bundle is created with
53
+ [esbuild](https://github.com/evanw/esbuild) and includes only your handler code
54
+ and all of its dependencies. This means that you can freely install and use any
55
+ dependencies in your project and use them in your handlers. You can manually
56
+ bundle your handler by executing the `bundle:HANDLER` or `bundle:watch:HANDLER`
57
+ tasks.
58
+
59
+ To customize this behavior for all functions, use `lambdaOptions` at the project
60
+ level. For example:
61
+
62
+ ```ts
63
+ const { awscdk } = require('projen');
64
+
65
+ new AwsCdkConstructLibrary({
66
+ // ...
67
+ lambdaOptions: {
68
+ // target node.js runtime
69
+ runtime: awscdk.LambdaRuntime.NODEJS_14_X,
70
+
71
+ bundlingOptions: {
72
+ // list of node modules to exclude from the bundle
73
+ externals: [ 'aws-sdk' ],
74
+ sourcemap: true,
75
+ }
76
+ }
77
+ });
78
+ ```
79
+
80
+ You can also disable auto-discovery by setting `lambdaAutoDiscover` to
81
+ `false` and then create explicitly add a `awscdk.LambdaFunction` component for
82
+ each function in your project. This will allow you to perform more
83
+ customizations as needed.
84
+
85
+ ```ts
86
+ const { awscdk } = require('projen');
87
+
88
+ const p = new AwsCdkTypeScriptApp({
89
+ lambdaAutoDiscover: false
90
+ });
91
+
92
+ new awscdk.LambdaFunction(p, {
93
+ entrypoint: 'src/foo.lambda.ts', // .lambda.ts extension is still required
94
+ runtime: aws_lambda.Runtime.NODEJS_12_X,
95
+ });
96
+ ```
97
+
98
+ ## Integration Snapshot Tests (NOT IMPLEMENTED YET)
99
+
100
+ Files in the test tree with the `.integ.ts` suffix are recognized as
101
+ *integration snapshot tests*.
102
+
103
+ Each test is a simple app (e.g. calls `app.synth()`) which exercises certain
104
+ construct(s) within the project. A test is considered passing if the app can be
105
+ successfully deployed.
106
+
107
+ During build, integration test apps are synthesized and their output is compared
108
+ to a committed *snapshot*. If the output is the same, the test has passed,
109
+ otherwise the build will fail.
110
+
111
+ To create/update the snapshot, developers need to manually execute the task
112
+ `integ:NAME:deploy` with AWS credentials in their environment. This task will
113
+ `cdk deploy` the test app to their development account and if deployment
114
+ succeeded (i.e. the test passed), it will take a snapshot of the output and add
115
+ it to the repository under a `xxx.integ.snapshot` directory. This directory
116
+ should be committed to the repository.
117
+
118
+ In addition to the `integ:NAME:deploy` task, for each integration test, the
119
+ following set of tasks are created:
120
+
121
+ * `integ:NAME:deploy` - deploys & destroys the test app and updates the snapshot.
122
+ * `integ:NAME:destroy` - destroys a previously deployed test app.
123
+ * `integ:NAME:assert` - synthesizes the test app and compares it with the
124
+ snapshot (this is the task that runs during build).
125
+ * `integ:NAME:snapshot` - synthesizes the test app and updates the snapshot
126
+ (bypasses the deployment).
127
+ * `integ:NAME:watch` - starts `cdk watch` for the test app (monitors all source
128
+ files and bundles).
129
+
130
+ ### Writing test assertions
131
+
132
+ You can write your test assertions as AWS Lambda handlers and use [CDK
133
+ Triggers](https://github.com/awslabs/cdk-triggers) to execute them as part of
134
+ the deployment.
135
+
136
+ Here is an example of a test:
137
+
138
+ ```ts
139
+ import { App,Stack } from '@aws-cdk/core';
140
+ import { ConstructUnderTest } from '../src';
141
+ import { AfterCreate } from 'cdk-triggers';
142
+ import { AssertSomeStuffFunction } from './assert-some-stuff-function.ts'; // <-- generated
143
+
144
+ const app = new App();
145
+ const stack = new Stack(app, 'Test');
146
+
147
+ // this is the construct we want to test
148
+ const testee = new ConstructUnderTest(stack, 'ConstructUnderTest');
149
+
150
+ // execute a lambda handler with some assertions after all testee
151
+ // resources are created
152
+ new AfterCreate(stack, 'RunAssertions', {
153
+ resources: [testee],
154
+ handler: new AssertSomeStuffFunction(stack, 'AssertSomeStuffFunction', {
155
+ env: {
156
+ URL: testee.url // <-- some reference to the created construct
157
+ }
158
+ }),
159
+ });
160
+ ```
161
+
162
+ ## Watch (NOT IMPLEMENTED YET)
163
+
164
+ > Only relevant for app projects
165
+
166
+ The `watch` command will use `cdk watch` in order to trigger deployments (with
167
+ opportunistic hot-swapping) when source files or bundles are changed. `cdk.json`
168
+ will automatically be configured to watch both source code changes and bundles,
169
+ and rebuild bundles as needed.`
170
+
171
+ ## Roadmap
172
+
173
+ * Additional bundling targets: web apps, ECS
174
+ * Local execution for AWS Lambda, ECS containers, Step Functions
175
+ * Support different provisioning engines (CloudFormation/Terraform) using Terraform L2 support
176
+ * Generate types for strong-typing AWS Lambda/ECS environment bindings.
@@ -32,5 +32,5 @@ class AutoDiscover extends component_1.Component {
32
32
  }
33
33
  exports.AutoDiscover = AutoDiscover;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- AutoDiscover[_a] = { fqn: "projen.awscdk.AutoDiscover", version: "0.34.17" };
35
+ AutoDiscover[_a] = { fqn: "projen.awscdk.AutoDiscover", version: "0.34.21" };
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1kaXNjb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXV0by1kaXNjb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNENBQXlDO0FBRXpDLHlDQUFtRDtBQUNuRCx1REFBZ0Y7Ozs7OztBQVloRixNQUFhLFlBQWEsU0FBUSxxQkFBUzs7OztJQUd6QyxZQUFZLE9BQWdCLEVBQUUsT0FBNEI7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLGdDQUFxQixFQUFFLEVBQUU7WUFDNUQsR0FBRyxFQUFFLFdBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQy9DLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ3BDLElBQUksZ0NBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUMvQixVQUFVLEVBQUUsV0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO2dCQUM1QyxHQUFHLE9BQU8sQ0FBQyxhQUFhO2FBQ3pCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7QUFoQkgsb0NBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tICdnbG9iJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5pbXBvcnQgeyBUWVBFU0NSSVBUX0xBTUJEQV9FWFQgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uLCBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2xhbWJkYS1mdW5jdGlvbic7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9EaXNjb3Zlck9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEF1dG9EaXNjb3ZlciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBBdXRvRGlzY292ZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50cyA9IGdsb2Iuc3luYyhgKiovKiR7VFlQRVNDUklQVF9MQU1CREFfRVhUfWAsIHtcbiAgICAgIGN3ZDogam9pbih0aGlzLnByb2plY3Qub3V0ZGlyLCBvcHRpb25zLnNyY2RpciksXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHMpIHtcbiAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLnByb2plY3QsIHtcbiAgICAgICAgZW50cnlwb2ludDogam9pbihvcHRpb25zLnNyY2RpciwgZW50cnlwb2ludCksXG4gICAgICAgIC4uLm9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -41,7 +41,7 @@ class CdkConfig extends component_1.Component {
41
41
  }
42
42
  exports.CdkConfig = CdkConfig;
43
43
  _a = JSII_RTTI_SYMBOL_1;
44
- CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.34.17" };
44
+ CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.34.21" };
45
45
  /**
46
46
  * (experimental) Which approval is required when deploying CDK apps.
47
47
  *
@@ -35,5 +35,5 @@ class CdkTasks extends component_1.Component {
35
35
  }
36
36
  exports.CdkTasks = CdkTasks;
37
37
  _a = JSII_RTTI_SYMBOL_1;
38
- CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.34.17" };
38
+ CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.34.21" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRhc2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9jZGstdGFza3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQUt6QyxNQUFhLFFBQVMsU0FBUSxxQkFBUzs7OztJQWFyQyxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEMsV0FBVyxFQUFFLDhEQUE4RDtZQUMzRSxJQUFJLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3RDLFdBQVcsRUFBRSx1Q0FBdUM7WUFDcEQsSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN4QyxXQUFXLEVBQUUsd0NBQXdDO1lBQ3JELElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEMsV0FBVyxFQUFFLG9EQUFvRDtZQUNqRSxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQW5DSCw0QkFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIENka1Rhc2tzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzeW50aDogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgZGVwbG95OiBUYXNrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgZGVzdHJveTogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRpZmY6IFRhc2s7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5zeW50aCA9IHByb2plY3QuYWRkVGFzaygnc3ludGgnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1N5bnRoZXNpemVzIHlvdXIgY2RrIGFwcCBpbnRvIGNkay5vdXQgKHBhcnQgb2YgXCJ5YXJuIGJ1aWxkXCIpJyxcbiAgICAgIGV4ZWM6ICdjZGsgc3ludGgnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXBsb3kgPSBwcm9qZWN0LmFkZFRhc2soJ2RlcGxveScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95cyB5b3VyIENESyBhcHAgdG8gdGhlIEFXUyBjbG91ZCcsXG4gICAgICBleGVjOiAnY2RrIGRlcGxveScsXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlc3Ryb3kgPSBwcm9qZWN0LmFkZFRhc2soJ2Rlc3Ryb3knLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc3Ryb3lzIHlvdXIgY2RrIGFwcCBpbiB0aGUgQVdTIGNsb3VkJyxcbiAgICAgIGV4ZWM6ICdjZGsgZGVzdHJveScsXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpZmYgPSBwcm9qZWN0LmFkZFRhc2soJ2RpZmYnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0RpZmZzIHRoZSBjdXJyZW50bHkgZGVwbG95ZWQgYXBwIGFnYWluc3QgeW91ciBjb2RlJyxcbiAgICAgIGV4ZWM6ICdjZGsgZGlmZicsXG4gICAgfSk7XG4gIH1cbn0iXX0=
@@ -86,5 +86,5 @@ class AwsCdkJavaApp extends java_1.JavaProject {
86
86
  }
87
87
  exports.AwsCdkJavaApp = AwsCdkJavaApp;
88
88
  _a = JSII_RTTI_SYMBOL_1;
89
- AwsCdkJavaApp[_a] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.34.17" };
89
+ AwsCdkJavaApp[_a] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.34.21" };
90
90
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1hcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2phdmEtYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLGlDQUFpQztBQUNqQywwQkFBK0I7QUFDL0Isa0NBQTBEO0FBQzFELDZDQUFpRTtBQUNqRSwyQ0FBdUM7Ozs7Ozs7QUFjdkMsTUFBYSxhQUFjLFNBQVEsa0JBQVc7Ozs7SUFtQjVDLFlBQVksT0FBNkI7O1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxRSxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsS0FBSztZQUNiLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUVELE1BQU0sZUFBZSxlQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQztRQUN2RSxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFHLE9BQU8sQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFO1lBQ25DLEdBQUcsRUFBRSwwQ0FBMEMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMvRCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7OztJQUdNLGdCQUFnQixDQUFDLEdBQUcsT0FBaUI7UUFDMUMsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLE9BQU8sQ0FBQztRQUM5QyxJQUFJLGFBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdkQsS0FBSyxFQUFFO2dCQUNMLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ1YsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO29CQUMzQixFQUFFO29CQUNGLHlDQUF5QztvQkFDekMsMkNBQTJDO29CQUMzQyxFQUFFO29CQUNGLGdCQUFnQixJQUFJLENBQUMsYUFBYSxJQUFJO29CQUN0QyxrREFBa0Q7b0JBQ2xELDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyxrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsR0FBRztpQkFDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDYjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEZILHNDQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgSmF2YVByb2plY3QsIEphdmFQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL2phdmEnO1xuaW1wb3J0IHsgQ2RrQ29uZmlnLCBDZGtDb25maWdDb21tb25PcHRpb25zIH0gZnJvbSAnLi9jZGstY29uZmlnJztcbmltcG9ydCB7IENka1Rhc2tzIH0gZnJvbSAnLi9jZGstdGFza3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0phdmFBcHBPcHRpb25zIGV4dGVuZHMgSmF2YVByb2plY3RPcHRpb25zLCBDZGtDb25maWdDb21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWFpbkNsYXNzOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXdzQ2RrSmF2YUFwcCBleHRlbmRzIEphdmFQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtDb25maWc6IENka0NvbmZpZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBtYWluQ2xhc3M6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtUYXNrczogQ2RrVGFza3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgbWFpblBhY2thZ2U6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbkNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0phdmFBcHBPcHRpb25zKSB7XG4gICAgY29uc3QgbWFpbkNsYXNzQ29tcG9uZW50cyA9IG9wdGlvbnMubWFpbkNsYXNzLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgbWFpblBhY2thZ2UgPSBtYWluQ2xhc3NDb21wb25lbnRzLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCBtYWluQ2xhc3NOYW1lID0gbWFpbkNsYXNzQ29tcG9uZW50c1ttYWluQ2xhc3NDb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZTogZmFsc2UsXG4gICAgICBzYW1wbGVKYXZhUGFja2FnZTogbWFpblBhY2thZ2Uuam9pbignLicpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tYWluQ2xhc3MgPSBvcHRpb25zLm1haW5DbGFzcztcbiAgICB0aGlzLm1haW5QYWNrYWdlID0gbWFpblBhY2thZ2Uuam9pbignLicpO1xuICAgIHRoaXMubWFpbkNsYXNzTmFtZSA9IG1haW5DbGFzc05hbWU7XG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uO1xuXG4gICAgaWYgKCF0aGlzLmNka1ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgZmllbGQgY2RrVmVyc2lvbiBpcyBub3Qgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNka01ham9yVmVyc2lvbiA9IHNlbXZlci5taW5WZXJzaW9uKHRoaXMuY2RrVmVyc2lvbik/Lm1ham9yID8/IDE7XG4gICAgaWYgKGNka01ham9yVmVyc2lvbiA+PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NES3YyIGlzIHN0aWxsIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koJ2NvcmUnKTtcbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoKTtcblxuICAgIHRoaXMuY2RrQ29uZmlnID0gbmV3IENka0NvbmZpZyh0aGlzLCB7XG4gICAgICBhcHA6IGBtdm4gZXhlYzpqYXZhIC0tcXVpZXQgLURleGVjLm1haW5DbGFzcz0ke3RoaXMubWFpbkNsYXNzfWAsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRTYW1wbGUoKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jeSguLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3QgbSBvZiBtb2R1bGVzKSB7XG4gICAgICB0aGlzLmFkZERlcGVuZGVuY3koYHNvZnR3YXJlLmFtYXpvbi5hd3NjZGsvJHttfUAke3RoaXMuY2RrVmVyc2lvbn1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFNhbXBsZSgpIHtcbiAgICBjb25zdCBwa2cgPSB0aGlzLm1haW5QYWNrYWdlLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgamF2YUZpbGUgPSBgJHt0aGlzLm1haW5DbGFzc05hbWV9LmphdmFgO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgam9pbignc3JjJywgJ21haW4nLCAnamF2YScsIC4uLnBrZyksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFtqYXZhRmlsZV06IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZy5qb2luKCcuJyl9O2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2ltcG9ydCBzb2Z0d2FyZS5hbWF6b24uYXdzY2RrLmNvcmUuQXBwOycsXG4gICAgICAgICAgJ2ltcG9ydCBzb2Z0d2FyZS5hbWF6b24uYXdzY2RrLmNvcmUuU3RhY2s7JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgcHVibGljIGNsYXNzICR7dGhpcy5tYWluQ2xhc3NOYW1lfSB7YCxcbiAgICAgICAgICAnICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7JyxcbiAgICAgICAgICAnICAgIEFwcCBhcHAgPSBuZXcgQXBwKCk7JyxcbiAgICAgICAgICAnICAgIG5ldyBTdGFjayhhcHAsIFwiTXlTdGFja1wiKTsnLFxuICAgICAgICAgICcgICAgYXBwLnN5bnRoKCk7JyxcbiAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -114,7 +114,7 @@ class LambdaFunction extends component_1.Component {
114
114
  }
115
115
  exports.LambdaFunction = LambdaFunction;
116
116
  _a = JSII_RTTI_SYMBOL_1;
117
- LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.34.17" };
117
+ LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.34.21" };
118
118
  /**
119
119
  * (experimental) The runtime for the AWS Lambda function.
120
120
  *
@@ -140,7 +140,7 @@ class LambdaRuntime {
140
140
  }
141
141
  exports.LambdaRuntime = LambdaRuntime;
142
142
  _b = JSII_RTTI_SYMBOL_1;
143
- LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.34.17" };
143
+ LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.34.21" };
144
144
  /**
145
145
  * (experimental) Node.js 10.x.
146
146
  *
@@ -98,7 +98,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
98
98
  }
99
99
  exports.AwsCdkTypeScriptApp = AwsCdkTypeScriptApp;
100
100
  _a = JSII_RTTI_SYMBOL_1;
101
- AwsCdkTypeScriptApp[_a] = { fqn: "projen.AwsCdkTypeScriptApp", version: "0.34.17" };
101
+ AwsCdkTypeScriptApp[_a] = { fqn: "projen.AwsCdkTypeScriptApp", version: "0.34.21" };
102
102
  class SampleCode extends component_1.Component {
103
103
  constructor(project, cdkMajorVersion) {
104
104
  super(project);
@@ -108,7 +108,7 @@ class AwsCdkConstructLibrary extends construct_lib_1.ConstructLibrary {
108
108
  }
109
109
  exports.AwsCdkConstructLibrary = AwsCdkConstructLibrary;
110
110
  _a = JSII_RTTI_SYMBOL_1;
111
- AwsCdkConstructLibrary[_a] = { fqn: "projen.AwsCdkConstructLibrary", version: "0.34.17" };
111
+ AwsCdkConstructLibrary[_a] = { fqn: "projen.AwsCdkConstructLibrary", version: "0.34.21" };
112
112
  /**
113
113
  * @deprecated use `AwsCdkConstructLibrary`
114
114
  */
@@ -116,5 +116,5 @@ class ConstructLibraryAws extends AwsCdkConstructLibrary {
116
116
  }
117
117
  exports.ConstructLibraryAws = ConstructLibraryAws;
118
118
  _b = JSII_RTTI_SYMBOL_1;
119
- ConstructLibraryAws[_b] = { fqn: "projen.ConstructLibraryAws", version: "0.34.17" };
119
+ ConstructLibraryAws[_b] = { fqn: "projen.ConstructLibraryAws", version: "0.34.21" };
120
120
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hd3NjZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHFDQUFxRTtBQUNyRSxtREFBNEU7Ozs7Ozs7Ozs7O0FBaUM1RSxNQUFhLHNCQUF1QixTQUFRLGdDQUFnQjs7OztJQU8xRCxZQUFZLE9BQXNDOztRQUNoRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixxQkFBcUIsRUFBRTtnQkFDckIsbUJBQW1CLEVBQUUsS0FBSzthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMscUJBQXFCLFNBQUcsT0FBTyxDQUFDLHFCQUFxQixtQ0FBSSxJQUFJLENBQUM7UUFFbkUsTUFBTSxlQUFlLGVBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBDQUFFLEtBQUssbUNBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU0sSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDL0Isc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0wsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEM7UUFFRCxVQUFJLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLElBQUksRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBRyxPQUFPLENBQUMsZUFBZSxtQ0FBSSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBRyxPQUFPLENBQUMsbUJBQW1CLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sa0JBQWtCLFNBQUcsT0FBTyxDQUFDLGtCQUFrQixtQ0FBSSxJQUFJLENBQUM7UUFDOUQsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixJQUFJLHFCQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTthQUNyQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQUdNLGtCQUFrQixDQUFDLEdBQUcsSUFBYztRQUN6Qyx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzs7Ozs7OztJQUdNLHNCQUFzQixDQUFDLEdBQUcsSUFBYztRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7QUE3RUgsd0RBOEVDOzs7Ozs7QUFNRCxNQUFhLG1CQUFvQixTQUFRLHNCQUFzQjs7QUFBL0Qsa0RBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBBdXRvRGlzY292ZXIsIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB9IGZyb20gJy4vYXdzY2RrJztcbmltcG9ydCB7IENvbnN0cnVjdExpYnJhcnksIENvbnN0cnVjdExpYnJhcnlPcHRpb25zIH0gZnJvbSAnLi9jb25zdHJ1Y3QtbGliJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0c1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uUGlubmluZz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzQXNEZXBzPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0Fzc2VydD86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtUZXN0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnkgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llc0FzRGVwczogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczoge1xuICAgICAgICBwaW5uZWREZXZEZXBlbmRlbmN5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoIW9wdGlvbnMuY2RrVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBmaWVsZCBjZGtWZXJzaW9uIGlzIG5vdCBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uUGlubmluZyA/IG9wdGlvbnMuY2RrVmVyc2lvbiA6IGBeJHtvcHRpb25zLmNka1ZlcnNpb259YDtcbiAgICB0aGlzLmNka0RlcGVuZGVuY2llc0FzRGVwcyA9IG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzID8/IHRydWU7XG5cbiAgICBjb25zdCBjZGtNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbih0aGlzLmNka1ZlcnNpb24pPy5tYWpvciA/PyAxO1xuICAgIGlmIChvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9uKSB7XG4gICAgICB0aGlzLmFkZFBlZXJEZXBzKGBjb25zdHJ1Y3RzQF4ke29wdGlvbnMuY29uc3RydWN0c1ZlcnNpb259YCk7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGNvbnN0cnVjdHNAJHtvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9ufWApO1xuICAgIH0gZWxzZSBpZiAoY2RrTWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICAvLyBDREsgMS54IGlzIGJ1aWx0IG9uIGNvbnN0cnVjdHMgMy54XG4gICAgICB0aGlzLmFkZFBlZXJEZXBzKCdjb25zdHJ1Y3RzQF4zLjIuMjcnKTtcbiAgICB9IGVsc2UgaWYgKGNka01ham9yVmVyc2lvbiA9PSAyKSB7XG4gICAgICAvLyBDREsgMi54IGlzIGJ1aWx0IG9uIGNvbnN0cnVjdHMgMTAueFxuICAgICAgdGhpcy5hZGRQZWVyRGVwcygnY29uc3RydWN0c0BeMTAuMC41Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSwgbGV0IHRoZSB1c2VyIG1hbmFnZSB3aGljaCB2ZXJzaW9uIHRoZXkgdXNlXG4gICAgICB0aGlzLmFkZFBlZXJEZXBzKCdjb25zdHJ1Y3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY2RrQXNzZXJ0ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyh0aGlzLmZvcm1hdE1vZHVsZVNwZWMoJ0Bhd3MtY2RrL2Fzc2VydCcpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY2llcyguLi5vcHRpb25zLmNka0RlcGVuZGVuY2llcyA/PyBbXSk7XG4gICAgdGhpcy5hZGRDZGtUZXN0RGVwZW5kZW5jaWVzKC4uLm9wdGlvbnMuY2RrVGVzdERlcGVuZGVuY2llcyA/PyBbXSk7XG5cbiAgICBjb25zdCBsYW1iZGFBdXRvRGlzY292ZXIgPSBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlO1xuICAgIGlmIChsYW1iZGFBdXRvRGlzY292ZXIpIHtcbiAgICAgIG5ldyBBdXRvRGlzY292ZXIodGhpcywge1xuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiBvcHRpb25zLmxhbWJkYU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRDZGtEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICAvLyB0aGlzIHVnbGluZXNzIHdpbGwgZ28gYXdheSBpbiBjZGsgdjIuMFxuICAgIHRoaXMuYWRkUGVlckRlcHMoLi4uZGVwcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcblxuICAgIGlmICh0aGlzLmNka0RlcGVuZGVuY2llc0FzRGVwcykge1xuICAgICAgdGhpcy5hZGREZXBzKC4uLmRlcHMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuICAgIH1cbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrVGVzdERlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNb2R1bGVTcGVjKG1vZHVsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bW9kdWxlfUAke3RoaXMuY2RrVmVyc2lvbn1gO1xuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RMaWJyYXJ5QXdzT3B0aW9ucyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHsgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdExpYnJhcnlBd3MgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IHsgfVxuIl19
@@ -76,7 +76,7 @@ class Cdk8sTypeScriptApp extends typescript_1.TypeScriptAppProject {
76
76
  }
77
77
  exports.Cdk8sTypeScriptApp = Cdk8sTypeScriptApp;
78
78
  _a = JSII_RTTI_SYMBOL_1;
79
- Cdk8sTypeScriptApp[_a] = { fqn: "projen.Cdk8sTypeScriptApp", version: "0.34.17" };
79
+ Cdk8sTypeScriptApp[_a] = { fqn: "projen.Cdk8sTypeScriptApp", version: "0.34.21" };
80
80
  class SampleCode extends component_1.Component {
81
81
  constructor(project) {
82
82
  super(project);