projen 0.42.0 → 0.42.1

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 (106) hide show
  1. package/.jsii +182 -372
  2. package/API.md +32 -165
  3. package/lib/awscdk/auto-discover.d.ts +0 -7
  4. package/lib/awscdk/auto-discover.js +4 -5
  5. package/lib/awscdk/awscdk-app-ts.d.ts +28 -7
  6. package/lib/awscdk/awscdk-app-ts.js +37 -30
  7. package/lib/awscdk/awscdk-construct.d.ts +93 -13
  8. package/lib/awscdk/awscdk-construct.js +87 -49
  9. package/lib/awscdk/cdk-config.js +1 -1
  10. package/lib/awscdk/cdk-tasks.js +1 -1
  11. package/lib/awscdk/index.d.ts +0 -1
  12. package/lib/awscdk/index.js +1 -2
  13. package/lib/awscdk/integration-test.js +1 -1
  14. package/lib/awscdk/java-app.js +1 -1
  15. package/lib/awscdk/lambda-function.d.ts +1 -8
  16. package/lib/awscdk/lambda-function.js +5 -14
  17. package/lib/cdk/construct-lib.js +1 -1
  18. package/lib/cdk/jsii-docgen.js +1 -1
  19. package/lib/cdk/jsii-project.js +1 -1
  20. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  21. package/lib/cdk8s/cdk8s-construct.js +1 -1
  22. package/lib/cdktf/cdktf-construct.js +1 -1
  23. package/lib/component.js +1 -1
  24. package/lib/dependencies.js +1 -1
  25. package/lib/dev-env.js +1 -1
  26. package/lib/docker-compose.js +2 -2
  27. package/lib/file.js +1 -1
  28. package/lib/gitattributes.js +1 -1
  29. package/lib/github/auto-approve.js +1 -1
  30. package/lib/github/auto-merge.js +1 -1
  31. package/lib/github/dependabot.js +1 -1
  32. package/lib/github/github-project.js +1 -1
  33. package/lib/github/github.js +1 -1
  34. package/lib/github/mergify.js +1 -1
  35. package/lib/github/pr-template.js +1 -1
  36. package/lib/github/pull-request-lint.js +1 -1
  37. package/lib/github/stale.js +1 -1
  38. package/lib/github/task-workflow.js +1 -1
  39. package/lib/github/workflows.js +1 -1
  40. package/lib/gitpod.js +1 -1
  41. package/lib/ignore-file.js +1 -1
  42. package/lib/ini.js +1 -1
  43. package/lib/java/java-project.js +1 -1
  44. package/lib/java/junit.js +1 -1
  45. package/lib/java/maven-compile.js +1 -1
  46. package/lib/java/maven-packaging.js +1 -1
  47. package/lib/java/maven-sample.js +1 -1
  48. package/lib/java/pom.js +1 -1
  49. package/lib/java/projenrc.js +1 -1
  50. package/lib/javascript/bundler.js +1 -1
  51. package/lib/javascript/eslint.js +1 -1
  52. package/lib/javascript/jest.js +1 -1
  53. package/lib/javascript/node-package.js +1 -1
  54. package/lib/javascript/node-project.js +1 -1
  55. package/lib/javascript/npm-config.js +1 -1
  56. package/lib/javascript/projenrc.js +1 -1
  57. package/lib/javascript/typescript-config.js +1 -1
  58. package/lib/javascript/upgrade-dependencies.js +2 -2
  59. package/lib/json.js +1 -1
  60. package/lib/license.js +1 -1
  61. package/lib/logger.js +1 -1
  62. package/lib/makefile.js +1 -1
  63. package/lib/object-file.js +1 -1
  64. package/lib/project-build.js +1 -1
  65. package/lib/project.js +1 -1
  66. package/lib/projects.js +1 -1
  67. package/lib/projenrc-json.js +1 -1
  68. package/lib/python/pip.js +1 -1
  69. package/lib/python/poetry.js +2 -2
  70. package/lib/python/projenrc.js +1 -1
  71. package/lib/python/pytest.js +1 -1
  72. package/lib/python/python-project.js +1 -1
  73. package/lib/python/python-sample.js +1 -1
  74. package/lib/python/requirements-file.js +1 -1
  75. package/lib/python/setuppy.js +1 -1
  76. package/lib/python/setuptools.js +1 -1
  77. package/lib/python/venv.js +1 -1
  78. package/lib/readme.js +1 -1
  79. package/lib/release/publisher.js +1 -1
  80. package/lib/release/release-trigger.js +1 -1
  81. package/lib/release/release.js +1 -1
  82. package/lib/sample-file.js +2 -2
  83. package/lib/semver.js +1 -1
  84. package/lib/source-code.js +1 -1
  85. package/lib/task-runtime.js +1 -1
  86. package/lib/task.js +1 -1
  87. package/lib/tasks.js +1 -1
  88. package/lib/testing.js +1 -1
  89. package/lib/textfile.js +1 -1
  90. package/lib/toml.js +1 -1
  91. package/lib/typescript/projenrc.js +1 -1
  92. package/lib/typescript/typescript-typedoc.js +1 -1
  93. package/lib/typescript/typescript.js +3 -3
  94. package/lib/version.js +1 -1
  95. package/lib/vscode/devcontainer.js +1 -1
  96. package/lib/vscode/launch-config.js +1 -1
  97. package/lib/vscode/vscode.js +1 -1
  98. package/lib/web/next.js +3 -3
  99. package/lib/web/postcss.js +1 -1
  100. package/lib/web/react.js +4 -4
  101. package/lib/web/tailwind.js +1 -1
  102. package/lib/xmlfile.js +1 -1
  103. package/lib/yaml.js +1 -1
  104. package/package.json +1 -1
  105. package/lib/awscdk/awscdk-deps.d.ts +0 -157
  106. package/lib/awscdk/awscdk-deps.js +0 -163
@@ -5,11 +5,10 @@ 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
+ const semver = require("semver");
8
9
  const component_1 = require("../component");
9
- const dependencies_1 = require("../dependencies");
10
10
  const typescript_1 = require("../typescript");
11
11
  const auto_discover_1 = require("./auto-discover");
12
- const awscdk_deps_1 = require("./awscdk-deps");
13
12
  const cdk_config_1 = require("./cdk-config");
14
13
  const cdk_tasks_1 = require("./cdk-tasks");
15
14
  /**
@@ -23,7 +22,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
23
22
  * @experimental
24
23
  */
25
24
  constructor(options) {
26
- var _b, _c, _d, _e, _f, _g;
25
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
27
26
  super({
28
27
  ...options,
29
28
  sampleCode: false,
@@ -34,25 +33,35 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
34
33
  addToPreCompile: false,
35
34
  },
36
35
  });
37
- this.cdkDeps = new awscdk_deps_1.AwsCdkDeps(this, {
38
- dependencyType: dependencies_1.DependencyType.RUNTIME,
39
- ...options,
40
- });
41
36
  this.appEntrypoint = (_b = options.appEntrypoint) !== null && _b !== void 0 ? _b : 'main.ts';
37
+ this.cdkVersion = options.cdkVersionPinning ? options.cdkVersion : `^${options.cdkVersion}`;
42
38
  // CLI
43
- this.addDevDeps(`aws-cdk@${this.cdkDeps.cdkVersion}`);
39
+ this.addDevDeps(this.formatModuleSpec('aws-cdk'));
40
+ this.addCdkDependency('@aws-cdk/assert');
41
+ if (!this.cdkVersion) {
42
+ throw new Error('Required field cdkVersion is not specified.');
43
+ }
44
+ const cdkMajorVersion = (_d = (_c = semver.minVersion(this.cdkVersion)) === null || _c === void 0 ? void 0 : _c.major) !== null && _d !== void 0 ? _d : 1;
45
+ if (cdkMajorVersion < 2) {
46
+ this.addCdkDependency('@aws-cdk/core');
47
+ }
48
+ else {
49
+ this.addCdkDependency('aws-cdk-lib');
50
+ this.addDeps('constructs@^10.0.5');
51
+ }
52
+ this.addCdkDependency(...(_e = options.cdkDependencies) !== null && _e !== void 0 ? _e : []);
44
53
  // no compile step because we do all of it in typescript directly
45
54
  this.compileTask.reset();
46
55
  this.cdkTasks = new cdk_tasks_1.CdkTasks(this);
47
56
  // add synth to the build
48
57
  this.postCompileTask.spawn(this.cdkTasks.synth);
49
- const tsConfigFile = (_c = this.tsconfig) === null || _c === void 0 ? void 0 : _c.fileName;
58
+ const tsConfigFile = (_f = this.tsconfig) === null || _f === void 0 ? void 0 : _f.fileName;
50
59
  if (!tsConfigFile) {
51
60
  throw new Error('Expecting tsconfig.json');
52
61
  }
53
62
  this.cdkConfig = new cdk_config_1.CdkConfig(this, {
54
63
  app: `npx ts-node -P ${tsConfigFile} --prefer-ts-exts ${path.posix.join(this.srcdir, this.appEntrypoint)}`,
55
- featureFlags: this.cdkDeps.cdkMajorVersion < 2,
64
+ featureFlags: cdkMajorVersion < 2,
56
65
  buildCommand: this.runTaskCommand(this.bundler.bundleTask),
57
66
  watchIncludes: [
58
67
  `${this.srcdir}/**/*.ts`,
@@ -71,32 +80,25 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
71
80
  ...options,
72
81
  });
73
82
  this.gitignore.exclude('.parcel-cache/');
74
- (_d = this.npmignore) === null || _d === void 0 ? void 0 : _d.exclude(`${this.cdkConfig.cdkout}/`);
75
- (_e = this.npmignore) === null || _e === void 0 ? void 0 : _e.exclude('.cdk.staging/');
83
+ (_g = this.npmignore) === null || _g === void 0 ? void 0 : _g.exclude(`${this.cdkConfig.cdkout}/`);
84
+ (_h = this.npmignore) === null || _h === void 0 ? void 0 : _h.exclude('.cdk.staging/');
76
85
  if (this.tsconfig) {
77
86
  this.tsconfig.exclude.push(this.cdkConfig.cdkout);
78
87
  }
79
88
  this.addDevDeps('ts-node@^9');
80
- if ((_f = options.sampleCode) !== null && _f !== void 0 ? _f : true) {
81
- new SampleCode(this, this.cdkDeps.cdkMajorVersion);
89
+ if ((_j = options.sampleCode) !== null && _j !== void 0 ? _j : true) {
90
+ new SampleCode(this, cdkMajorVersion);
82
91
  }
83
- const lambdaAutoDiscover = (_g = options.lambdaAutoDiscover) !== null && _g !== void 0 ? _g : true;
92
+ const lambdaAutoDiscover = (_k = options.lambdaAutoDiscover) !== null && _k !== void 0 ? _k : true;
84
93
  if (lambdaAutoDiscover) {
85
94
  new auto_discover_1.AutoDiscover(this, {
86
95
  srcdir: this.srcdir,
87
96
  testdir: this.testdir,
88
97
  lambdaOptions: options.lambdaOptions,
89
98
  tsconfigPath: this.tsconfigDev.fileName,
90
- cdkDeps: this.cdkDeps,
91
99
  });
92
100
  }
93
101
  }
94
- /**
95
- * (experimental) The CDK version this app is using.
96
- *
97
- * @experimental
98
- */
99
- get cdkVersion() { return this.cdkDeps.cdkVersion; }
100
102
  /**
101
103
  * (experimental) Adds an AWS CDK module dependencies.
102
104
  *
@@ -104,12 +106,18 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
104
106
  * @experimental
105
107
  */
106
108
  addCdkDependency(...modules) {
107
- return this.cdkDeps.addV1Dependencies(...modules);
109
+ if (modules.length === 0) {
110
+ return;
111
+ }
112
+ this.addDeps(...modules.map(m => this.formatModuleSpec(m)));
113
+ }
114
+ formatModuleSpec(module) {
115
+ return `${module}@${this.cdkVersion}`;
108
116
  }
109
117
  }
110
118
  exports.AwsCdkTypeScriptApp = AwsCdkTypeScriptApp;
111
119
  _a = JSII_RTTI_SYMBOL_1;
112
- AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.42.0" };
120
+ AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.42.1" };
113
121
  class SampleCode extends component_1.Component {
114
122
  constructor(project, cdkMajorVersion) {
115
123
  super(project);
@@ -161,25 +169,24 @@ app.synth();`;
161
169
  const testImports = new Array();
162
170
  if (this.cdkMajorVersion < 2) {
163
171
  testImports.push('import { App } from \'@aws-cdk/core\';');
164
- testImports.push('import { Template } from \'@aws-cdk/assertions\';');
165
172
  }
166
173
  else {
167
174
  testImports.push('import { App } from \'aws-cdk-lib\';');
168
- testImports.push('import { Template } from \'aws-cdk-lib/assertions\';');
169
175
  }
170
176
  const appEntrypointName = path.basename(this.appProject.appEntrypoint, '.ts');
171
- const testCode = `${testImports.join('\n')}
177
+ const testCode = `import '@aws-cdk/assert/jest';
178
+ ${testImports.join('\n')}
172
179
  import { MyStack } from '../src/${appEntrypointName}';
173
180
 
174
181
  test('Snapshot', () => {
175
182
  const app = new App();
176
183
  const stack = new MyStack(app, 'test');
177
184
 
178
- const template = Template.fromStack(stack);
179
- expect(template.toJSON()).toMatchSnapshot();
185
+ expect(stack).not.toHaveResource('AWS::S3::Bucket');
186
+ expect(app.synth().getStackArtifact(stack.artifactId).template).toMatchSnapshot();
180
187
  });`;
181
188
  fs.mkdirpSync(testdir);
182
189
  fs.writeFileSync(path.join(testdir, `${appEntrypointName}.test.ts`), testCode);
183
190
  }
184
191
  }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsNENBQXlDO0FBQ3pDLGtEQUFpRDtBQUNqRCw4Q0FBK0U7QUFDL0UsbURBQStDO0FBQy9DLCtDQUFvRTtBQUNwRSw2Q0FBaUU7QUFDakUsMkNBQXVDOzs7Ozs7O0FBZXZDLE1BQWEsbUJBQW9CLFNBQVEsaUNBQW9COzs7O0lBZTNELFlBQVksT0FBbUM7O1FBQzdDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRTtnQkFDZCxHQUFHLE9BQU8sQ0FBQyxjQUFjO2dCQUV6Qix1RUFBdUU7Z0JBQ3ZFLHlEQUF5RDtnQkFDekQsZUFBZSxFQUFFLEtBQUs7YUFDdkI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksd0JBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDbEMsY0FBYyxFQUFFLDZCQUFjLENBQUMsT0FBTztZQUN0QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLFNBQVMsQ0FBQztRQUV4RCxNQUFNO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV0RCxpRUFBaUU7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxL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QyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4RixPQUFPO1NBQ1I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsV0FBVyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQzNELFdBQVcsQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0wsV0FBVyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3pELFdBQVcsQ0FBQyxJQUFJLENBQUMsc0RBQXNELENBQUMsQ0FBQztTQUMxRTtRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RSxNQUFNLFFBQVEsR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2tDQUNaLGlCQUFpQjs7Ozs7Ozs7SUFRL0MsQ0FBQztRQUVELEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSAnLi4vZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlc2NyaXB0JztcbmltcG9ydCB7IEF1dG9EaXNjb3ZlciB9IGZyb20gJy4vYXV0by1kaXNjb3Zlcic7XG5pbXBvcnQgeyBBd3NDZGtEZXBzLCBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB9IGZyb20gJy4vYXdzY2RrLWRlcHMnO1xuaW1wb3J0IHsgQ2RrQ29uZmlnLCBDZGtDb25maWdDb21tb25PcHRpb25zIH0gZnJvbSAnLi9jZGstY29uZmlnJztcbmltcG9ydCB7IENka1Rhc2tzIH0gZnJvbSAnLi9jZGstdGFza3MnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSAnLi9sYW1iZGEtZnVuY3Rpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBDZGtDb25maWdDb21tb25PcHRpb25zLCBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXBwRW50cnlwb2ludD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEF3c0Nka1R5cGVTY3JpcHRBcHAgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGdldCBjZGtWZXJzaW9uKCkgeyByZXR1cm4gdGhpcy5jZGtEZXBzLmNka1ZlcnNpb247IH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBhcHBFbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGNka1Rhc2tzOiBDZGtUYXNrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrQ29uZmlnOiBDZGtDb25maWc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNka0RlcHM6IEF3c0Nka0RlcHM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBidW5kbGVyT3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmJ1bmRsZXJPcHRpb25zLFxuXG4gICAgICAgIC8vIHdlIGludm9rZSB0aGUgXCJidW5kbGVcIiB0YXNrIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHN0ZXAgaW4gY2RrLmpzb24gc29cbiAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCBpdCB0byBiZSBhZGRlZCB0byB0aGUgcHJlLWNvbXBpbGUgcGhhc2UuXG4gICAgICAgIGFkZFRvUHJlQ29tcGlsZTogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jZGtEZXBzID0gbmV3IEF3c0Nka0RlcHModGhpcywge1xuICAgICAgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlLlJVTlRJTUUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuYXBwRW50cnlwb2ludCA9IG9wdGlvbnMuYXBwRW50cnlwb2ludCA/PyAnbWFpbi50cyc7XG5cbiAgICAvLyBDTElcbiAgICB0aGlzLmFkZERldkRlcHMoYGF3cy1jZGtAJHt0aGlzLmNka0RlcHMuY2RrVmVyc2lvbn1gKTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoKTtcblxuICAgIGNvbnN0IHRzQ29uZmlnRmlsZSA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIGlmICghdHNDb25maWdGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGluZyB0c2NvbmZpZy5qc29uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jZGtDb25maWcgPSBuZXcgQ2RrQ29uZmlnKHRoaXMsIHtcbiAgICAgIGFwcDogYG5weCB0cy1ub2RlIC1QICR7dHNDb25maWdGaWxlfSAtLXByZWZlci10cy1leHRzICR7cGF0aC5wb3NpeC5qb2luKHRoaXMuc3JjZGlyLCB0aGlzLmFwcEVudHJ5cG9pbnQpfWAsXG4gICAgICBmZWF0dXJlRmxhZ3M6IHRoaXMuY2RrRGVwcy5jZGtNYWpvclZlcnNpb24gPCAyLFxuICAgICAgYnVpbGRDb21tYW5kOiB0aGlzLnJ1blRhc2tDb21tYW5kKHRoaXMuYnVuZGxlci5idW5kbGVUYXNrKSxcbiAgICAgIHdhdGNoSW5jbHVkZXM6IFtcbiAgICAgICAgYCR7dGhpcy5zcmNkaXJ9LyoqLyoudHNgLFxuICAgICAgICBgJHt0aGlzLnRlc3RkaXJ9LyoqLyoudHNgLFxuICAgICAgXSxcbiAgICAgIHdhdGNoRXhjbHVkZXM6IFtcbiAgICAgICAgJ1JFQURNRS5tZCcsXG4gICAgICAgICdjZGsqLmpzb24nLFxuICAgICAgICAnKiovKi5kLnRzJyxcbiAgICAgICAgJyoqLyouanMnLFxuICAgICAgICAndHNjb25maWcuanNvbicsXG4gICAgICAgICdwYWNrYWdlKi5qc29uJyxcbiAgICAgICAgJ3lhcm4ubG9jaycsXG4gICAgICAgICdub2RlX21vZHVsZXMnLFxuICAgICAgXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucGFyY2VsLWNhY2hlLycpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYCR7dGhpcy5jZGtDb25maWcuY2Rrb3V0fS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZSgnLmNkay5zdGFnaW5nLycpO1xuXG4gICAgaWYgKHRoaXMudHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcuZXhjbHVkZS5wdXNoKHRoaXMuY2RrQ29uZmlnLmNka291dCk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGREZXZEZXBzKCd0cy1ub2RlQF45Jyk7XG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgU2FtcGxlQ29kZSh0aGlzLCB0aGlzLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW1iZGFBdXRvRGlzY292ZXIgPSBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlO1xuICAgIGlmIChsYW1iZGFBdXRvRGlzY292ZXIpIHtcbiAgICAgIG5ldyBBdXRvRGlzY292ZXIodGhpcywge1xuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICB0ZXN0ZGlyOiB0aGlzLnRlc3RkaXIsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgICBjZGtEZXBzOiB0aGlzLmNka0RlcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRDZGtEZXBlbmRlbmN5KC4uLm1vZHVsZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyguLi5tb2R1bGVzKTtcbiAgfVxufVxuXG5jbGFzcyBTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBQcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgcmVhZG9ubHkgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXIpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICB0aGlzLmFwcFByb2plY3QgPSBwcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7XG4gICAgY29uc3Qgb3V0ZGlyID0gdGhpcy5wcm9qZWN0Lm91dGRpcjtcbiAgICBjb25zdCBzcmNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmFwcFByb2plY3Quc3JjZGlyKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmMoc3JjZGlyKSAmJiBmcy5yZWFkZGlyU3luYyhzcmNkaXIpLmZpbHRlcih4ID0+IHguZW5kc1dpdGgoJy50cycpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0ltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHNyY0ltcG9ydHMucHVzaCgnaW1wb3J0IHsgQXBwLCBDb25zdHJ1Y3QsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcXCdAYXdzLWNkay9jb3JlXFwnOycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFxcJ2F3cy1jZGstbGliXFwnOycpO1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjQ29kZSA9IGAke3NyY0ltcG9ydHMuam9pbignXFxuJyl9XG5cbmV4cG9ydCBjbGFzcyBNeVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBkZWZpbmUgcmVzb3VyY2VzIGhlcmUuLi5cbiAgfVxufVxuXG4vLyBmb3IgZGV2ZWxvcG1lbnQsIHVzZSBhY2NvdW50L3JlZ2lvbiBmcm9tIGNkayBjbGlcbmNvbnN0IGRldkVudiA9IHtcbiAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcbiAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG59O1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbm5ldyBNeVN0YWNrKGFwcCwgJ215LXN0YWNrLWRldicsIHsgZW52OiBkZXZFbnYgfSk7XG4vLyBuZXcgTXlTdGFjayhhcHAsICdteS1zdGFjay1wcm9kJywgeyBlbnY6IHByb2RFbnYgfSk7XG5cbmFwcC5zeW50aCgpO2A7XG5cbiAgICBmcy5ta2RpcnBTeW5jKHNyY2Rpcik7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oc3JjZGlyLCB0aGlzLmFwcFByb2plY3QuYXBwRW50cnlwb2ludCksIHNyY0NvZGUpO1xuXG4gICAgY29uc3QgdGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC50ZXN0ZGlyKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmModGVzdGRpcikgJiYgZnMucmVhZGRpclN5bmModGVzdGRpcikuZmlsdGVyKHggPT4geC5lbmRzV2l0aCgnLnRzJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVzdEltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCB9IGZyb20gXFwnQGF3cy1jZGsvY29yZVxcJzsnKTtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcXCdAYXdzLWNkay9hc3NlcnRpb25zXFwnOycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXN0SW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBBcHAgfSBmcm9tIFxcJ2F3cy1jZGstbGliXFwnOycpO1xuICAgICAgdGVzdEltcG9ydHMucHVzaCgnaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2Fzc2VydGlvbnNcXCc7Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYXBwRW50cnlwb2ludE5hbWUgPSBwYXRoLmJhc2VuYW1lKHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50LCAnLnRzJyk7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgJHt0ZXN0SW1wb3J0cy5qb2luKCdcXG4nKX1cbmltcG9ydCB7IE15U3RhY2sgfSBmcm9tICcuLi9zcmMvJHthcHBFbnRyeXBvaW50TmFtZX0nO1xuXG50ZXN0KCdTbmFwc2hvdCcsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuICBjb25zdCBzdGFjayA9IG5ldyBNeVN0YWNrKGFwcCwgJ3Rlc3QnKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIGV4cGVjdCh0ZW1wbGF0ZS50b0pTT04oKSkudG9NYXRjaFNuYXBzaG90KCk7XG59KTtgO1xuXG4gICAgZnMubWtkaXJwU3luYyh0ZXN0ZGlyKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbih0ZXN0ZGlyLCBgJHthcHBFbnRyeXBvaW50TmFtZX0udGVzdC50c2ApLCB0ZXN0Q29kZSk7XG4gIH1cbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsaUNBQWlDO0FBQ2pDLDRDQUF5QztBQUN6Qyw4Q0FBK0U7QUFDL0UsbURBQStDO0FBQy9DLDZDQUFpRTtBQUNqRSwyQ0FBdUM7Ozs7Ozs7QUF3QnZDLE1BQWEsbUJBQW9CLFNBQVEsaUNBQW9COzs7O0lBYTNELFlBQVksT0FBbUM7O1FBQzdDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRTtnQkFDZCxHQUFHLE9BQU8sQ0FBQyxjQUFjO2dCQUV6Qix1RUFBdUU7Z0JBQ3ZFLHlEQUF5RDtnQkFDekQsZUFBZSxFQUFFLEtBQUs7YUFDdkI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLFNBQVMsQ0FBQztRQUV4RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUYsTUFBTTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsTUFBTSxlQUFlLGVBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBD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SUFBSSxDQUFDLElBQUksQ0FBQztrQ0FDVSxpQkFBaUI7Ozs7Ozs7O0lBUS9DLENBQUM7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlc2NyaXB0JztcbmltcG9ydCB7IEF1dG9EaXNjb3ZlciB9IGZyb20gJy4vYXV0by1kaXNjb3Zlcic7XG5pbXBvcnQgeyBDZGtDb25maWcsIENka0NvbmZpZ0NvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2Nkay1jb25maWcnO1xuaW1wb3J0IHsgQ2RrVGFza3MgfSBmcm9tICcuL2Nkay10YXNrcyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2xhbWJkYS1mdW5jdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIENka0NvbmZpZ0NvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXdzQ2RrVHlwZVNjcmlwdEFwcCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFwcEVudHJ5cG9pbnQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFza3M6IENka1Rhc2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtDb25maWc6IENka0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGJ1bmRsZXJPcHRpb25zOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuYnVuZGxlck9wdGlvbnMsXG5cbiAgICAgICAgLy8gd2UgaW52b2tlIHRoZSBcImJ1bmRsZVwiIHRhc2sgYXMgcGFydCBvZiB0aGUgYnVpbGQgc3RlcCBpbiBjZGsuanNvbiBzb1xuICAgICAgICAvLyB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIGFkZGVkIHRvIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICAgICAgYWRkVG9QcmVDb21waWxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gJ21haW4udHMnO1xuXG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uUGlubmluZyA/IG9wdGlvbnMuY2RrVmVyc2lvbiA6IGBeJHtvcHRpb25zLmNka1ZlcnNpb259YDtcblxuICAgIC8vIENMSVxuICAgIHRoaXMuYWRkRGV2RGVwcyh0aGlzLmZvcm1hdE1vZHVsZVNwZWMoJ2F3cy1jZGsnKSk7XG4gICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdAYXdzLWNkay9hc3NlcnQnKTtcblxuICAgIGlmICghdGhpcy5jZGtWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIGZpZWxkIGNka1ZlcnNpb24gaXMgbm90IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjZGtNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbih0aGlzLmNka1ZlcnNpb24pPy5tYWpvciA/PyAxO1xuICAgIGlmIChjZGtNYWpvclZlcnNpb24gPCAyKSB7XG4gICAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koJ0Bhd3MtY2RrL2NvcmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRDZGtEZXBlbmRlbmN5KCdhd3MtY2RrLWxpYicpO1xuICAgICAgdGhpcy5hZGREZXBzKCdjb25zdHJ1Y3RzQF4xMC4wLjUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgLy8gbm8gY29tcGlsZSBzdGVwIGJlY2F1c2Ugd2UgZG8gYWxsIG9mIGl0IGluIHR5cGVzY3JpcHQgZGlyZWN0bHlcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNka1Rhc2tzID0gbmV3IENka1Rhc2tzKHRoaXMpO1xuXG4gICAgLy8gYWRkIHN5bnRoIHRvIHRoZSBidWlsZFxuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHRoaXMuY2RrVGFza3Muc3ludGgpO1xuXG4gICAgY29uc3QgdHNDb25maWdGaWxlID0gdGhpcy50c2NvbmZpZz8uZmlsZU5hbWU7XG4gICAgaWYgKCF0c0NvbmZpZ0ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0aW5nIHRzY29uZmlnLmpzb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLmNka0NvbmZpZyA9IG5ldyBDZGtDb25maWcodGhpcywge1xuICAgICAgYXBwOiBgbnB4IHRzLW5vZGUgLVAgJHt0c0NvbmZpZ0ZpbGV9IC0tcHJlZmVyLXRzLWV4dHMgJHtwYXRoLnBvc2l4LmpvaW4odGhpcy5zcmNkaXIsIHRoaXMuYXBwRW50cnlwb2ludCl9YCxcbiAgICAgIGZlYXR1cmVGbGFnczogY2RrTWFqb3JWZXJzaW9uIDwgMixcbiAgICAgIGJ1aWxkQ29tbWFuZDogdGhpcy5ydW5UYXNrQ29tbWFuZCh0aGlzLmJ1bmRsZXIuYnVuZGxlVGFzayksXG4gICAgICB3YXRjaEluY2x1ZGVzOiBbXG4gICAgICAgIGAke3RoaXMuc3JjZGlyfS8qKi8qLnRzYCxcbiAgICAgICAgYCR7dGhpcy50ZXN0ZGlyfS8qKi8qLnRzYCxcbiAgICAgIF0sXG4gICAgICB3YXRjaEV4Y2x1ZGVzOiBbXG4gICAgICAgICdSRUFETUUubWQnLFxuICAgICAgICAnY2RrKi5qc29uJyxcbiAgICAgICAgJyoqLyouZC50cycsXG4gICAgICAgICcqKi8qLmpzJyxcbiAgICAgICAgJ3RzY29uZmlnLmpzb24nLFxuICAgICAgICAncGFja2FnZSouanNvbicsXG4gICAgICAgICd5YXJuLmxvY2snLFxuICAgICAgICAnbm9kZV9tb2R1bGVzJyxcbiAgICAgIF0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZSgnLnBhcmNlbC1jYWNoZS8nKTtcblxuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAke3RoaXMuY2RrQ29uZmlnLmNka291dH0vYCk7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoJy5jZGsuc3RhZ2luZy8nKTtcblxuICAgIGlmICh0aGlzLnRzY29uZmlnKSB7XG4gICAgICB0aGlzLnRzY29uZmlnLmV4Y2x1ZGUucHVzaCh0aGlzLmNka0NvbmZpZy5jZGtvdXQpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkRGV2RGVwcygndHMtbm9kZUBeOScpO1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcywgY2RrTWFqb3JWZXJzaW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW1iZGFBdXRvRGlzY292ZXIgPSBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlO1xuICAgIGlmIChsYW1iZGFBdXRvRGlzY292ZXIpIHtcbiAgICAgIG5ldyBBdXRvRGlzY292ZXIodGhpcywge1xuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICB0ZXN0ZGlyOiB0aGlzLnRlc3RkaXIsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jeSguLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChtb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZERlcHMoLi4ubW9kdWxlcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TW9kdWxlU3BlYyhtb2R1bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke21vZHVsZX1AJHt0aGlzLmNka1ZlcnNpb259YDtcbiAgfVxufVxuXG5jbGFzcyBTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBQcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgcmVhZG9ubHkgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXIpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICB0aGlzLmFwcFByb2plY3QgPSBwcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7XG4gICAgY29uc3Qgb3V0ZGlyID0gdGhpcy5wcm9qZWN0Lm91dGRpcjtcbiAgICBjb25zdCBzcmNkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmFwcFByb2plY3Quc3JjZGlyKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmMoc3JjZGlyKSAmJiBmcy5yZWFkZGlyU3luYyhzcmNkaXIpLmZpbHRlcih4ID0+IHguZW5kc1dpdGgoJy50cycpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0ltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHNyY0ltcG9ydHMucHVzaCgnaW1wb3J0IHsgQXBwLCBDb25zdHJ1Y3QsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcXCdAYXdzLWNkay9jb3JlXFwnOycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFxcJ2F3cy1jZGstbGliXFwnOycpO1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjQ29kZSA9IGAke3NyY0ltcG9ydHMuam9pbignXFxuJyl9XG5cbmV4cG9ydCBjbGFzcyBNeVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBkZWZpbmUgcmVzb3VyY2VzIGhlcmUuLi5cbiAgfVxufVxuXG4vLyBmb3IgZGV2ZWxvcG1lbnQsIHVzZSBhY2NvdW50L3JlZ2lvbiBmcm9tIGNkayBjbGlcbmNvbnN0IGRldkVudiA9IHtcbiAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcbiAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG59O1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbm5ldyBNeVN0YWNrKGFwcCwgJ215LXN0YWNrLWRldicsIHsgZW52OiBkZXZFbnYgfSk7XG4vLyBuZXcgTXlTdGFjayhhcHAsICdteS1zdGFjay1wcm9kJywgeyBlbnY6IHByb2RFbnYgfSk7XG5cbmFwcC5zeW50aCgpO2A7XG5cbiAgICBmcy5ta2RpcnBTeW5jKHNyY2Rpcik7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oc3JjZGlyLCB0aGlzLmFwcFByb2plY3QuYXBwRW50cnlwb2ludCksIHNyY0NvZGUpO1xuXG4gICAgY29uc3QgdGVzdGRpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC50ZXN0ZGlyKTtcbiAgICBpZiAoZnMucGF0aEV4aXN0c1N5bmModGVzdGRpcikgJiYgZnMucmVhZGRpclN5bmModGVzdGRpcikuZmlsdGVyKHggPT4geC5lbmRzV2l0aCgnLnRzJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVzdEltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goJ2ltcG9ydCB7IEFwcCB9IGZyb20gXFwnQGF3cy1jZGsvY29yZVxcJzsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVzdEltcG9ydHMucHVzaCgnaW1wb3J0IHsgQXBwIH0gZnJvbSBcXCdhd3MtY2RrLWxpYlxcJzsnKTtcbiAgICB9XG5cblxuICAgIGNvbnN0IGFwcEVudHJ5cG9pbnROYW1lID0gcGF0aC5iYXNlbmFtZSh0aGlzLmFwcFByb2plY3QuYXBwRW50cnlwb2ludCwgJy50cycpO1xuICAgIGNvbnN0IHRlc3RDb2RlID0gYGltcG9ydCAnQGF3cy1jZGsvYXNzZXJ0L2plc3QnO1xuJHt0ZXN0SW1wb3J0cy5qb2luKCdcXG4nKX1cbmltcG9ydCB7IE15U3RhY2sgfSBmcm9tICcuLi9zcmMvJHthcHBFbnRyeXBvaW50TmFtZX0nO1xuXG50ZXN0KCdTbmFwc2hvdCcsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuICBjb25zdCBzdGFjayA9IG5ldyBNeVN0YWNrKGFwcCwgJ3Rlc3QnKTtcblxuICBleHBlY3Qoc3RhY2spLm5vdC50b0hhdmVSZXNvdXJjZSgnQVdTOjpTMzo6QnVja2V0Jyk7XG4gIGV4cGVjdChhcHAuc3ludGgoKS5nZXRTdGFja0FydGlmYWN0KHN0YWNrLmFydGlmYWN0SWQpLnRlbXBsYXRlKS50b01hdGNoU25hcHNob3QoKTtcbn0pO2A7XG5cbiAgICBmcy5ta2RpcnBTeW5jKHRlc3RkaXIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlc3RkaXIsIGAke2FwcEVudHJ5cG9pbnROYW1lfS50ZXN0LnRzYCksIHRlc3RDb2RlKTtcbiAgfVxufVxuIl19
@@ -1,12 +1,83 @@
1
1
  import { ConstructLibrary, ConstructLibraryOptions } from '../cdk';
2
- import { AwsCdkDeps, AwsCdkDepsCommonOptions } from './awscdk-deps';
3
2
  import { LambdaFunctionCommonOptions } from './lambda-function';
4
3
  /**
5
- * (experimental) Options for `AwsCdkConstructLibrary`.
4
+ * (experimental) Options for the construct-lib-aws project.
6
5
  *
7
6
  * @experimental
8
7
  */
9
- export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions, AwsCdkDepsCommonOptions {
8
+ export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions {
9
+ /**
10
+ * (experimental) Minimum target version this library is tested against.
11
+ *
12
+ * @default "2.0.0"
13
+ * @experimental
14
+ * @featured true
15
+ */
16
+ readonly cdkVersion: string;
17
+ /**
18
+ * (experimental) Minimum target version of constructs being tested against. If not provided, the default value depends on the configured `cdkVersion`:.
19
+ *
20
+ * - For CDK 1.x, the default is "3.2.27"
21
+ * - For CDK 2.x, the default is "10.0.5"
22
+ * - Otherwise, the default is "*"
23
+ *
24
+ * @default - When the default behavior is used, the dependency on `constructs` will
25
+ * be added as both a `peerDependency` and a `devDependency`.
26
+ * @experimental
27
+ */
28
+ readonly constructsVersion?: string;
29
+ /**
30
+ * (experimental) Use pinned version instead of caret version for CDK.
31
+ *
32
+ * You can use this to prevent yarn to mix versions for your CDK dependencies and to prevent auto-updates.
33
+ * If you use experimental features this will let you define the moment you include breaking changes.
34
+ *
35
+ * @default false
36
+ * @experimental
37
+ */
38
+ readonly cdkVersionPinning?: boolean;
39
+ /**
40
+ * (deprecated) Which AWS CDK modules (those that start with "@aws-cdk/") does this library require when consumed?
41
+ *
42
+ * @deprecated - For CDK 2.x use 'peerDeps' instead
43
+ */
44
+ readonly cdkDependencies?: string[];
45
+ /**
46
+ * (deprecated) If this is enabled (default), all modules declared in `cdkDependencies` will be also added as normal `dependencies` (as well as `peerDependencies`).
47
+ *
48
+ * This is to ensure that downstream consumers actually have your CDK dependencies installed
49
+ * when using npm < 7 or yarn, where peer dependencies are not automatically installed.
50
+ * If this is disabled, `cdkDependencies` will be added to `devDependencies` to ensure
51
+ * they are present during development.
52
+ *
53
+ * @default true
54
+ * @deprecated - Not used for CDK 2.x
55
+ */
56
+ readonly cdkDependenciesAsDeps?: boolean;
57
+ /**
58
+ * (deprecated) Install the @aws-cdk/assert library?
59
+ *
60
+ * @default false
61
+ * @deprecated - use cdkAssertions instead
62
+ */
63
+ readonly cdkAssert?: boolean;
64
+ /**
65
+ * (experimental) Install the @aws-cdk/assertions library?
66
+ *
67
+ * Only needed for CDK 1.x. If using CDK 2.x then
68
+ * assertions is already included in 'aws-cdk-lib'
69
+ *
70
+ * @default true
71
+ * @experimental
72
+ */
73
+ readonly cdkAssertions?: boolean;
74
+ /**
75
+ * (deprecated) AWS CDK modules required for testing.
76
+ *
77
+ * @deprecated - For CDK 2.x use 'devDeps' instead
78
+ * @featured true
79
+ */
80
+ readonly cdkTestDependencies?: string[];
10
81
  /**
11
82
  * (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.
12
83
  *
@@ -34,39 +105,48 @@ export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions,
34
105
  */
35
106
  export declare class AwsCdkConstructLibrary extends ConstructLibrary {
36
107
  /**
108
+ * (experimental) The target CDK version for this library.
109
+ *
37
110
  * @experimental
38
111
  */
39
- readonly cdkDeps: AwsCdkDeps;
112
+ readonly cdkVersion: string;
40
113
  /**
114
+ * (experimental) Whether CDK dependencies are added as normal dependencies (and peer dependencies).
115
+ *
41
116
  * @experimental
42
117
  */
43
- constructor(options: AwsCdkConstructLibraryOptions);
118
+ readonly cdkDependenciesAsDeps: boolean;
44
119
  /**
45
- * (experimental) The target CDK version for this library.
46
- *
47
120
  * @experimental
48
121
  */
49
- get cdkVersion(): string;
122
+ constructor(options: AwsCdkConstructLibraryOptions);
50
123
  /**
51
124
  * @deprecated use `cdkVersion`
52
125
  */
53
126
  get version(): string;
54
127
  /**
55
- * (deprecated) Adds dependencies to AWS CDK modules.
128
+ * (experimental) Adds CDK modules as runtime dependencies.
56
129
  *
57
- * Since this is a library project, dependencies will be added as peer dependencies.
130
+ * Modules are currently by default added with a caret CDK version both as "dependencies"
131
+ * and "peerDependencies". This is because currently npm would not
132
+ * automatically install peer dependencies that are not declared as concerete
133
+ * dependencies by the consumer, so this is a little npm "hack" so that
134
+ * consumers will not need to depend on them directly if they don't interact
135
+ * with them.
136
+ * See `cdkDependenciesAsDeps` for changing the default behavior.
58
137
  *
59
138
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
60
- * @deprecated Not supported in v2. For v1, use `project.cdkDeps.addV1Dependencies()`
139
+ * @experimental
61
140
  */
62
141
  addCdkDependencies(...deps: string[]): void;
63
142
  /**
64
- * (deprecated) Adds AWS CDK modules as dev dependencies.
143
+ * (experimental) Adds CDK modules as test dependencies.
65
144
  *
66
145
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
67
- * @deprecated Not supported in v2. For v1, use `project.cdkDeps.addV1DevDependencies()`
146
+ * @experimental
68
147
  */
69
148
  addCdkTestDependencies(...deps: string[]): void;
149
+ private formatModuleSpec;
70
150
  }
71
151
  /**
72
152
  * @deprecated use `AwsCdkConstructLibraryOptions`
@@ -5,9 +5,7 @@ exports.ConstructLibraryAws = exports.AwsCdkConstructLibrary = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const semver = require("semver");
7
7
  const cdk_1 = require("../cdk");
8
- const dependencies_1 = require("../dependencies");
9
8
  const auto_discover_1 = require("./auto-discover");
10
- const awscdk_deps_1 = require("./awscdk-deps");
11
9
  /**
12
10
  * (experimental) AWS CDK construct library project.
13
11
  *
@@ -23,37 +21,80 @@ class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
23
21
  * @experimental
24
22
  */
25
23
  constructor(options) {
26
- var _c, _d, _e;
27
- const cdkVersion = options.cdkVersion;
24
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l;
25
+ const cdkVersion = options.cdkVersionPinning ? options.cdkVersion : `^${options.cdkVersion}`;
28
26
  const cdkMajorVersion = (_d = (_c = semver.minVersion(cdkVersion)) === null || _c === void 0 ? void 0 : _c.major) !== null && _d !== void 0 ? _d : 2;
29
27
  super({
30
- workflowContainerImage: determineWorkflowContainerImage(options, cdkMajorVersion),
28
+ peerDependencyOptions: cdkMajorVersion === 1 ? {
29
+ pinnedDevDependency: false,
30
+ } : undefined,
31
31
  ...options,
32
32
  });
33
- this.cdkDeps = new awscdk_deps_1.AwsCdkDeps(this, {
34
- // since this we are a library, dependencies should be added a peers
35
- dependencyType: dependencies_1.DependencyType.PEER,
36
- ...options,
37
- });
38
- const lambdaAutoDiscover = (_e = options.lambdaAutoDiscover) !== null && _e !== void 0 ? _e : true;
33
+ this.cdkVersion = cdkVersion;
34
+ this.cdkDependenciesAsDeps = (_e = options.cdkDependenciesAsDeps) !== null && _e !== void 0 ? _e : true;
35
+ switch (cdkMajorVersion) {
36
+ case 1:
37
+ if (options.cdkAssert) {
38
+ this.addDevDeps(this.formatModuleSpec('@aws-cdk/assert'));
39
+ }
40
+ if ((_f = options.cdkAssertions) !== null && _f !== void 0 ? _f : true) {
41
+ this.addDevDeps(this.formatModuleSpec('@aws-cdk/assertions'));
42
+ }
43
+ // CDK 1.x is built on constructs 3.x
44
+ if (options.constructsVersion) {
45
+ const constructsMajorVersion = (_g = semver.minVersion(options.constructsVersion)) === null || _g === void 0 ? void 0 : _g.major;
46
+ if (constructsMajorVersion !== undefined && constructsMajorVersion >= 10) {
47
+ throw new Error('CDK 1.x requires constructs version < 10');
48
+ }
49
+ this.addPeerDeps(`constructs@^${options.constructsVersion}`);
50
+ }
51
+ else {
52
+ this.addPeerDeps('constructs@^3.2.27');
53
+ }
54
+ this.addCdkDependencies(...(_h = options.cdkDependencies) !== null && _h !== void 0 ? _h : []);
55
+ this.addCdkTestDependencies(...(_j = options.cdkTestDependencies) !== null && _j !== void 0 ? _j : []);
56
+ break;
57
+ case 2:
58
+ if (options.cdkAssert !== undefined) {
59
+ throw new Error('cdkAssert is not used for CDK 2.x. Use the assertions library that is provided in aws-cdk-lib');
60
+ }
61
+ if (options.cdkDependencies !== undefined) {
62
+ throw new Error('cdkDependencies is not used for CDK 2.x. Use "peerDeps" instead');
63
+ }
64
+ if (options.cdkDependenciesAsDeps !== undefined) {
65
+ throw new Error('cdkDependenciesAsDeps is not used for CDK 2.x');
66
+ }
67
+ if (options.cdkTestDependencies !== undefined) {
68
+ throw new Error('cdkTestDependencies is not used for CDK 2.x. Use "devDeps" instead');
69
+ }
70
+ // CDK 2.x is built on constructs 10.x
71
+ if (options.constructsVersion) {
72
+ const constructsMajorVersion = (_k = semver.minVersion(options.constructsVersion)) === null || _k === void 0 ? void 0 : _k.major;
73
+ if (constructsMajorVersion !== undefined && constructsMajorVersion < 10) {
74
+ throw new Error('CDK 2.x requires constructs version >= 10');
75
+ }
76
+ this.addPeerDeps(`constructs@^${options.constructsVersion}`);
77
+ }
78
+ else {
79
+ this.addPeerDeps('constructs@^10.0.5');
80
+ }
81
+ this.addPeerDeps(`aws-cdk-lib@${this.cdkVersion}`);
82
+ break;
83
+ default:
84
+ // Otherwise, let the user manage which version they use
85
+ this.addPeerDeps('constructs');
86
+ break;
87
+ }
88
+ const lambdaAutoDiscover = (_l = options.lambdaAutoDiscover) !== null && _l !== void 0 ? _l : true;
39
89
  if (lambdaAutoDiscover) {
40
90
  new auto_discover_1.AutoDiscover(this, {
41
91
  srcdir: this.srcdir,
42
92
  testdir: this.testdir,
43
93
  lambdaOptions: options.lambdaOptions,
44
94
  tsconfigPath: this.tsconfigDev.fileName,
45
- cdkDeps: this.cdkDeps,
46
95
  });
47
96
  }
48
97
  }
49
- /**
50
- * (experimental) The target CDK version for this library.
51
- *
52
- * @experimental
53
- */
54
- get cdkVersion() {
55
- return this.cdkDeps.cdkVersion;
56
- }
57
98
  /**
58
99
  * @deprecated use `cdkVersion`
59
100
  */
@@ -61,48 +102,45 @@ class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
61
102
  return this.cdkVersion;
62
103
  }
63
104
  /**
64
- * (deprecated) Adds dependencies to AWS CDK modules.
105
+ * (experimental) Adds CDK modules as runtime dependencies.
65
106
  *
66
- * Since this is a library project, dependencies will be added as peer dependencies.
107
+ * Modules are currently by default added with a caret CDK version both as "dependencies"
108
+ * and "peerDependencies". This is because currently npm would not
109
+ * automatically install peer dependencies that are not declared as concerete
110
+ * dependencies by the consumer, so this is a little npm "hack" so that
111
+ * consumers will not need to depend on them directly if they don't interact
112
+ * with them.
113
+ * See `cdkDependenciesAsDeps` for changing the default behavior.
67
114
  *
68
115
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
69
- * @deprecated Not supported in v2. For v1, use `project.cdkDeps.addV1Dependencies()`
116
+ * @experimental
70
117
  */
71
118
  addCdkDependencies(...deps) {
72
- return this.cdkDeps.addV1Dependencies(...deps);
119
+ // this ugliness will go away in cdk v2.0
120
+ this.addPeerDeps(...deps.map(m => this.formatModuleSpec(m)));
121
+ if (this.cdkDependenciesAsDeps) {
122
+ this.addDeps(...deps.map(m => this.formatModuleSpec(m)));
123
+ }
124
+ else {
125
+ this.addDevDeps(...deps.map(m => this.formatModuleSpec(m)));
126
+ }
73
127
  }
74
128
  /**
75
- * (deprecated) Adds AWS CDK modules as dev dependencies.
129
+ * (experimental) Adds CDK modules as test dependencies.
76
130
  *
77
131
  * @param deps names of cdk modules (e.g. `@aws-cdk/aws-lambda`).
78
- * @deprecated Not supported in v2. For v1, use `project.cdkDeps.addV1DevDependencies()`
132
+ * @experimental
79
133
  */
80
134
  addCdkTestDependencies(...deps) {
81
- return this.cdkDeps.addV1DevDependencies(...deps);
135
+ this.addDevDeps(...deps.map(m => this.formatModuleSpec(m)));
136
+ }
137
+ formatModuleSpec(module) {
138
+ return `${module}@${this.cdkVersion}`;
82
139
  }
83
140
  }
84
141
  exports.AwsCdkConstructLibrary = AwsCdkConstructLibrary;
85
142
  _a = JSII_RTTI_SYMBOL_1;
86
- AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.42.0" };
87
- function determineWorkflowContainerImage(options, cdkMajorVersion) {
88
- // if the user specifies the workflow container image explicitly, use that
89
- if (options.workflowContainerImage) {
90
- return options.workflowContainerImage;
91
- }
92
- // if the user specifies minimum node version, then JsiiProject will take care of
93
- // determining the workflow container image from that, so we return "undefined"
94
- if (options.minNodeVersion) {
95
- return undefined;
96
- }
97
- // otherwise, choose a workflow container image based on the CDK version
98
- if (cdkMajorVersion === 1) {
99
- return 'jsii/superchain:1-buster-slim';
100
- }
101
- if (cdkMajorVersion === 2) {
102
- return 'jsii/superchain:1-buster-slim-node14';
103
- }
104
- return undefined;
105
- }
143
+ AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.42.1" };
106
144
  /**
107
145
  * @deprecated use `AwsCdkConstructLibrary`
108
146
  */
@@ -110,5 +148,5 @@ class ConstructLibraryAws extends AwsCdkConstructLibrary {
110
148
  }
111
149
  exports.ConstructLibraryAws = ConstructLibraryAws;
112
150
  _b = JSII_RTTI_SYMBOL_1;
113
- ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.42.0" };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyxnQ0FBbUU7QUFDbkUsa0RBQWlEO0FBQ2pELG1EQUErQztBQUMvQywrQ0FBb0U7Ozs7Ozs7Ozs7O0FBYXBFLE1BQWEsc0JBQXVCLFNBQVEsc0JBQWdCOzs7O0lBRzFELFlBQVksT0FBc0M7O1FBQ2hELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdEMsTUFBTSxlQUFlLGVBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsMENBQUUsS0FBSyxtQ0FBSSxDQUFDLENBQUM7UUFFbEUsS0FBSyxDQUFDO1lBQ0osc0JBQXNCLEVBQUUsK0JBQStCLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQztZQUNqRixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksd0JBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDbEMsb0VBQW9FO1lBQ3BFLGNBQWMsRUFBRSw2QkFBYyxDQUFDLElBQUk7WUFDbkMsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxrQkFBa0IsU0FBRyxPQUFPLENBQUMsa0JBQWtCLG1DQUFJLElBQUksQ0FBQztRQUM5RCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7Z0JBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7OztJQUdELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Ozs7Ozs7OztJQUdNLGtCQUFrQixDQUFDLEdBQUcsSUFBYztRQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7Ozs7O0lBR00sc0JBQXNCLENBQUMsR0FBRyxJQUFjO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7O0FBaERILHdEQWlEQzs7O0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxPQUFzQyxFQUFFLGVBQXVCO0lBQ3RHLDBFQUEwRTtJQUMxRSxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtRQUNsQyxPQUFPLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztLQUN2QztJQUVELGlGQUFpRjtJQUNqRiwrRUFBK0U7SUFDL0UsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsd0VBQXdFO0lBQ3hFLElBQUksZUFBZSxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLCtCQUErQixDQUFDO0tBQ3hDO0lBRUQsSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sc0NBQXNDLENBQUM7S0FDL0M7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDOzs7O0FBTUQsTUFBYSxtQkFBb0IsU0FBUSxzQkFBc0I7O0FBQS9ELGtEQUFtRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICcuLi9jZGsnO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tICcuLi9kZXBlbmRlbmNpZXMnO1xuaW1wb3J0IHsgQXV0b0Rpc2NvdmVyIH0gZnJvbSAnLi9hdXRvLWRpc2NvdmVyJztcbmltcG9ydCB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSAnLi9hd3NjZGstZGVwcyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2xhbWJkYS1mdW5jdGlvbic7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIENvbnN0cnVjdExpYnJhcnlPcHRpb25zLCBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrVmVyc2lvbiA9IG9wdGlvbnMuY2RrVmVyc2lvbjtcbiAgICBjb25zdCBjZGtNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbihjZGtWZXJzaW9uKT8ubWFqb3IgPz8gMjtcblxuICAgIHN1cGVyKHtcbiAgICAgIHdvcmtmbG93Q29udGFpbmVySW1hZ2U6IGRldGVybWluZVdvcmtmbG93Q29udGFpbmVySW1hZ2Uob3B0aW9ucywgY2RrTWFqb3JWZXJzaW9uKSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNka0RlcHMgPSBuZXcgQXdzQ2RrRGVwcyh0aGlzLCB7XG4gICAgICAvLyBzaW5jZSB0aGlzIHdlIGFyZSBhIGxpYnJhcnksIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgYWRkZWQgYSBwZWVyc1xuICAgICAgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlLlBFRVIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbGFtYmRhQXV0b0Rpc2NvdmVyID0gb3B0aW9ucy5sYW1iZGFBdXRvRGlzY292ZXIgPz8gdHJ1ZTtcbiAgICBpZiAobGFtYmRhQXV0b0Rpc2NvdmVyKSB7XG4gICAgICBuZXcgQXV0b0Rpc2NvdmVyKHRoaXMsIHtcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgICAgdGVzdGRpcjogdGhpcy50ZXN0ZGlyLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiBvcHRpb25zLmxhbWJkYU9wdGlvbnMsXG4gICAgICAgIHRzY29uZmlnUGF0aDogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgICAgY2RrRGVwczogdGhpcy5jZGtEZXBzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgZ2V0IGNka1ZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrVmVyc2lvbjtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRDZGtEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKC4uLmRlcHMpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrVGVzdERlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLmNka0RlcHMuYWRkVjFEZXZEZXBlbmRlbmNpZXMoLi4uZGVwcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGV0ZXJtaW5lV29ya2Zsb3dDb250YWluZXJJbWFnZShvcHRpb25zOiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucywgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBpZiB0aGUgdXNlciBzcGVjaWZpZXMgdGhlIHdvcmtmbG93IGNvbnRhaW5lciBpbWFnZSBleHBsaWNpdGx5LCB1c2UgdGhhdFxuICBpZiAob3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZTtcbiAgfVxuXG4gIC8vIGlmIHRoZSB1c2VyIHNwZWNpZmllcyBtaW5pbXVtIG5vZGUgdmVyc2lvbiwgdGhlbiBKc2lpUHJvamVjdCB3aWxsIHRha2UgY2FyZSBvZlxuICAvLyBkZXRlcm1pbmluZyB0aGUgd29ya2Zsb3cgY29udGFpbmVyIGltYWdlIGZyb20gdGhhdCwgc28gd2UgcmV0dXJuIFwidW5kZWZpbmVkXCJcbiAgaWYgKG9wdGlvbnMubWluTm9kZVZlcnNpb24pIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlLCBjaG9vc2UgYSB3b3JrZmxvdyBjb250YWluZXIgaW1hZ2UgYmFzZWQgb24gdGhlIENESyB2ZXJzaW9uXG4gIGlmIChjZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICByZXR1cm4gJ2pzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltJztcbiAgfVxuXG4gIGlmIChjZGtNYWpvclZlcnNpb24gPT09IDIpIHtcbiAgICByZXR1cm4gJ2pzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltLW5vZGUxNCc7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0TGlicmFyeUF3c09wdGlvbnMgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7IH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDb25zdHJ1Y3RMaWJyYXJ5QXdzIGV4dGVuZHMgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7IH1cblxuXG4iXX0=
151
+ ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.42.1" };
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyxnQ0FBbUU7QUFDbkUsbURBQStDOzs7Ozs7Ozs7OztBQXFDL0MsTUFBYSxzQkFBdUIsU0FBUSxzQkFBZ0I7Ozs7SUFPMUQsWUFBWSxPQUFzQzs7UUFDaEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3RixNQUFNLGVBQWUsZUFBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQztRQUNsRSxLQUFLLENBQUM7WUFDSixxQkFBcUIsRUFBRSxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsbUJBQW1CLEVBQUUsS0FBSzthQUMzQixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLHFCQUFxQixTQUFHLE9BQU8sQ0FBQyxxQkFBcUIsbUNBQUksSUFBSSxDQUFDO1FBRW5FLFFBQVEsZUFBZSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQztnQkFDSixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztpQkFDM0Q7Z0JBQ0QsVUFBSSxPQUFPLENBQUMsYUFBYSxtQ0FBSSxJQUFJLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixD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SUFHTSxrQkFBa0IsQ0FBQyxHQUFHLElBQWM7UUFDekMseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3RCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7Ozs7Ozs7SUFHTSxzQkFBc0IsQ0FBQyxHQUFHLElBQWM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFjO1FBQ3JDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLENBQUM7O0FBOUdILHdEQStHQzs7Ozs7O0FBTUQsTUFBYSxtQkFBb0IsU0FBUSxzQkFBc0I7O0FBQS9ELGtEQUFtRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tICcuLi9jZGsnO1xuaW1wb3J0IHsgQXV0b0Rpc2NvdmVyIH0gZnJvbSAnLi9hdXRvLWRpc2NvdmVyJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB9IGZyb20gJy4vbGFtYmRhLWZ1bmN0aW9uJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb25zdHJ1Y3RzVmVyc2lvbj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb25QaW5uaW5nPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjZGtEZXBlbmRlbmNpZXNBc0RlcHM/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrQXNzZXJ0PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrQXNzZXJ0aW9ucz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1Rlc3REZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtWZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzQXNEZXBzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrVmVyc2lvbiA9IG9wdGlvbnMuY2RrVmVyc2lvblBpbm5pbmcgPyBvcHRpb25zLmNka1ZlcnNpb24gOiBgXiR7b3B0aW9ucy5jZGtWZXJzaW9ufWA7XG4gICAgY29uc3QgY2RrTWFqb3JWZXJzaW9uID0gc2VtdmVyLm1pblZlcnNpb24oY2RrVmVyc2lvbik/Lm1ham9yID8/IDI7XG4gICAgc3VwZXIoe1xuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOiBjZGtNYWpvclZlcnNpb24gPT09IDEgPyB7XG4gICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNka1ZlcnNpb24gPSBjZGtWZXJzaW9uO1xuXG4gICAgdGhpcy5jZGtEZXBlbmRlbmNpZXNBc0RlcHMgPSBvcHRpb25zLmNka0RlcGVuZGVuY2llc0FzRGVwcyA/PyB0cnVlO1xuXG4gICAgc3dpdGNoIChjZGtNYWpvclZlcnNpb24pIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrQXNzZXJ0KSB7XG4gICAgICAgICAgdGhpcy5hZGREZXZEZXBzKHRoaXMuZm9ybWF0TW9kdWxlU3BlYygnQGF3cy1jZGsvYXNzZXJ0JykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNka0Fzc2VydGlvbnMgPz8gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuYWRkRGV2RGVwcyh0aGlzLmZvcm1hdE1vZHVsZVNwZWMoJ0Bhd3MtY2RrL2Fzc2VydGlvbnMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ0RLIDEueCBpcyBidWlsdCBvbiBjb25zdHJ1Y3RzIDMueFxuICAgICAgICBpZiAob3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbikge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdHNNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbihvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9uKT8ubWFqb3I7XG4gICAgICAgICAgaWYgKGNvbnN0cnVjdHNNYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiBjb25zdHJ1Y3RzTWFqb3JWZXJzaW9uID49IDEwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NESyAxLnggcmVxdWlyZXMgY29uc3RydWN0cyB2ZXJzaW9uIDwgMTAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRQZWVyRGVwcyhgY29uc3RydWN0c0BeJHtvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9ufWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWRkUGVlckRlcHMoJ2NvbnN0cnVjdHNAXjMuMi4yNycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkQ2RrRGVwZW5kZW5jaWVzKC4uLm9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzID8/IFtdKTtcbiAgICAgICAgdGhpcy5hZGRDZGtUZXN0RGVwZW5kZW5jaWVzKC4uLm9wdGlvbnMuY2RrVGVzdERlcGVuZGVuY2llcyA/PyBbXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBpZiAob3B0aW9ucy5jZGtBc3NlcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2RrQXNzZXJ0IGlzIG5vdCB1c2VkIGZvciBDREsgMi54LiBVc2UgdGhlIGFzc2VydGlvbnMgbGlicmFyeSB0aGF0IGlzIHByb3ZpZGVkIGluIGF3cy1jZGstbGliJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nka0RlcGVuZGVuY2llcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIFwicGVlckRlcHNcIiBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2RrRGVwZW5kZW5jaWVzQXNEZXBzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nka0RlcGVuZGVuY2llc0FzRGVwcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNka1Rlc3REZXBlbmRlbmNpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2RrVGVzdERlcGVuZGVuY2llcyBpcyBub3QgdXNlZCBmb3IgQ0RLIDIueC4gVXNlIFwiZGV2RGVwc1wiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDREsgMi54IGlzIGJ1aWx0IG9uIGNvbnN0cnVjdHMgMTAueFxuICAgICAgICBpZiAob3B0aW9ucy5jb25zdHJ1Y3RzVmVyc2lvbikge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdHNNYWpvclZlcnNpb24gPSBzZW12ZXIubWluVmVyc2lvbihvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9uKT8ubWFqb3I7XG4gICAgICAgICAgaWYgKGNvbnN0cnVjdHNNYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiBjb25zdHJ1Y3RzTWFqb3JWZXJzaW9uIDwgMTApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ0RLIDIueCByZXF1aXJlcyBjb25zdHJ1Y3RzIHZlcnNpb24gPj0gMTAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRQZWVyRGVwcyhgY29uc3RydWN0c0BeJHtvcHRpb25zLmNvbnN0cnVjdHNWZXJzaW9ufWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWRkUGVlckRlcHMoJ2NvbnN0cnVjdHNAXjEwLjAuNScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkUGVlckRlcHMoYGF3cy1jZGstbGliQCR7dGhpcy5jZGtWZXJzaW9ufWApO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBsZXQgdGhlIHVzZXIgbWFuYWdlIHdoaWNoIHZlcnNpb24gdGhleSB1c2VcbiAgICAgICAgdGhpcy5hZGRQZWVyRGVwcygnY29uc3RydWN0cycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cblxuICAgIGNvbnN0IGxhbWJkYUF1dG9EaXNjb3ZlciA9IG9wdGlvbnMubGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWU7XG4gICAgaWYgKGxhbWJkYUF1dG9EaXNjb3Zlcikge1xuICAgICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgIHRlc3RkaXI6IHRoaXMudGVzdGRpcixcbiAgICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgICB0c2NvbmZpZ1BhdGg6IHRoaXMudHNjb25maWdEZXYuZmlsZU5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRDZGtEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICAvLyB0aGlzIHVnbGluZXNzIHdpbGwgZ28gYXdheSBpbiBjZGsgdjIuMFxuICAgIHRoaXMuYWRkUGVlckRlcHMoLi4uZGVwcy5tYXAobSA9PiB0aGlzLmZvcm1hdE1vZHVsZVNwZWMobSkpKTtcblxuICAgIGlmICh0aGlzLmNka0RlcGVuZGVuY2llc0FzRGVwcykge1xuICAgICAgdGhpcy5hZGREZXBzKC4uLmRlcHMubWFwKG0gPT4gdGhpcy5mb3JtYXRNb2R1bGVTcGVjKG0pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRGV2RGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuICAgIH1cbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrVGVzdERlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyguLi5kZXBzLm1hcChtID0+IHRoaXMuZm9ybWF0TW9kdWxlU3BlYyhtKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNb2R1bGVTcGVjKG1vZHVsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bW9kdWxlfUAke3RoaXMuY2RrVmVyc2lvbn1gO1xuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RMaWJyYXJ5QXdzT3B0aW9ucyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHsgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdExpYnJhcnlBd3MgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IHsgfVxuIl19
@@ -46,7 +46,7 @@ class CdkConfig extends component_1.Component {
46
46
  }
47
47
  exports.CdkConfig = CdkConfig;
48
48
  _a = JSII_RTTI_SYMBOL_1;
49
- CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.42.0" };
49
+ CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.42.1" };
50
50
  /**
51
51
  * (experimental) Which approval is required when deploying CDK apps.
52
52
  *
@@ -46,5 +46,5 @@ class CdkTasks extends component_1.Component {
46
46
  }
47
47
  exports.CdkTasks = CdkTasks;
48
48
  _a = JSII_RTTI_SYMBOL_1;
49
- CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.42.0" };
49
+ CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.42.1" };
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRhc2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9jZGstdGFza3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQUt6QyxNQUFhLFFBQVMsU0FBUSxxQkFBUzs7OztJQWdCckMsWUFBWSxPQUFnQjs7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxXQUFXLEVBQUUsOERBQThEO1lBQzNFLElBQUksRUFBRSx1QkFBdUI7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN0QyxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELElBQUksRUFBRSxZQUFZO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDeEMsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxJQUFJLEVBQUUsYUFBYTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xDLFdBQVcsRUFBRSxvREFBb0Q7WUFDakUsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO1FBRUgsMkVBQTJFO1FBQzNFLE1BQU0sS0FBSyxTQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQ0FBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxXQUFXLEdBQUcscUZBQXFGLENBQUM7UUFFMUcsaUVBQWlFO1FBQ2pFLGtEQUFrRDtRQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFbkMsNEJBQTRCO1FBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7QUFyREgsNEJBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi9wcm9qZWN0JztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi90YXNrJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIENka1Rhc2tzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzeW50aDogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgZGVwbG95OiBUYXNrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgZGVzdHJveTogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRpZmY6IFRhc2s7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoOiBUYXNrO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuc3ludGggPSBwcm9qZWN0LmFkZFRhc2soJ3N5bnRoJywge1xuICAgICAgZGVzY3JpcHRpb246ICdTeW50aGVzaXplcyB5b3VyIGNkayBhcHAgaW50byBjZGsub3V0IChwYXJ0IG9mIFwieWFybiBidWlsZFwiKScsXG4gICAgICBleGVjOiAnY2RrIHN5bnRoID4gL2Rldi9udWxsJywgLy8gcmVkaXJlY3QgdG8gL2Rldi9udWxsIHRvIGhpZGUgdGVtcGxhdGVcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwbG95ID0gcHJvamVjdC5hZGRUYXNrKCdkZXBsb3knLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0RlcGxveXMgeW91ciBDREsgYXBwIHRvIHRoZSBBV1MgY2xvdWQnLFxuICAgICAgZXhlYzogJ2NkayBkZXBsb3knLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95ID0gcHJvamVjdC5hZGRUYXNrKCdkZXN0cm95Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdEZXN0cm95cyB5b3VyIGNkayBhcHAgaW4gdGhlIEFXUyBjbG91ZCcsXG4gICAgICBleGVjOiAnY2RrIGRlc3Ryb3knLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kaWZmID0gcHJvamVjdC5hZGRUYXNrKCdkaWZmJywge1xuICAgICAgZGVzY3JpcHRpb246ICdEaWZmcyB0aGUgY3VycmVudGx5IGRlcGxveWVkIGFwcCBhZ2FpbnN0IHlvdXIgY29kZScsXG4gICAgICBleGVjOiAnY2RrIGRpZmYnLFxuICAgIH0pO1xuXG4gICAgLy8gdHlwZXNjcmlwdCBwcm9qZWN0cyBhbHJlYWR5IGhhdmUgYSBcIndhdGNoXCIgdGFzaywgd2Ugd2Ugd2lsbCByZXB1cnBvc2UgaXRcbiAgICBjb25zdCB3YXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZCgnd2F0Y2gnKSA/PyBwcm9qZWN0LmFkZFRhc2soJ3dhdGNoJyk7XG5cbiAgICB3YXRjaC5yZXNldCgpO1xuICAgIHdhdGNoLmRlc2NyaXB0aW9uID0gJ1dhdGNoZXMgY2hhbmdlcyBpbiB5b3VyIHNvdXJjZSBjb2RlIGFuZCByZWJ1aWxkcyBhbmQgZGVwbG95cyB0byB0aGUgY3VycmVudCBhY2NvdW50JztcblxuICAgIC8vIGRlcGxveSBmaXJzdCBiZWNhdXNlIHN1cnByaXNpbmdseSB3YXRjaCBpcyBub3QgZGVwbG95aW5nIGZpcnN0XG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTc3NzZcbiAgICB3YXRjaC5leGVjKCdjZGsgZGVwbG95IC0taG90c3dhcCcpO1xuXG4gICAgLy8gbm93IHdlIGFyZSByZWFkeSB0byB3YXRjaFxuICAgIHdhdGNoLmV4ZWMoJ2NkayB3YXRjaCcpO1xuXG4gICAgdGhpcy53YXRjaCA9IHdhdGNoO1xuICB9XG59Il19