projen 0.31.19 → 0.32.3

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 (133) hide show
  1. package/.jsii +2276 -571
  2. package/API.md +747 -79
  3. package/README.md +1 -0
  4. package/docs/aws-lambda.md +103 -0
  5. package/docs/publisher.md +24 -1
  6. package/lib/awscdk/auto-discover.d.ts +46 -0
  7. package/lib/awscdk/auto-discover.js +46 -0
  8. package/lib/awscdk/cdk-config.d.ts +103 -0
  9. package/lib/awscdk/cdk-config.js +56 -0
  10. package/lib/awscdk/cdk-tasks.d.ts +38 -0
  11. package/lib/awscdk/cdk-tasks.js +39 -0
  12. package/lib/awscdk/index.d.ts +5 -0
  13. package/lib/awscdk/index.js +18 -0
  14. package/lib/awscdk/internal.d.ts +8 -0
  15. package/lib/awscdk/internal.js +26 -0
  16. package/lib/awscdk/java-app.d.ts +92 -0
  17. package/lib/awscdk/java-app.js +90 -0
  18. package/lib/awscdk/lambda-function.d.ts +146 -0
  19. package/lib/awscdk/lambda-function.js +160 -0
  20. package/lib/awscdk-app-ts.d.ts +22 -40
  21. package/lib/awscdk-app-ts.js +21 -46
  22. package/lib/awscdk-construct.d.ts +15 -58
  23. package/lib/awscdk-construct.js +13 -62
  24. package/lib/cdk8s-app-ts.js +1 -1
  25. package/lib/cdk8s-construct.js +1 -1
  26. package/lib/cdktf-construct.js +1 -1
  27. package/lib/common.js +6 -2
  28. package/lib/component.js +1 -1
  29. package/lib/construct-lib.js +1 -1
  30. package/lib/deps/dependencies.js +1 -1
  31. package/lib/dev-env.js +1 -1
  32. package/lib/docker-compose.js +2 -2
  33. package/lib/eslint.d.ts +18 -0
  34. package/lib/eslint.js +17 -5
  35. package/lib/file.js +1 -1
  36. package/lib/git/gitattributes.js +1 -1
  37. package/lib/github/auto-approve.js +1 -1
  38. package/lib/github/auto-merge.js +1 -1
  39. package/lib/github/dependabot.js +1 -1
  40. package/lib/github/github.js +1 -1
  41. package/lib/github/mergify.js +1 -1
  42. package/lib/github/pr-template.js +1 -1
  43. package/lib/github/stale.js +1 -1
  44. package/lib/github/task-workflow.js +1 -1
  45. package/lib/github/workflows.js +4 -5
  46. package/lib/gitpod.js +1 -1
  47. package/lib/ignore-file.js +1 -1
  48. package/lib/index.d.ts +1 -0
  49. package/lib/index.js +2 -1
  50. package/lib/ini.js +1 -1
  51. package/lib/inventory.js +4 -5
  52. package/lib/java/java-project.d.ts +28 -14
  53. package/lib/java/java-project.js +3 -2
  54. package/lib/java/junit.js +1 -1
  55. package/lib/java/maven-compile.js +1 -1
  56. package/lib/java/maven-packaging.js +1 -1
  57. package/lib/java/maven-sample.js +1 -1
  58. package/lib/java/pom.js +1 -1
  59. package/lib/java/projenrc.js +1 -1
  60. package/lib/javascript/bundler.d.ts +144 -0
  61. package/lib/javascript/bundler.js +93 -0
  62. package/lib/javascript/index.d.ts +1 -0
  63. package/lib/javascript/index.js +2 -1
  64. package/lib/javascript/npm-config.js +1 -1
  65. package/lib/javascript/projenrc.js +1 -1
  66. package/lib/jest.js +1 -1
  67. package/lib/jsii-project.js +1 -1
  68. package/lib/json/projenrc.js +1 -1
  69. package/lib/json.js +1 -1
  70. package/lib/license.js +1 -1
  71. package/lib/logger.js +1 -1
  72. package/lib/makefile.js +1 -1
  73. package/lib/node-package.d.ts +39 -2
  74. package/lib/node-package.js +31 -5
  75. package/lib/node-project.d.ts +11 -1
  76. package/lib/node-project.js +25 -16
  77. package/lib/object-file.js +1 -1
  78. package/lib/project.js +2 -2
  79. package/lib/projects.js +1 -1
  80. package/lib/python/pip.js +1 -1
  81. package/lib/python/poetry.js +2 -2
  82. package/lib/python/projenrc.js +4 -5
  83. package/lib/python/pytest.js +1 -1
  84. package/lib/python/python-project.js +1 -1
  85. package/lib/python/python-sample.js +1 -1
  86. package/lib/python/requirements-file.js +1 -1
  87. package/lib/python/setuppy.js +1 -1
  88. package/lib/python/setuptools.js +1 -1
  89. package/lib/python/venv.js +1 -1
  90. package/lib/readme.js +1 -1
  91. package/lib/release/publisher.d.ts +36 -0
  92. package/lib/release/publisher.js +20 -5
  93. package/lib/release/release-trigger.js +1 -1
  94. package/lib/release/release.js +1 -1
  95. package/lib/sample-file.js +2 -2
  96. package/lib/semver.js +1 -1
  97. package/lib/source-code.js +1 -1
  98. package/lib/tasks/runtime.js +1 -1
  99. package/lib/tasks/task.js +1 -1
  100. package/lib/tasks/tasks.js +1 -1
  101. package/lib/textfile.js +1 -1
  102. package/lib/toml.js +1 -1
  103. package/lib/typescript/projenrc.js +1 -1
  104. package/lib/typescript-config.js +1 -1
  105. package/lib/typescript.js +3 -3
  106. package/lib/upgrade-dependencies.js +2 -2
  107. package/lib/util.js +11 -3
  108. package/lib/version.js +1 -1
  109. package/lib/vscode/devcontainer.js +1 -1
  110. package/lib/vscode/launch-config.js +1 -1
  111. package/lib/vscode/vscode.js +1 -1
  112. package/lib/web/next.js +3 -3
  113. package/lib/web/postcss.js +1 -1
  114. package/lib/web/react.js +4 -4
  115. package/lib/web/tailwind.js +1 -1
  116. package/lib/xmlfile.js +1 -1
  117. package/lib/yaml.js +1 -1
  118. package/node_modules/case/LICENSE +22 -0
  119. package/node_modules/case/README.md +139 -0
  120. package/node_modules/case/case.d.ts +43 -0
  121. package/node_modules/case/dist/Case.js +171 -0
  122. package/node_modules/case/dist/Case.min.js +5 -0
  123. package/node_modules/case/dist/Case.min.js.map +1 -0
  124. package/node_modules/case/dist/Case.plus.js +189 -0
  125. package/node_modules/case/dist/Case.plus.min.js +5 -0
  126. package/node_modules/case/dist/Case.plus.min.js.map +1 -0
  127. package/node_modules/case/package.json +58 -0
  128. package/package.json +4 -4
  129. package/node_modules/decamelize/index.d.ts +0 -20
  130. package/node_modules/decamelize/index.js +0 -12
  131. package/node_modules/decamelize/license +0 -9
  132. package/node_modules/decamelize/package.json +0 -40
  133. package/node_modules/decamelize/readme.md +0 -51
@@ -1,23 +1,15 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AwsCdkTypeScriptApp = exports.CdkApprovalLevel = void 0;
4
+ exports.AwsCdkTypeScriptApp = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const path = require("path");
7
7
  const fs = require("fs-extra");
8
8
  const semver = require("semver");
9
+ const awscdk_1 = require("./awscdk");
10
+ const cdk_config_1 = require("./awscdk/cdk-config");
9
11
  const component_1 = require("./component");
10
- const json_1 = require("./json");
11
12
  const typescript_1 = require("./typescript");
12
- /**
13
- * @experimental
14
- */
15
- var CdkApprovalLevel;
16
- (function (CdkApprovalLevel) {
17
- CdkApprovalLevel["NEVER"] = "never";
18
- CdkApprovalLevel["ANY_CHANGE"] = "any-change";
19
- CdkApprovalLevel["BROADENING"] = "broadening";
20
- })(CdkApprovalLevel = exports.CdkApprovalLevel || (exports.CdkApprovalLevel = {}));
21
13
  /**
22
14
  * (experimental) AWS CDK app in TypeScript.
23
15
  *
@@ -29,7 +21,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
29
21
  * @experimental
30
22
  */
31
23
  constructor(options) {
32
- var _b, _c, _d, _e, _f, _g, _h;
24
+ var _b, _c, _d, _e, _f, _g, _h, _j;
33
25
  super({
34
26
  ...options,
35
27
  sampleCode: false,
@@ -59,51 +51,34 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
59
51
  this.addDeps('constructs@^10.0.5');
60
52
  }
61
53
  this.addCdkDependency(...(_e = options.cdkDependencies) !== null && _e !== void 0 ? _e : []);
62
- const synth = this.addTask('synth', {
63
- description: 'Synthesizes your cdk app into cdk.out (part of "yarn build")',
64
- exec: 'cdk synth',
65
- });
66
- this.addTask('deploy', {
67
- description: 'Deploys your CDK app to the AWS cloud',
68
- exec: 'cdk deploy',
69
- });
70
- this.addTask('destroy', {
71
- description: 'Destroys your cdk app in the AWS cloud',
72
- exec: 'cdk destroy',
73
- });
74
- this.addTask('diff', {
75
- description: 'Diffs the currently deployed app against your code',
76
- exec: 'cdk diff',
77
- });
54
+ this.cdkTasks = new awscdk_1.CdkTasks(this);
78
55
  // no compile step because we do all of it in typescript directly
79
56
  this.compileTask.reset();
80
57
  this.removeScript('watch'); // because we use ts-node
81
58
  // add synth to the build
82
- this.buildTask.spawn(synth);
83
- this.cdkConfig = {
59
+ this.buildTask.spawn(this.cdkTasks.synth);
60
+ this.cdkConfig = new cdk_config_1.CdkConfig(this, {
84
61
  app: `npx ts-node --prefer-ts-exts ${path.posix.join(this.srcdir, this.appEntrypoint)}`,
85
- };
86
- if (options.context) {
87
- this.cdkConfig.context = { ...options.context };
88
- }
89
- if (options.requireApproval) {
90
- this.cdkConfig.requireApproval = options.requireApproval;
91
- }
92
- this.gitignore.exclude('cdk.out/');
93
- this.gitignore.exclude('.cdk.staging/');
62
+ ...options,
63
+ });
94
64
  this.gitignore.exclude('.parcel-cache/');
95
- (_f = this.npmignore) === null || _f === void 0 ? void 0 : _f.exclude('cdk.out/');
65
+ (_f = this.npmignore) === null || _f === void 0 ? void 0 : _f.exclude(`${this.cdkConfig.cdkout}/`);
96
66
  (_g = this.npmignore) === null || _g === void 0 ? void 0 : _g.exclude('.cdk.staging/');
97
67
  if (this.tsconfig) {
98
- this.tsconfig.exclude.push('cdk.out');
68
+ this.tsconfig.exclude.push(this.cdkConfig.cdkout);
99
69
  }
100
70
  this.addDevDeps('ts-node@^9');
101
- new json_1.JsonFile(this, 'cdk.json', {
102
- obj: this.cdkConfig,
103
- });
104
71
  if ((_h = options.sampleCode) !== null && _h !== void 0 ? _h : true) {
105
72
  new SampleCode(this, cdkMajorVersion);
106
73
  }
74
+ const lambdaAutoDiscover = (_j = options.lambdaAutoDiscover) !== null && _j !== void 0 ? _j : true;
75
+ if (lambdaAutoDiscover) {
76
+ new awscdk_1.AutoDiscover(this, {
77
+ srcdir: this.srcdir,
78
+ libdir: this.libdir,
79
+ lambdaOptions: options.lambdaOptions,
80
+ });
81
+ }
107
82
  }
108
83
  /**
109
84
  * (experimental) Adds an AWS CDK module dependencies.
@@ -123,7 +98,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
123
98
  }
124
99
  exports.AwsCdkTypeScriptApp = AwsCdkTypeScriptApp;
125
100
  _a = JSII_RTTI_SYMBOL_1;
126
- AwsCdkTypeScriptApp[_a] = { fqn: "projen.AwsCdkTypeScriptApp", version: "0.31.19" };
101
+ AwsCdkTypeScriptApp[_a] = { fqn: "projen.AwsCdkTypeScriptApp", version: "0.32.3" };
127
102
  class SampleCode extends component_1.Component {
128
103
  constructor(project, cdkMajorVersion) {
129
104
  super(project);
@@ -195,4 +170,4 @@ test('Snapshot', () => {
195
170
  fs.writeFileSync(path.join(testdir, `${appEntrypointName}.test.ts`), testCode);
196
171
  }
197
172
  }
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hd3NjZGstYXBwLXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsMkNBQXdDO0FBQ3hDLGlDQUFrQztBQUNsQyw2Q0FBOEU7Ozs7QUFFOUUsSUFBWSxnQkFPWDtBQVBELFdBQVksZ0JBQWdCO0lBRTFCLG1DQUFlLENBQUE7SUFFZiw2Q0FBeUIsQ0FBQTtJQUV6Qiw2Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFPM0I7Ozs7Ozs7QUF1QkQsTUFBYSxtQkFBb0IsU0FBUSxpQ0FBb0I7Ozs7SUFVM0QsWUFBWSxPQUFtQzs7UUFDN0MsS0FBSyxDQUFDO1lBQ0osR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsb0RBQW9EO1FBQ3BELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsSUFBSSxDQUFDLGFBQWEsU0FBRyxPQUFPLENBQUMsYUFBYSxtQ0FBSSxTQUFTLENBQUM7UUFFeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTVGLE1BQU07UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FB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NUQ7YUFBTTtZQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMxRDtRQUdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RSxNQUFNLFFBQVEsR0FBRztFQUNuQixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztrQ0FDVSxpQkFBaUI7Ozs7Ozs7O0lBUS9DLENBQUM7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBlbnVtIENka0FwcHJvdmFsTGV2ZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBORVZFUiA9ICduZXZlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgQU5ZX0NIQU5HRSA9ICdhbnktY2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBCUk9BREVOSU5HID0gJ2Jyb2FkZW5pbmcnLFxufVxuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucyBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uUGlubmluZz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXBwRW50cnlwb2ludD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVxdWlyZUFwcHJvdmFsPzogQ2RrQXBwcm92YWxMZXZlbDtcblxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEF3c0Nka1R5cGVTY3JpcHRBcHAgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrQ29uZmlnOiBhbnk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXBwRW50cnlwb2ludDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gZW5jb2RlIGEgaGlkZGVuIGFzc3VtcHRpb24gZnVydGhlciBkb3duIHRoZSBjaGFpblxuICAgIGlmICh0aGlzLnNyY2RpciAhPT0gJ3NyYycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc291cmNlcyBhcmUgZXhwZWN0ZWQgdW5kZXIgdGhlIFwic3JjXCIgZGlyZWN0b3J5Jyk7XG4gICAgfVxuXG4gICAgLy8gZW5jb2RlIGEgaGlkZGVuIGFzc3VtcHRpb24gZnVydGhlciBkb3duIHRoZSBjaGFpblxuICAgIGlmICh0aGlzLnRlc3RkaXIgIT09ICd0ZXN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0ZXN0IHNvdXJjZXMgYXJlIGV4cGVjdGVkIHVuZGVyIHRoZSBcInRlc3RcIiBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gJ21haW4udHMnO1xuXG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uUGlubmluZyA/IG9wdGlvbnMuY2RrVmVyc2lvbiA6IGBeJHtvcHRpb25zLmNka1ZlcnNpb259YDtcblxuICAgIC8vIENMSVxuICAgIHRoaXMuYWRkRGV2RGVwcyh0aGlzLmZvcm1hdE1vZHVsZVNwZWMoJ2F3cy1jZGsnKSk7XG4gICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdAYXdzLWNkay9hc3NlcnQnKTtcblxuICAgIGlmICghdGhpcy5jZGtWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIGZpZWxkIGNka1ZlcnNpb24gaXMgbm90IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjZGtNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbih0aGlzLmNka1ZlcnNpb24pPy5tYWpvciA/PyAxO1xuICAgIGlmIChjZGtNYWpvclZlcnNpb24gPCAyKSB7XG4gICAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koJ0Bhd3MtY2RrL2NvcmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdhd3MtY2RrLWxpYicpO1xuICAgICAgdGhpcy5hZGREZXBzKCdjb25zdHJ1Y3RzQF4xMC4wLjUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgY29uc3Qgc3ludGggPSB0aGlzLmFkZFRhc2soJ3N5bnRoJywge1xuICAgICAgZGVzY3JpcHRpb246ICdTeW50aGVzaXplcyB5b3VyIGNkayBhcHAgaW50byBjZGsub3V0IChwYXJ0IG9mIFwieWFybiBidWlsZFwiKScsXG4gICAgICBleGVjOiAnY2RrIHN5bnRoJyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGVwbG95Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdEZXBsb3lzIHlvdXIgQ0RLIGFwcCB0byB0aGUgQVdTIGNsb3VkJyxcbiAgICAgIGV4ZWM6ICdjZGsgZGVwbG95JyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGVzdHJveScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzdHJveXMgeW91ciBjZGsgYXBwIGluIHRoZSBBV1MgY2xvdWQnLFxuICAgICAgZXhlYzogJ2NkayBkZXN0cm95JyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGlmZicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGlmZnMgdGhlIGN1cnJlbnRseSBkZXBsb3llZCBhcHAgYWdhaW5zdCB5b3VyIGNvZGUnLFxuICAgICAgZXhlYzogJ2NkayBkaWZmJyxcbiAgICB9KTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5yZW1vdmVTY3JpcHQoJ3dhdGNoJyk7IC8vIGJlY2F1c2Ugd2UgdXNlIHRzLW5vZGVcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLmJ1aWxkVGFzay5zcGF3bihzeW50aCk7XG5cbiAgICB0aGlzLmNka0NvbmZpZyA9IHtcbiAgICAgIGFwcDogYG5weCB0cy1ub2RlIC0tcHJlZmVyLXRzLWV4dHMgJHtwYXRoLnBvc2l4LmpvaW4odGhpcy5zcmNkaXIsIHRoaXMuYXBwRW50cnlwb2ludCl9YCxcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuY29udGV4dCkge1xuICAgICAgdGhpcy5jZGtDb25maWcuY29udGV4dCA9IHsgLi4ub3B0aW9ucy5jb250ZXh0IH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsKSB7XG4gICAgICB0aGlzLmNka0NvbmZpZy5yZXF1aXJlQXBwcm92YWwgPSBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbDtcbiAgICB9XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCdjZGsub3V0LycpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5jZGsuc3RhZ2luZy8nKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucGFyY2VsLWNhY2hlLycpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoJ2Nkay5vdXQvJyk7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoJy5jZGsuc3RhZ2luZy8nKTtcblxuICAgIGlmICh0aGlzLnRzY29uZmlnKSB7XG4gICAgICB0aGlzLnRzY29uZmlnLmV4Y2x1ZGUucHVzaCgnY2RrLm91dCcpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkRGV2RGVwcygndHMtbm9kZUBeOScpO1xuXG4gICAgbmV3IEpzb25GaWxlKHRoaXMsICdjZGsuanNvbicsIHtcbiAgICAgIG9iajogdGhpcy5jZGtDb25maWcsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBTYW1wbGVDb2RlKHRoaXMsIGNka01ham9yVmVyc2lvbik7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jeSguLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChtb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZERlcHMoLi4ubW9kdWxlcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TW9kdWxlU3BlYyhtb2R1bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke21vZHVsZX1AJHt0aGlzLmNka1ZlcnNpb259YDtcbiAgfVxufVxuXG5jbGFzcyBTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBQcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLCBwcml2YXRlIHJlYWRvbmx5IGNka01ham9yVmVyc2lvbjogbnVtYmVyKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5hcHBQcm9qZWN0ID0gcHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKCkge1xuICAgIGNvbnN0IG91dGRpciA9IHRoaXMucHJvamVjdC5vdXRkaXI7XG4gICAgY29uc3Qgc3JjZGlyID0gcGF0aC5qb2luKG91dGRpciwgdGhpcy5hcHBQcm9qZWN0LnNyY2Rpcik7XG4gICAgaWYgKGZzLnBhdGhFeGlzdHNTeW5jKHNyY2RpcikgJiYgZnMucmVhZGRpclN5bmMoc3JjZGlyKS5maWx0ZXIoeCA9PiB4LmVuZHNXaXRoKCcudHMnKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzcmNJbXBvcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBpZiAodGhpcy5jZGtNYWpvclZlcnNpb24gPCAyKSB7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCwgQ29uc3RydWN0LCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXFwnQGF3cy1jZGsvY29yZVxcJzsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBBcHAsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcXCdhd3MtY2RrLWxpYlxcJzsnKTtcbiAgICAgIHNyY0ltcG9ydHMucHVzaCgnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdjb25zdHJ1Y3RzXFwnOycpO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0NvZGUgPSBgJHtzcmNJbXBvcnRzLmpvaW4oJ1xcbicpfVxuXG5leHBvcnQgY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNrUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8gZGVmaW5lIHJlc291cmNlcyBoZXJlLi4uXG4gIH1cbn1cblxuLy8gZm9yIGRldmVsb3BtZW50LCB1c2UgYWNjb3VudC9yZWdpb24gZnJvbSBjZGsgY2xpXG5jb25zdCBkZXZFbnYgPSB7XG4gIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OLFxufTtcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuXG5uZXcgTXlTdGFjayhhcHAsICdteS1zdGFjay1kZXYnLCB7IGVudjogZGV2RW52IH0pO1xuLy8gbmV3IE15U3RhY2soYXBwLCAnbXktc3RhY2stcHJvZCcsIHsgZW52OiBwcm9kRW52IH0pO1xuXG5hcHAuc3ludGgoKTtgO1xuXG4gICAgZnMubWtkaXJwU3luYyhzcmNkaXIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHNyY2RpciwgdGhpcy5hcHBQcm9qZWN0LmFwcEVudHJ5cG9pbnQpLCBzcmNDb2RlKTtcblxuICAgIGNvbnN0IHRlc3RkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmFwcFByb2plY3QudGVzdGRpcik7XG4gICAgaWYgKGZzLnBhdGhFeGlzdHNTeW5jKHRlc3RkaXIpICYmIGZzLnJlYWRkaXJTeW5jKHRlc3RkaXIpLmZpbHRlcih4ID0+IHguZW5kc1dpdGgoJy50cycpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRlc3RJbXBvcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBpZiAodGhpcy5jZGtNYWpvclZlcnNpb24gPCAyKSB7XG4gICAgICB0ZXN0SW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBBcHAgfSBmcm9tIFxcJ0Bhd3MtY2RrL2NvcmVcXCc7Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCB9IGZyb20gXFwnYXdzLWNkay1saWJcXCc7Jyk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBhcHBFbnRyeXBvaW50TmFtZSA9IHBhdGguYmFzZW5hbWUodGhpcy5hcHBQcm9qZWN0LmFwcEVudHJ5cG9pbnQsICcudHMnKTtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBpbXBvcnQgJ0Bhd3MtY2RrL2Fzc2VydC9qZXN0JztcbiR7dGVzdEltcG9ydHMuam9pbignXFxuJyl9XG5pbXBvcnQgeyBNeVN0YWNrIH0gZnJvbSAnLi4vc3JjLyR7YXBwRW50cnlwb2ludE5hbWV9JztcblxudGVzdCgnU25hcHNob3QnLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgTXlTdGFjayhhcHAsICd0ZXN0Jyk7XG5cbiAgZXhwZWN0KHN0YWNrKS5ub3QudG9IYXZlUmVzb3VyY2UoJ0FXUzo6UzM6OkJ1Y2tldCcpO1xuICBleHBlY3QoYXBwLnN5bnRoKCkuZ2V0U3RhY2tBcnRpZmFjdChzdGFjay5hcnRpZmFjdElkKS50ZW1wbGF0ZSkudG9NYXRjaFNuYXBzaG90KCk7XG59KTtgO1xuXG4gICAgZnMubWtkaXJwU3luYyh0ZXN0ZGlyKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbih0ZXN0ZGlyLCBgJHthcHBFbnRyeXBvaW50TmFtZX0udGVzdC50c2ApLCB0ZXN0Q29kZSk7XG4gIH1cbn1cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hd3NjZGstYXBwLXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMscUNBQStFO0FBQy9FLG9EQUF3RTtBQUN4RSwyQ0FBd0M7QUFDeEMsNkNBQThFOzs7Ozs7O0FBdUI5RSxNQUFhLG1CQUFvQixTQUFRLGlDQUFvQjs7OztJQWEzRCxZQUFZLE9BQW1DOztRQUM3QyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFFSCxvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDbkU7UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDekU7UUFFRCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLFNBQVMsQ0FBQztRQUV4RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUYsTUFBTTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2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QUMsQ0FBQztRQUU1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4RixPQUFPO1NBQ1I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsV0FBVyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxXQUFXLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDMUQ7UUFHRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUc7RUFDbkIsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7a0NBQ1UsaUJBQWlCOzs7Ozs7OztJQVEvQyxDQUFDO1FBRUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IENka1Rhc2tzLCBBdXRvRGlzY292ZXIsIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB9IGZyb20gJy4vYXdzY2RrJztcbmltcG9ydCB7IENka0NvbmZpZywgQ2RrQ29uZmlnQ29tbW9uT3B0aW9ucyB9IGZyb20gJy4vYXdzY2RrL2Nkay1jb25maWcnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIENka0NvbmZpZ0NvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVmVyc2lvblBpbm5pbmc/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFwcEVudHJ5cG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBBd3NDZGtUeXBlU2NyaXB0QXBwIGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXBwRW50cnlwb2ludDogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtUYXNrczogQ2RrVGFza3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka0NvbmZpZzogQ2RrQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gZW5jb2RlIGEgaGlkZGVuIGFzc3VtcHRpb24gZnVydGhlciBkb3duIHRoZSBjaGFpblxuICAgIGlmICh0aGlzLnNyY2RpciAhPT0gJ3NyYycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc291cmNlcyBhcmUgZXhwZWN0ZWQgdW5kZXIgdGhlIFwic3JjXCIgZGlyZWN0b3J5Jyk7XG4gICAgfVxuXG4gICAgLy8gZW5jb2RlIGEgaGlkZGVuIGFzc3VtcHRpb24gZnVydGhlciBkb3duIHRoZSBjaGFpblxuICAgIGlmICh0aGlzLnRlc3RkaXIgIT09ICd0ZXN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0ZXN0IHNvdXJjZXMgYXJlIGV4cGVjdGVkIHVuZGVyIHRoZSBcInRlc3RcIiBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gJ21haW4udHMnO1xuXG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uUGlubmluZyA/IG9wdGlvbnMuY2RrVmVyc2lvbiA6IGBeJHtvcHRpb25zLmNka1ZlcnNpb259YDtcblxuICAgIC8vIENMSVxuICAgIHRoaXMuYWRkRGV2RGVwcyh0aGlzLmZvcm1hdE1vZHVsZVNwZWMoJ2F3cy1jZGsnKSk7XG4gICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdAYXdzLWNkay9hc3NlcnQnKTtcblxuICAgIGlmICghdGhpcy5jZGtWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIGZpZWxkIGNka1ZlcnNpb24gaXMgbm90IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjZGtNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbih0aGlzLmNka1ZlcnNpb24pPy5tYWpvciA/PyAxO1xuICAgIGlmIChjZGtNYWpvclZlcnNpb24gPCAyKSB7XG4gICAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koJ0Bhd3MtY2RrL2NvcmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdhd3MtY2RrLWxpYicpO1xuICAgICAgdGhpcy5hZGREZXBzKCdjb25zdHJ1Y3RzQF4xMC4wLjUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5yZW1vdmVTY3JpcHQoJ3dhdGNoJyk7IC8vIGJlY2F1c2Ugd2UgdXNlIHRzLW5vZGVcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLmJ1aWxkVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoKTtcblxuXG4gICAgdGhpcy5jZGtDb25maWcgPSBuZXcgQ2RrQ29uZmlnKHRoaXMsIHtcbiAgICAgIGFwcDogYG5weCB0cy1ub2RlIC0tcHJlZmVyLXRzLWV4dHMgJHtwYXRoLnBvc2l4LmpvaW4odGhpcy5zcmNkaXIsIHRoaXMuYXBwRW50cnlwb2ludCl9YCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucGFyY2VsLWNhY2hlLycpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYCR7dGhpcy5jZGtDb25maWcuY2Rrb3V0fS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZSgnLmNkay5zdGFnaW5nLycpO1xuXG4gICAgaWYgKHRoaXMudHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcuZXhjbHVkZS5wdXNoKHRoaXMuY2RrQ29uZmlnLmNka291dCk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGREZXZEZXBzKCd0cy1ub2RlQF45Jyk7XG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgU2FtcGxlQ29kZSh0aGlzLCBjZGtNYWpvclZlcnNpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IGxhbWJkYUF1dG9EaXNjb3ZlciA9IG9wdGlvbnMubGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWU7XG4gICAgaWYgKGxhbWJkYUF1dG9EaXNjb3Zlcikge1xuICAgICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgIGxpYmRpcjogdGhpcy5saWJkaXIsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZENka0RlcGVuZGVuY3koLi4ubW9kdWxlczogc3RyaW5nW10pIHtcbiAgICBpZiAobW9kdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZGREZXBzKC4uLm1vZHVsZXMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1vZHVsZVNwZWMobW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHttb2R1bGV9QCR7dGhpcy5jZGtWZXJzaW9ufWA7XG4gIH1cbn1cblxuY2xhc3MgU2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwUHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcDtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJpdmF0ZSByZWFkb25seSBjZGtNYWpvclZlcnNpb246IG51bWJlcikge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuYXBwUHJvamVjdCA9IHByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZSgpIHtcbiAgICBjb25zdCBvdXRkaXIgPSB0aGlzLnByb2plY3Qub3V0ZGlyO1xuICAgIGNvbnN0IHNyY2RpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC5zcmNkaXIpO1xuICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhzcmNkaXIpICYmIGZzLnJlYWRkaXJTeW5jKHNyY2RpcikuZmlsdGVyKHggPT4geC5lbmRzV2l0aCgnLnRzJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjSW1wb3J0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHRoaXMuY2RrTWFqb3JWZXJzaW9uIDwgMikge1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBBcHAsIENvbnN0cnVjdCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFxcJ0Bhd3MtY2RrL2NvcmVcXCc7Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNyY0ltcG9ydHMucHVzaCgnaW1wb3J0IHsgQXBwLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXFwnYXdzLWNkay1saWJcXCc7Jyk7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXFwnY29uc3RydWN0c1xcJzsnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcmNDb2RlID0gYCR7c3JjSW1wb3J0cy5qb2luKCdcXG4nKX1cblxuZXhwb3J0IGNsYXNzIE15U3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIGRlZmluZSByZXNvdXJjZXMgaGVyZS4uLlxuICB9XG59XG5cbi8vIGZvciBkZXZlbG9wbWVudCwgdXNlIGFjY291bnQvcmVnaW9uIGZyb20gY2RrIGNsaVxuY29uc3QgZGV2RW52ID0ge1xuICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbn07XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxubmV3IE15U3RhY2soYXBwLCAnbXktc3RhY2stZGV2JywgeyBlbnY6IGRldkVudiB9KTtcbi8vIG5ldyBNeVN0YWNrKGFwcCwgJ215LXN0YWNrLXByb2QnLCB7IGVudjogcHJvZEVudiB9KTtcblxuYXBwLnN5bnRoKCk7YDtcblxuICAgIGZzLm1rZGlycFN5bmMoc3JjZGlyKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihzcmNkaXIsIHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50KSwgc3JjQ29kZSk7XG5cbiAgICBjb25zdCB0ZXN0ZGlyID0gcGF0aC5qb2luKG91dGRpciwgdGhpcy5hcHBQcm9qZWN0LnRlc3RkaXIpO1xuICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyh0ZXN0ZGlyKSAmJiBmcy5yZWFkZGlyU3luYyh0ZXN0ZGlyKS5maWx0ZXIoeCA9PiB4LmVuZHNXaXRoKCcudHMnKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXN0SW1wb3J0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHRoaXMuY2RrTWFqb3JWZXJzaW9uIDwgMikge1xuICAgICAgdGVzdEltcG9ydHMucHVzaCgnaW1wb3J0IHsgQXBwIH0gZnJvbSBcXCdAYXdzLWNkay9jb3JlXFwnOycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXN0SW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBBcHAgfSBmcm9tIFxcJ2F3cy1jZGstbGliXFwnOycpO1xuICAgIH1cblxuXG4gICAgY29uc3QgYXBwRW50cnlwb2ludE5hbWUgPSBwYXRoLmJhc2VuYW1lKHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50LCAnLnRzJyk7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgaW1wb3J0ICdAYXdzLWNkay9hc3NlcnQvamVzdCc7XG4ke3Rlc3RJbXBvcnRzLmpvaW4oJ1xcbicpfVxuaW1wb3J0IHsgTXlTdGFjayB9IGZyb20gJy4uL3NyYy8ke2FwcEVudHJ5cG9pbnROYW1lfSc7XG5cbnRlc3QoJ1NuYXBzaG90JywgKCkgPT4ge1xuICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG4gIGNvbnN0IHN0YWNrID0gbmV3IE15U3RhY2soYXBwLCAndGVzdCcpO1xuXG4gIGV4cGVjdChzdGFjaykubm90LnRvSGF2ZVJlc291cmNlKCdBV1M6OlMzOjpCdWNrZXQnKTtcbiAgZXhwZWN0KGFwcC5zeW50aCgpLmdldFN0YWNrQXJ0aWZhY3Qoc3RhY2suYXJ0aWZhY3RJZCkudGVtcGxhdGUpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSk7YDtcblxuICAgIGZzLm1rZGlycFN5bmModGVzdGRpcik7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGVzdGRpciwgYCR7YXBwRW50cnlwb2ludE5hbWV9LnRlc3QudHNgKSwgdGVzdENvZGUpO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { LambdaFunctionCommonOptions } from './awscdk';
1
2
  import { ConstructLibrary, ConstructLibraryOptions } from './construct-lib';
2
3
  /**
3
4
  * (experimental) Options for the construct-lib-aws project.
@@ -69,6 +70,20 @@ export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions {
69
70
  * @featured true
70
71
  */
71
72
  readonly cdkTestDependencies?: string[];
73
+ /**
74
+ * (experimental) Automatically adds an `aws_lambda.Function` for each `.lambda.ts` handler in your source tree. If this is disabled, you either need to explicitly call `aws_lambda.Function.autoDiscover()` or define a `new aws_lambda.Function()` for each handler.
75
+ *
76
+ * @default true
77
+ * @experimental
78
+ */
79
+ readonly lambdaAutoDiscover?: boolean;
80
+ /**
81
+ * (experimental) Common options for all AWS Lambda functions.
82
+ *
83
+ * @default - default options
84
+ * @experimental
85
+ */
86
+ readonly lambdaOptions?: LambdaFunctionCommonOptions;
72
87
  }
73
88
  /**
74
89
  * (experimental) AWS CDK construct library project.
@@ -77,64 +92,6 @@ export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions {
77
92
  * use within the AWS CDK with a friendly workflow and automatic publishing to
78
93
  * the construct catalog.
79
94
  *
80
- * ```ts
81
- * const project = new ConstructLibraryAws({
82
- * name: 'cdk-watchful',
83
- * description: 'Watching your CDK apps since 2019',
84
- * jsiiVersion: Semver.caret('1.7.0'),
85
- * authorName: 'Elad Ben-Israel',
86
- * authorEmail: 'elad.benisrael@gmail.com',
87
- * repository: 'https://github.com/eladb/cdk-watchful.git',
88
- * keywords: [
89
- * "cloudwatch",
90
- * "monitoring"
91
- * ],
92
- *
93
- * catalog: {
94
- * twitter: 'emeshbi'
95
- * },
96
- *
97
- * // creates PRs for projen upgrades
98
- * projenUpgradeSecret: 'PROJEN_GITHUB_TOKEN',
99
- *
100
- * cdkVersion: '1.54.0',
101
- * cdkDependencies: [
102
- * "@aws-cdk/aws-apigateway",
103
- * "@aws-cdk/aws-cloudwatch",
104
- * "@aws-cdk/aws-cloudwatch-actions",
105
- * "@aws-cdk/aws-dynamodb",
106
- * "@aws-cdk/aws-ecs",
107
- * "@aws-cdk/aws-ecs-patterns",
108
- * "@aws-cdk/aws-elasticloadbalancingv2",
109
- * "@aws-cdk/aws-events",
110
- * "@aws-cdk/aws-events-targets",
111
- * "@aws-cdk/aws-lambda",
112
- * "@aws-cdk/aws-rds",
113
- * "@aws-cdk/aws-sns",
114
- * "@aws-cdk/aws-sns-subscriptions",
115
- * "@aws-cdk/aws-sqs",
116
- * "@aws-cdk/core"
117
- * ],
118
- * devDependencies: {
119
- * "aws-sdk": Semver.caret("2.708.0")
120
- * },
121
- *
122
- * // jsii publishing
123
- *
124
- * java: {
125
- * javaPackage: 'io.github.cdklabs.watchful',
126
- * mavenGroupId: 'io.github.cdklabs',
127
- * mavenArtifactId: 'cdk-watchful'
128
- * },
129
- * python: {
130
- * distName: 'cdk-watchful',
131
- * module: 'cdk_watchful'
132
- * }
133
- * });
134
- *
135
- * project.synth();
136
- * ```
137
- *
138
95
  * @experimental
139
96
  * @pjid awscdk-construct
140
97
  */
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.ConstructLibraryAws = exports.AwsCdkConstructLibrary = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const semver = require("semver");
7
+ const awscdk_1 = require("./awscdk");
7
8
  const construct_lib_1 = require("./construct-lib");
8
9
  /**
9
10
  * (experimental) AWS CDK construct library project.
@@ -12,64 +13,6 @@ const construct_lib_1 = require("./construct-lib");
12
13
  * use within the AWS CDK with a friendly workflow and automatic publishing to
13
14
  * the construct catalog.
14
15
  *
15
- * ```ts
16
- * const project = new ConstructLibraryAws({
17
- * name: 'cdk-watchful',
18
- * description: 'Watching your CDK apps since 2019',
19
- * jsiiVersion: Semver.caret('1.7.0'),
20
- * authorName: 'Elad Ben-Israel',
21
- * authorEmail: 'elad.benisrael@gmail.com',
22
- * repository: 'https://github.com/eladb/cdk-watchful.git',
23
- * keywords: [
24
- * "cloudwatch",
25
- * "monitoring"
26
- * ],
27
- *
28
- * catalog: {
29
- * twitter: 'emeshbi'
30
- * },
31
- *
32
- * // creates PRs for projen upgrades
33
- * projenUpgradeSecret: 'PROJEN_GITHUB_TOKEN',
34
- *
35
- * cdkVersion: '1.54.0',
36
- * cdkDependencies: [
37
- * "@aws-cdk/aws-apigateway",
38
- * "@aws-cdk/aws-cloudwatch",
39
- * "@aws-cdk/aws-cloudwatch-actions",
40
- * "@aws-cdk/aws-dynamodb",
41
- * "@aws-cdk/aws-ecs",
42
- * "@aws-cdk/aws-ecs-patterns",
43
- * "@aws-cdk/aws-elasticloadbalancingv2",
44
- * "@aws-cdk/aws-events",
45
- * "@aws-cdk/aws-events-targets",
46
- * "@aws-cdk/aws-lambda",
47
- * "@aws-cdk/aws-rds",
48
- * "@aws-cdk/aws-sns",
49
- * "@aws-cdk/aws-sns-subscriptions",
50
- * "@aws-cdk/aws-sqs",
51
- * "@aws-cdk/core"
52
- * ],
53
- * devDependencies: {
54
- * "aws-sdk": Semver.caret("2.708.0")
55
- * },
56
- *
57
- * // jsii publishing
58
- *
59
- * java: {
60
- * javaPackage: 'io.github.cdklabs.watchful',
61
- * mavenGroupId: 'io.github.cdklabs',
62
- * mavenArtifactId: 'cdk-watchful'
63
- * },
64
- * python: {
65
- * distName: 'cdk-watchful',
66
- * module: 'cdk_watchful'
67
- * }
68
- * });
69
- *
70
- * project.synth();
71
- * ```
72
- *
73
16
  * @experimental
74
17
  * @pjid awscdk-construct
75
18
  */
@@ -78,7 +21,7 @@ class AwsCdkConstructLibrary extends construct_lib_1.ConstructLibrary {
78
21
  * @experimental
79
22
  */
80
23
  constructor(options) {
81
- var _c, _d, _e, _f, _g, _h;
24
+ var _c, _d, _e, _f, _g, _h, _j;
82
25
  super({
83
26
  ...options,
84
27
  peerDependencyOptions: {
@@ -112,6 +55,14 @@ class AwsCdkConstructLibrary extends construct_lib_1.ConstructLibrary {
112
55
  }
113
56
  this.addCdkDependencies(...(_g = options.cdkDependencies) !== null && _g !== void 0 ? _g : []);
114
57
  this.addCdkTestDependencies(...(_h = options.cdkTestDependencies) !== null && _h !== void 0 ? _h : []);
58
+ const lambdaAutoDiscover = (_j = options.lambdaAutoDiscover) !== null && _j !== void 0 ? _j : true;
59
+ if (lambdaAutoDiscover) {
60
+ new awscdk_1.AutoDiscover(this, {
61
+ srcdir: this.srcdir,
62
+ libdir: this.libdir,
63
+ lambdaOptions: options.lambdaOptions,
64
+ });
65
+ }
115
66
  }
116
67
  /**
117
68
  * @deprecated use `cdkVersion`
@@ -158,7 +109,7 @@ class AwsCdkConstructLibrary extends construct_lib_1.ConstructLibrary {
158
109
  }
159
110
  exports.AwsCdkConstructLibrary = AwsCdkConstructLibrary;
160
111
  _a = JSII_RTTI_SYMBOL_1;
161
- AwsCdkConstructLibrary[_a] = { fqn: "projen.AwsCdkConstructLibrary", version: "0.31.19" };
112
+ AwsCdkConstructLibrary[_a] = { fqn: "projen.AwsCdkConstructLibrary", version: "0.32.3" };
162
113
  /**
163
114
  * @deprecated use `AwsCdkConstructLibrary`
164
115
  */
@@ -166,5 +117,5 @@ class ConstructLibraryAws extends AwsCdkConstructLibrary {
166
117
  }
167
118
  exports.ConstructLibraryAws = ConstructLibraryAws;
168
119
  _b = JSII_RTTI_SYMBOL_1;
169
- ConstructLibraryAws[_b] = { fqn: "projen.ConstructLibraryAws", version: "0.31.19" };
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hd3NjZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLG1EQUE0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkI1RSxNQUFhLHNCQUF1QixTQUFRLGdDQUFnQjs7OztJQU8xRCxZQUFZLE9BQXNDOztRQUNoRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixxQkFBcUIsRUFBRTtnQkFDckIsbUJBQW1CLEVBQUUsS0FBSzthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMscUJBQXFCLFNBQUcsT0FBTyxDQUFDLHFCQUFxQixtQ0FBSSxJQUFJLENBQUM7UUFFbkUsTUFBTSxlQUFlLGVBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBDQUFFLEtBQUssbUNBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU0sSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDL0Isc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0wsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEM7UUFFRCxVQUFJLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLElBQUksRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBRyxPQUFPLENBQUMsZUFBZSxtQ0FBSSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBRyxPQUFPLENBQUMsbUJBQW1CLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Ozs7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQUdNLGtCQUFrQixDQUFDLEdBQUcsSUFBYztRQUN6Qyx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzs7Ozs7OztJQUdNLHNCQUFzQixDQUFDLEdBQUcsSUFBYztRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7QUFyRUgsd0RBc0VDOzs7Ozs7QUFNRCxNQUFhLG1CQUFvQixTQUFRLHNCQUFzQjs7QUFBL0Qsa0RBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3RMaWJyYXJ5LCBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gJy4vY29uc3RydWN0LWxpYic7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0c1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uUGlubmluZz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzQXNEZXBzPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0Fzc2VydD86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtUZXN0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzQXNEZXBzOiBib29sZWFuXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOiB7XG4gICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICghb3B0aW9ucy5jZGtWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIGZpZWxkIGNka1ZlcnNpb24gaXMgbm90IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmNka1ZlcnNpb24gPSBvcHRpb25zLmNka1ZlcnNpb25QaW5uaW5nID8gb3B0aW9ucy5jZGtWZXJzaW9uIDogYF4ke29wdGlvbnMuY2RrVmVyc2lvbn1gO1xuICAgIHRoaXMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzID0gb3B0aW9ucy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IGNka01ham9yVmVyc2lvbiA9IHNlbXZlci5taW5WZXJzaW9uKHRoaXMuY2RrVmVyc2lvbik/Lm1ham9yID8/IDE7XG4gICAgaWYgKG9wdGlvbnMuY29uc3RydWN0c1ZlcnNpb24pIHtcbiAgICAgIHRoaXMuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAXiR7b3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbn1gKTtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyhgY29uc3RydWN0c0Ake29wdGlvbnMuY29uc3RydWN0c1ZlcnNpb259YCk7XG4gICAgfSBlbHNlIGlmIChjZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgIC8vIENESyAxLnggaXMgYnVpbHQgb24gY29uc3RydWN0cyAzLnhcbiAgICAgIHRoaXMuYWRkUGVlckRlcHMoJ2NvbnN0cnVjdHNAXjMuMi4yNycpO1xuICAgIH0gZWxzZSBpZiAoY2RrTWFqb3JWZXJzaW9uID09IDIpIHtcbiAgICAgIC8vIENESyAyLnggaXMgYnVpbHQgb24gY29uc3RydWN0cyAxMC54XG4gICAgICB0aGlzLmFkZFBlZXJEZXBzKCdjb25zdHJ1Y3RzQF4xMC4wLjUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlLCBsZXQgdGhlIHVzZXIgbWFuYWdlIHdoaWNoIHZlcnNpb24gdGhleSB1c2VcbiAgICAgIHRoaXMuYWRkUGVlckRlcHMoJ2NvbnN0cnVjdHMnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jZGtBc3NlcnQgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5hZGREZXZEZXBzKHRoaXMuZm9ybWF0TW9kdWxlU3BlYygnQGF3cy1jZGsvYXNzZXJ0JykpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2RrRGVwZW5kZW5jaWVzKC4uLm9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzID8/IFtdKTtcbiAgICB0aGlzLmFkZENka1Rlc3REZXBlbmRlbmNpZXMoLi4ub3B0aW9ucy5jZGtUZXN0RGVwZW5kZW5jaWVzID8/IFtdKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNka1ZlcnNpb247XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZENka0RlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIC8vIHRoaXMgdWdsaW5lc3Mgd2lsbCBnbyBhd2F5IGluIGNkayB2Mi4wXG4gICAgdGhpcy5hZGRQZWVyRGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuXG4gICAgaWYgKHRoaXMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzKSB7XG4gICAgICB0aGlzLmFkZERlcHMoLi4uZGVwcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGREZXZEZXBzKC4uLmRlcHMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRDZGtUZXN0RGVwZW5kZW5jaWVzKC4uLmRlcHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hZGREZXZEZXBzKC4uLmRlcHMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1vZHVsZVNwZWMobW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHttb2R1bGV9QCR7dGhpcy5jZGtWZXJzaW9ufWA7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdExpYnJhcnlBd3NPcHRpb25zIGV4dGVuZHMgQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgeyB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0TGlicmFyeUF3cyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnkgeyB9XG4iXX0=
120
+ ConstructLibraryAws[_b] = { fqn: "projen.ConstructLibraryAws", version: "0.32.3" };
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hd3NjZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHFDQUFxRTtBQUNyRSxtREFBNEU7Ozs7Ozs7Ozs7O0FBaUM1RSxNQUFhLHNCQUF1QixTQUFRLGdDQUFnQjs7OztJQU8xRCxZQUFZLE9BQXNDOztRQUNoRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixxQkFBcUIsRUFBRTtnQkFDckIsbUJBQW1CLEVBQUUsS0FBSzthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMscUJBQXFCLFNBQUcsT0FBTyxDQUFDLHFCQUFxQixtQ0FBSSxJQUFJLENBQUM7UUFFbkUsTUFBTSxlQUFlLGVBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBDQUFFLEtBQUssbUNBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU0sSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDL0Isc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0wsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEM7UUFFRCxVQUFJLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLElBQUksRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBRyxPQUFPLENBQUMsZUFBZSxtQ0FBSSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBRyxPQUFPLENBQUMsbUJBQW1CLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sa0JBQWtCLFNBQUcsT0FBTyxDQUFDLGtCQUFrQixtQ0FBSSxJQUFJLENBQUM7UUFDOUQsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixJQUFJLHFCQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO2FBQ3JDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7OztJQUdELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lBR00sa0JBQWtCLENBQUMsR0FBRyxJQUFjO1FBQ3pDLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0Q7SUFDSCxDQUFDOzs7Ozs7O0lBR00sc0JBQXNCLENBQUMsR0FBRyxJQUFjO1FBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNyQyxPQUFPLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QyxDQUFDOztBQTlFSCx3REErRUM7Ozs7OztBQU1ELE1BQWEsbUJBQW9CLFNBQVEsc0JBQXNCOztBQUEvRCxrREFBbUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IEF1dG9EaXNjb3ZlciwgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSAnLi9hd3NjZGsnO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICcuL2NvbnN0cnVjdC1saWInO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIENvbnN0cnVjdExpYnJhcnlPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVmVyc2lvblBpbm5pbmc/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0RlcGVuZGVuY2llc0FzRGVwcz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtBc3NlcnQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrVGVzdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBlbmRlbmNpZXNBc0RlcHM6IGJvb2xlYW5cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwZWVyRGVwZW5kZW5jeU9wdGlvbnM6IHtcbiAgICAgICAgcGlubmVkRGV2RGVwZW5kZW5jeTogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKCFvcHRpb25zLmNka1ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgZmllbGQgY2RrVmVyc2lvbiBpcyBub3Qgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuY2RrVmVyc2lvbiA9IG9wdGlvbnMuY2RrVmVyc2lvblBpbm5pbmcgPyBvcHRpb25zLmNka1ZlcnNpb24gOiBgXiR7b3B0aW9ucy5jZGtWZXJzaW9ufWA7XG4gICAgdGhpcy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMgPSBvcHRpb25zLmNka0RlcGVuZGVuY2llc0FzRGVwcyA/PyB0cnVlO1xuXG4gICAgY29uc3QgY2RrTWFqb3JWZXJzaW9uID0gc2VtdmVyLm1pblZlcnNpb24odGhpcy5jZGtWZXJzaW9uKT8ubWFqb3IgPz8gMTtcbiAgICBpZiAob3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbikge1xuICAgICAgdGhpcy5hZGRQZWVyRGVwcyhgY29uc3RydWN0c0BeJHtvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9ufWApO1xuICAgICAgdGhpcy5hZGREZXZEZXBzKGBjb25zdHJ1Y3RzQCR7b3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbn1gKTtcbiAgICB9IGVsc2UgaWYgKGNka01ham9yVmVyc2lvbiA9PT0gMSkge1xuICAgICAgLy8gQ0RLIDEueCBpcyBidWlsdCBvbiBjb25zdHJ1Y3RzIDMueFxuICAgICAgdGhpcy5hZGRQZWVyRGVwcygnY29uc3RydWN0c0BeMy4yLjI3Jyk7XG4gICAgfSBlbHNlIGlmIChjZGtNYWpvclZlcnNpb24gPT0gMikge1xuICAgICAgLy8gQ0RLIDIueCBpcyBidWlsdCBvbiBjb25zdHJ1Y3RzIDEwLnhcbiAgICAgIHRoaXMuYWRkUGVlckRlcHMoJ2NvbnN0cnVjdHNAXjEwLjAuNScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIGxldCB0aGUgdXNlciBtYW5hZ2Ugd2hpY2ggdmVyc2lvbiB0aGV5IHVzZVxuICAgICAgdGhpcy5hZGRQZWVyRGVwcygnY29uc3RydWN0cycpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNka0Fzc2VydCA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmFkZERldkRlcHModGhpcy5mb3JtYXRNb2R1bGVTcGVjKCdAYXdzLWNkay9hc3NlcnQnKSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRDZGtEZXBlbmRlbmNpZXMoLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuICAgIHRoaXMuYWRkQ2RrVGVzdERlcGVuZGVuY2llcyguLi5vcHRpb25zLmNka1Rlc3REZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgY29uc3QgbGFtYmRhQXV0b0Rpc2NvdmVyID0gb3B0aW9ucy5sYW1iZGFBdXRvRGlzY292ZXIgPz8gdHJ1ZTtcbiAgICBpZiAobGFtYmRhQXV0b0Rpc2NvdmVyKSB7XG4gICAgICBuZXcgQXV0b0Rpc2NvdmVyKHRoaXMsIHtcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgICAgbGliZGlyOiB0aGlzLmxpYmRpcixcbiAgICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrVmVyc2lvbjtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jaWVzKC4uLmRlcHM6IHN0cmluZ1tdKSB7XG4gICAgLy8gdGhpcyB1Z2xpbmVzcyB3aWxsIGdvIGF3YXkgaW4gY2RrIHYyLjBcbiAgICB0aGlzLmFkZFBlZXJEZXBzKC4uLmRlcHMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG5cbiAgICBpZiAodGhpcy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMpIHtcbiAgICAgIHRoaXMuYWRkRGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoLi4uZGVwcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZENka1Rlc3REZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmFkZERldkRlcHMoLi4uZGVwcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TW9kdWxlU3BlYyhtb2R1bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke21vZHVsZX1AJHt0aGlzLmNka1ZlcnNpb259YDtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0TGlicmFyeUF3c09wdGlvbnMgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7IH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDb25zdHJ1Y3RMaWJyYXJ5QXdzIGV4dGVuZHMgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7IH1cbiJdfQ==
@@ -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.31.19" };
79
+ Cdk8sTypeScriptApp[_a] = { fqn: "projen.Cdk8sTypeScriptApp", version: "0.32.3" };
80
80
  class SampleCode extends component_1.Component {
81
81
  constructor(project) {
82
82
  super(project);
@@ -41,5 +41,5 @@ class ConstructLibraryCdk8s extends construct_lib_1.ConstructLibrary {
41
41
  }
42
42
  exports.ConstructLibraryCdk8s = ConstructLibraryCdk8s;
43
43
  _a = JSII_RTTI_SYMBOL_1;
44
- ConstructLibraryCdk8s[_a] = { fqn: "projen.ConstructLibraryCdk8s", version: "0.31.19" };
44
+ ConstructLibraryCdk8s[_a] = { fqn: "projen.ConstructLibraryCdk8s", version: "0.32.3" };
45
45
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrOHMtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NkazhzLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUE0RTs7Ozs7Ozs7Ozs7QUF5QjVFLE1BQWEscUJBQXNCLFNBQVEsZ0NBQWdCOzs7O0lBV3pELFlBQVksT0FBcUM7UUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN4SDthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztTQUNwQztRQUdELElBQUksQ0FBQyxDQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDckg7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FDZCxjQUFjLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUN0QyxTQUFTLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDNUIsaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUN6QyxDQUFDO0lBQ0osQ0FBQzs7QUF0Q0gsc0RBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICcuL2NvbnN0cnVjdC1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdExpYnJhcnlDZGs4c09wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNkazhzVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICByZWFkb25seSBjZGs4c1BsdXNWZXJzaW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGs4c1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0c1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGs4c1BsdXNWZXJzaW9uUGlubmluZz86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0TGlicmFyeUNkazhzIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrOHNWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICBwdWJsaWMgcmVhZG9ubHkgY2RrOHNQbHVzVmVyc2lvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbnN0cnVjdExpYnJhcnlDZGs4c09wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIGlmICghb3B0aW9ucy5jZGs4c1ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgZmllbGQgY2RrOHNWZXJzaW9uIGlzIG5vdCBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jZGs4c1ZlcnNpb24gPSBvcHRpb25zLmNkazhzVmVyc2lvblBpbm5pbmcgPyBvcHRpb25zLmNkazhzVmVyc2lvbiA6IGBeJHtvcHRpb25zLmNkazhzVmVyc2lvbn1gO1xuXG4gICAgaWYgKG9wdGlvbnMuY29uc3RydWN0c1ZlcnNpb24pIHtcbiAgICAgIHRoaXMuY29uc3RydWN0c1ZlcnNpb24gPSBvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9uUGlubmluZyA/IG9wdGlvbnMuY29uc3RydWN0c1ZlcnNpb246IGBeJHtvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9ufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uc3RydWN0c1ZlcnNpb24gPSAnXjMuMi4zNCc7XG4gICAgfVxuXG5cbiAgICBpZiAoISEgb3B0aW9ucy5jZGs4c1BsdXNWZXJzaW9uKSB7XG4gICAgICB0aGlzLmNkazhzUGx1c1ZlcnNpb24gPSBvcHRpb25zLmNkazhzUGx1c1ZlcnNpb25QaW5uaW5nID8gb3B0aW9ucy5jZGs4c1BsdXNWZXJzaW9uIDogYF4ke29wdGlvbnMuY2RrOHNQbHVzVmVyc2lvbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNkazhzUGx1c1ZlcnNpb24gPSB0aGlzLmNkazhzVmVyc2lvbjtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFBlZXJEZXBzKFxuICAgICAgYGNvbnN0cnVjdHNAJHt0aGlzLmNvbnN0cnVjdHNWZXJzaW9ufWAsXG4gICAgICBgY2RrOHNAJHt0aGlzLmNkazhzVmVyc2lvbn1gLFxuICAgICAgYGNkazhzLXBsdXMtMTdAJHt0aGlzLmNkazhzUGx1c1ZlcnNpb259YCxcbiAgICApO1xuICB9XG59Il19
@@ -29,5 +29,5 @@ class ConstructLibraryCdktf extends construct_lib_1.ConstructLibrary {
29
29
  }
30
30
  exports.ConstructLibraryCdktf = ConstructLibraryCdktf;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- ConstructLibraryCdktf[_a] = { fqn: "projen.ConstructLibraryCdktf", version: "0.31.19" };
32
+ ConstructLibraryCdktf[_a] = { fqn: "projen.ConstructLibraryCdktf", version: "0.32.3" };
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nka3RmLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUE0RTs7Ozs7Ozs7Ozs7QUFRNUUsTUFBYSxxQkFBc0IsU0FBUSxnQ0FBZ0I7Ozs7SUFDekQsWUFBWSxPQUFxQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBRWpDLElBQUksQ0FBQyxXQUFXLENBQ2QsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FBRyxFQUFFLENBQ2hCLENBQUM7SUFDSixDQUFDOztBQWRILHNEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICcuL2NvbnN0cnVjdC1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdExpYnJhcnlDZGt0Zk9wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrdGZWZXJzaW9uOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDb25zdHJ1Y3RMaWJyYXJ5Q2RrdGYgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29uc3RydWN0TGlicmFyeUNka3RmT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgaWYgKCFvcHRpb25zLmNka3RmVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBmaWVsZCBjZGt0ZlZlcnNpb24gaXMgbm90IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXIgPSBvcHRpb25zLmNka3RmVmVyc2lvbjtcblxuICAgIHRoaXMuYWRkUGVlckRlcHMoXG4gICAgICAnY29uc3RydWN0c0BeMTAnLFxuICAgICAgYGNka3RmQF4ke3Zlcn1gLFxuICAgICk7XG4gIH1cbn0iXX0=
package/lib/common.js CHANGED
@@ -5,5 +5,9 @@ exports.PROJEN_RC = '.projenrc.js';
5
5
  exports.PROJEN_DIR = '.projen';
6
6
  exports.PROJEN_MARKER = '~~ Generated by ' + 'projen'; // we split into two so /this/ file does not match the marker
7
7
  // eslint-disable-next-line @typescript-eslint/no-require-imports
8
- exports.PROJEN_VERSION = require('../package.json').version;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFNBQVMsR0FBRyxjQUFjLENBQUM7QUFDM0IsUUFBQSxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQ3ZCLFFBQUEsYUFBYSxHQUFHLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLDZEQUE2RDtBQUV6SCxpRUFBaUU7QUFDcEQsUUFBQSxjQUFjLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBST0pFTl9SQyA9ICcucHJvamVucmMuanMnO1xuZXhwb3J0IGNvbnN0IFBST0pFTl9ESVIgPSAnLnByb2plbic7XG5leHBvcnQgY29uc3QgUFJPSkVOX01BUktFUiA9ICd+fiBHZW5lcmF0ZWQgYnkgJyArICdwcm9qZW4nOyAvLyB3ZSBzcGxpdCBpbnRvIHR3byBzbyAvdGhpcy8gZmlsZSBkb2VzIG5vdCBtYXRjaCB0aGUgbWFya2VyXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5leHBvcnQgY29uc3QgUFJPSkVOX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuIl19
8
+ const packageVersion = require('../package.json').version;
9
+ // if we are running with a test, report a fake stable version
10
+ exports.PROJEN_VERSION = (process.env.NODE_ENV === 'test')
11
+ ? '99.99.99'
12
+ : packageVersion;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFNBQVMsR0FBRyxjQUFjLENBQUM7QUFDM0IsUUFBQSxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQ3ZCLFFBQUEsYUFBYSxHQUFHLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLDZEQUE2RDtBQUV6SCxpRUFBaUU7QUFDakUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBRTFELDhEQUE4RDtBQUNqRCxRQUFBLGNBQWMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQztJQUM3RCxDQUFDLENBQUMsVUFBVTtJQUNaLENBQUMsQ0FBQyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUFJPSkVOX1JDID0gJy5wcm9qZW5yYy5qcyc7XG5leHBvcnQgY29uc3QgUFJPSkVOX0RJUiA9ICcucHJvamVuJztcbmV4cG9ydCBjb25zdCBQUk9KRU5fTUFSS0VSID0gJ35+IEdlbmVyYXRlZCBieSAnICsgJ3Byb2plbic7IC8vIHdlIHNwbGl0IGludG8gdHdvIHNvIC90aGlzLyBmaWxlIGRvZXMgbm90IG1hdGNoIHRoZSBtYXJrZXJcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IHBhY2thZ2VWZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuLy8gaWYgd2UgYXJlIHJ1bm5pbmcgd2l0aCBhIHRlc3QsIHJlcG9ydCBhIGZha2Ugc3RhYmxlIHZlcnNpb25cbmV4cG9ydCBjb25zdCBQUk9KRU5fVkVSU0lPTiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKVxuICA/ICc5OS45OS45OSdcbiAgOiBwYWNrYWdlVmVyc2lvbjtcbiJdfQ==
package/lib/component.js CHANGED
@@ -39,5 +39,5 @@ class Component {
39
39
  }
40
40
  exports.Component = Component;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- Component[_a] = { fqn: "projen.Component", version: "0.31.19" };
42
+ Component[_a] = { fqn: "projen.Component", version: "0.32.3" };
43
43
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsTUFBYSxTQUFTOzs7O0lBQ3BCLFlBQTRCLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDMUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7Ozs7SUFHTSxhQUFhLEtBQUssQ0FBQzs7Ozs7O0lBR25CLFVBQVUsS0FBSSxDQUFDOzs7Ozs7OztJQUdmLGNBQWMsS0FBSSxDQUFDOztBQVo1Qiw4QkFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuL3Byb2plY3QnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogUHJvamVjdCkge1xuICAgIHByb2plY3QuX2FkZENvbXBvbmVudCh0aGlzKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHsgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzeW50aGVzaXplKCkge31cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcG9zdFN5bnRoZXNpemUoKSB7fVxufSJdfQ==
@@ -26,5 +26,5 @@ class ConstructLibrary extends jsii_project_1.JsiiProject {
26
26
  }
27
27
  exports.ConstructLibrary = ConstructLibrary;
28
28
  _a = JSII_RTTI_SYMBOL_1;
29
- ConstructLibrary[_a] = { fqn: "projen.ConstructLibrary", version: "0.31.19" };
29
+ ConstructLibrary[_a] = { fqn: "projen.ConstructLibrary", version: "0.32.3" };
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWxpYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdHJ1Y3QtbGliLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQWlFOzs7Ozs7QUFnQmpFLE1BQXNCLGdCQUFpQixTQUFRLDBCQUFXOzs7O0lBQ3hELFlBQVksT0FBZ0M7UUFDMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtRQUNsRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUNoQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPO2dCQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRO2FBQ25DLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7QUFYSCw0Q0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzaWlQcm9qZWN0LCBKc2lpUHJvamVjdE9wdGlvbnMgfSBmcm9tICcuL2pzaWktcHJvamVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgZXh0ZW5kcyBKc2lpUHJvamVjdE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2F0YWxvZz86IENhdGFsb2c7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0YWxvZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHR3aXR0ZXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFubm91bmNlPzogYm9vbGVhbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnN0cnVjdExpYnJhcnkgZXh0ZW5kcyBKc2lpUHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmFkZEtleXdvcmRzKCdjZGsnKTsgLy8gcHVibGlzaCB0byB0aGUgY2F0YWxvZ1xuICAgIGlmIChvcHRpb25zLmNhdGFsb2cpIHtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnYXdzY2RraW8nLCB7XG4gICAgICAgIHR3aXR0ZXI6IG9wdGlvbnMuY2F0YWxvZy50d2l0dGVyLFxuICAgICAgICBhbm5vdW5jZTogb3B0aW9ucy5jYXRhbG9nLmFubm91bmNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -156,7 +156,7 @@ class Dependencies extends component_1.Component {
156
156
  }
157
157
  exports.Dependencies = Dependencies;
158
158
  _a = JSII_RTTI_SYMBOL_1;
159
- Dependencies[_a] = { fqn: "projen.deps.Dependencies", version: "0.31.19" };
159
+ Dependencies[_a] = { fqn: "projen.deps.Dependencies", version: "0.32.3" };
160
160
  /**
161
161
  * (experimental) The project-relative path of the deps manifest file.
162
162
  *
package/lib/dev-env.js CHANGED
@@ -37,5 +37,5 @@ class DevEnvironmentDockerImage {
37
37
  }
38
38
  exports.DevEnvironmentDockerImage = DevEnvironmentDockerImage;
39
39
  _a = JSII_RTTI_SYMBOL_1;
40
- DevEnvironmentDockerImage[_a] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.31.19" };
40
+ DevEnvironmentDockerImage[_a] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.32.3" };
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXYtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFrQkEsTUFBYSx5QkFBeUI7SUFpQnBDLGdCQUF3QixDQUFDOzs7Ozs7Ozs7O0lBZmxCLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7Ozs7OztJQUdNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBa0I7UUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O0FBVEgsOERBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFzayB9IGZyb20gJy4vdGFza3MnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIERldkVudmlyb25tZW50T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRvY2tlckltYWdlPzogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGFza3M/OiBUYXNrW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBvcnRzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2c2NvZGVFeHRlbnNpb25zPzogc3RyaW5nW107XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2UoaW1hZ2U6IHN0cmluZyk6IERldkVudmlyb25tZW50RG9ja2VySW1hZ2Uge1xuICAgIHJldHVybiB7IGltYWdlIH07XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21GaWxlKGRvY2tlckZpbGU6IHN0cmluZyk6IERldkVudmlyb25tZW50RG9ja2VySW1hZ2Uge1xuICAgIHJldHVybiB7IGRvY2tlckZpbGUgfTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckZpbGU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHsgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJRGV2RW52aXJvbm1lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBhZGREb2NrZXJJbWFnZShpbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSk6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGFkZFRhc2tzKC4uLnRhc2tzOiBUYXNrW10pOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBhZGRQb3J0cyguLi5wb3J0czogc3RyaW5nW10pOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGFkZFZzY29kZUV4dGVuc2lvbnMoLi4uZXh0ZW5zaW9uczogc3RyaW5nW10pOiB2b2lkO1xufVxuIl19
@@ -129,7 +129,7 @@ class DockerCompose extends component_1.Component {
129
129
  }
130
130
  exports.DockerCompose = DockerCompose;
131
131
  _a = JSII_RTTI_SYMBOL_1;
132
- DockerCompose[_a] = { fqn: "projen.DockerCompose", version: "0.31.19" };
132
+ DockerCompose[_a] = { fqn: "projen.DockerCompose", version: "0.32.3" };
133
133
  /**
134
134
  * (experimental) A docker-compose service.
135
135
  *
@@ -195,7 +195,7 @@ class DockerComposeService {
195
195
  }
196
196
  exports.DockerComposeService = DockerComposeService;
197
197
  _b = JSII_RTTI_SYMBOL_1;
198
- DockerComposeService[_b] = { fqn: "projen.DockerComposeService", version: "0.31.19" };
198
+ DockerComposeService[_b] = { fqn: "projen.DockerComposeService", version: "0.32.3" };
199
199
  /**
200
200
  * (experimental) Network protocol for port mapping.
201
201
  *
package/lib/eslint.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Project } from '.';
1
2
  import { Component } from './component';
2
3
  import { NodeProject } from './node-project';
3
4
  /**
@@ -71,6 +72,15 @@ export interface EslintOptions {
71
72
  * @experimental
72
73
  */
73
74
  readonly aliasExtensions?: string[];
75
+ /**
76
+ * (experimental) Always try to resolve types under `<root>@types` directory even it doesn't contain any source code.
77
+ *
78
+ * This prevents `import/no-unresolved` eslint errors when importing a `@types/*` module that would otherwise remain unresolved.
79
+ *
80
+ * @default true
81
+ * @experimental
82
+ */
83
+ readonly tsAlwaysTryTypes?: boolean;
74
84
  }
75
85
  /**
76
86
  * (experimental) eslint rules override.
@@ -94,9 +104,17 @@ export interface EslintOverride {
94
104
  };
95
105
  }
96
106
  /**
107
+ * (experimental) Represents eslint configuration.
108
+ *
97
109
  * @experimental
98
110
  */
99
111
  export declare class Eslint extends Component {
112
+ /**
113
+ * (experimental) Returns the singletone Eslint component of a project or undefined if there is none.
114
+ *
115
+ * @experimental
116
+ */
117
+ static of(project: Project): Eslint | undefined;
100
118
  /**
101
119
  * (experimental) eslint rules.
102
120
  *