projen 0.52.67 → 0.52.70

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 (126) hide show
  1. package/.jsii +466 -53
  2. package/changelog.md +1 -1
  3. package/docs/api/API.md +131 -5
  4. package/docs/awscdk.md +136 -0
  5. package/lib/awscdk/auto-discover.d.ts +29 -2
  6. package/lib/awscdk/auto-discover.js +41 -10
  7. package/lib/awscdk/awscdk-app-java.js +1 -1
  8. package/lib/awscdk/awscdk-app-py.js +1 -1
  9. package/lib/awscdk/awscdk-app-ts.d.ts +8 -0
  10. package/lib/awscdk/awscdk-app-ts.js +5 -4
  11. package/lib/awscdk/awscdk-construct.d.ts +8 -0
  12. package/lib/awscdk/awscdk-construct.js +6 -5
  13. package/lib/awscdk/awscdk-deps-java.js +1 -1
  14. package/lib/awscdk/awscdk-deps-js.js +1 -1
  15. package/lib/awscdk/awscdk-deps.js +1 -1
  16. package/lib/awscdk/cdk-config.js +1 -1
  17. package/lib/awscdk/cdk-tasks.js +1 -1
  18. package/lib/awscdk/index.d.ts +1 -0
  19. package/lib/awscdk/index.js +2 -1
  20. package/lib/awscdk/integration-test.js +1 -1
  21. package/lib/awscdk/internal.d.ts +8 -0
  22. package/lib/awscdk/internal.js +14 -2
  23. package/lib/awscdk/lambda-extension.d.ts +68 -0
  24. package/lib/awscdk/lambda-extension.js +123 -0
  25. package/lib/awscdk/lambda-function.js +6 -12
  26. package/lib/build/build-workflow.js +1 -1
  27. package/lib/cdk/auto-discover-base.js +2 -2
  28. package/lib/cdk/construct-lib.js +1 -1
  29. package/lib/cdk/integration-test-base.js +1 -1
  30. package/lib/cdk/jsii-docgen.js +1 -1
  31. package/lib/cdk/jsii-project.js +1 -1
  32. package/lib/cdk8s/auto-discover.js +2 -2
  33. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  34. package/lib/cdk8s/cdk8s-construct.js +1 -1
  35. package/lib/cdk8s/integration-test.js +1 -1
  36. package/lib/cdktf/cdktf-construct.js +1 -1
  37. package/lib/component.js +1 -1
  38. package/lib/dependencies.js +1 -1
  39. package/lib/dev-env.js +1 -1
  40. package/lib/docker-compose.js +2 -2
  41. package/lib/file.js +1 -1
  42. package/lib/gitattributes.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +1 -1
  45. package/lib/github/dependabot.js +1 -1
  46. package/lib/github/github-project.js +1 -1
  47. package/lib/github/github.js +1 -1
  48. package/lib/github/mergify.js +1 -1
  49. package/lib/github/pr-template.js +1 -1
  50. package/lib/github/pull-request-lint.js +1 -1
  51. package/lib/github/stale.js +1 -1
  52. package/lib/github/task-workflow.js +1 -1
  53. package/lib/github/workflows.js +1 -1
  54. package/lib/gitlab/configuration.js +1 -1
  55. package/lib/gitlab/gitlab-configuration.js +1 -1
  56. package/lib/gitlab/nested-configuration.js +1 -1
  57. package/lib/gitpod.js +1 -1
  58. package/lib/ignore-file.js +1 -1
  59. package/lib/ini.js +1 -1
  60. package/lib/java/java-project.js +1 -1
  61. package/lib/java/junit.js +1 -1
  62. package/lib/java/maven-compile.js +1 -1
  63. package/lib/java/maven-packaging.js +1 -1
  64. package/lib/java/maven-sample.js +1 -1
  65. package/lib/java/pom.js +1 -1
  66. package/lib/java/projenrc.js +1 -1
  67. package/lib/javascript/bundler.d.ts +14 -0
  68. package/lib/javascript/bundler.js +12 -7
  69. package/lib/javascript/eslint.js +1 -1
  70. package/lib/javascript/jest.js +1 -1
  71. package/lib/javascript/node-package.js +1 -1
  72. package/lib/javascript/node-project.js +1 -1
  73. package/lib/javascript/npm-config.js +1 -1
  74. package/lib/javascript/prettier.js +1 -1
  75. package/lib/javascript/projenrc.js +1 -1
  76. package/lib/javascript/typescript-config.js +1 -1
  77. package/lib/javascript/upgrade-dependencies.js +2 -2
  78. package/lib/json.js +1 -1
  79. package/lib/license.js +1 -1
  80. package/lib/logger.js +1 -1
  81. package/lib/makefile.js +1 -1
  82. package/lib/object-file.js +1 -1
  83. package/lib/project-build.js +1 -1
  84. package/lib/project.js +1 -1
  85. package/lib/projects.js +1 -1
  86. package/lib/projenrc-json.js +1 -1
  87. package/lib/python/pip.js +1 -1
  88. package/lib/python/poetry.js +2 -2
  89. package/lib/python/projenrc.js +1 -1
  90. package/lib/python/pytest-sample.js +1 -1
  91. package/lib/python/pytest.js +1 -1
  92. package/lib/python/python-project.js +1 -1
  93. package/lib/python/python-sample.js +1 -1
  94. package/lib/python/requirements-file.js +1 -1
  95. package/lib/python/setuppy.js +1 -1
  96. package/lib/python/setuptools.js +1 -1
  97. package/lib/python/venv.js +1 -1
  98. package/lib/readme.js +1 -1
  99. package/lib/release/publisher.js +1 -1
  100. package/lib/release/release-trigger.js +1 -1
  101. package/lib/release/release.js +1 -1
  102. package/lib/sample-file.js +2 -2
  103. package/lib/semver.js +1 -1
  104. package/lib/source-code.js +1 -1
  105. package/lib/task-runtime.js +1 -1
  106. package/lib/task.js +1 -1
  107. package/lib/tasks.js +1 -1
  108. package/lib/testing.js +1 -1
  109. package/lib/textfile.js +1 -1
  110. package/lib/toml.js +1 -1
  111. package/lib/typescript/projenrc.js +1 -1
  112. package/lib/typescript/typescript-typedoc.js +1 -1
  113. package/lib/typescript/typescript.js +3 -3
  114. package/lib/version.js +1 -1
  115. package/lib/vscode/devcontainer.js +1 -1
  116. package/lib/vscode/launch-config.js +1 -1
  117. package/lib/vscode/vscode.js +1 -1
  118. package/lib/web/next.js +3 -3
  119. package/lib/web/postcss.js +1 -1
  120. package/lib/web/react.js +4 -4
  121. package/lib/web/tailwind.js +1 -1
  122. package/lib/xmlfile.js +1 -1
  123. package/lib/yaml.js +1 -1
  124. package/package.json +1 -1
  125. package/releasetag.txt +1 -1
  126. package/version.txt +1 -1
@@ -19,6 +19,14 @@ export interface AwsCdkTypeScriptAppOptions extends TypeScriptProjectOptions, Cd
19
19
  * @default true
20
20
  */
21
21
  readonly lambdaAutoDiscover?: boolean;
22
+ /**
23
+ * Automatically adds an `awscdk.LambdaExtension` for each `.lambda-extension.ts`
24
+ * entrypoint in your source tree. If this is disabled, you can manually add an
25
+ * `awscdk.AutoDiscover` component to your project
26
+ *
27
+ * @default true
28
+ */
29
+ readonly lambdaExtensionAutoDiscover?: boolean;
22
30
  /**
23
31
  * Automatically discovers and creates integration tests for each `.integ.ts`
24
32
  * file in under your test directory.
@@ -19,7 +19,7 @@ const cdk_tasks_1 = require("./cdk-tasks");
19
19
  */
20
20
  class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
21
21
  constructor(options) {
22
- var _b, _c, _d, _e, _f, _g, _h;
22
+ var _b, _c, _d, _e, _f, _g, _h, _j;
23
23
  super({
24
24
  ...options,
25
25
  sampleCode: false,
@@ -80,7 +80,8 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
80
80
  tsconfigPath: this.tsconfigDev.fileName,
81
81
  cdkDeps: this.cdkDeps,
82
82
  lambdaAutoDiscover: (_g = options.lambdaAutoDiscover) !== null && _g !== void 0 ? _g : true,
83
- integrationTestAutoDiscover: (_h = options.integrationTestAutoDiscover) !== null && _h !== void 0 ? _h : true,
83
+ lambdaExtensionAutoDiscover: (_h = options.lambdaExtensionAutoDiscover) !== null && _h !== void 0 ? _h : true,
84
+ integrationTestAutoDiscover: (_j = options.integrationTestAutoDiscover) !== null && _j !== void 0 ? _j : true,
84
85
  });
85
86
  }
86
87
  /**
@@ -99,7 +100,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
99
100
  }
100
101
  exports.AwsCdkTypeScriptApp = AwsCdkTypeScriptApp;
101
102
  _a = JSII_RTTI_SYMBOL_1;
102
- AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.52.67" };
103
+ AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.52.70" };
103
104
  class SampleCode extends component_1.Component {
104
105
  constructor(project, cdkMajorVersion) {
105
106
  super(project);
@@ -174,4 +175,4 @@ test('Snapshot', () => {
174
175
  fs.writeFileSync(path.join(testdir, `${appEntrypointName}.test.ts`), testCode);
175
176
  }
176
177
  }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsNENBQXlDO0FBQ3pDLGtEQUFpRDtBQUNqRCw4Q0FBK0U7QUFDL0UsbURBQStDO0FBRS9DLHFEQUFnRDtBQUNoRCw2Q0FBaUU7QUFDakUsMkNBQXVDO0FBd0N2Qzs7OztHQUlHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxpQ0FBb0I7SUF5QjNELFlBQVksT0FBbUM7O1FBQzdDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRTtnQkFDZCxHQUFHLE9BQU8sQ0FBQyxjQUFjO2dCQUV6Qix1RUFBdUU7Z0JBQ3ZFLHlEQUF5RDtnQkFDekQsZUFBZSxFQUFFLEtBQUs7YUFDdkI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksNkJBQVksQ0FBQyxJQUFJLEVBQUU7WUFDcEMsY0FBYyxFQUFFLDZCQUFjLENBQUMsT0FBTztZQUN0QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLFNBQVMsQ0FBQztRQUV4RCxNQUFNO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV0RCxpRUFBaUU7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEs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RSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDeEQ7WUFDQSxPQUFPO1NBQ1I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsV0FBVyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3pELFdBQVcsQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNyRTthQUFNO1lBQ0wsV0FBVyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3ZELFdBQVcsQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN4RTtRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQzdCLEtBQUssQ0FDTixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztrQ0FDWixpQkFBaUI7Ozs7Ozs7O0lBUS9DLENBQUM7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLEVBQ2xELFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgQXV0b0Rpc2NvdmVyIH0gZnJvbSBcIi4vYXV0by1kaXNjb3ZlclwiO1xuaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgQXdzQ2RrRGVwc0pzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHMtanNcIjtcbmltcG9ydCB7IENka0NvbmZpZywgQ2RrQ29uZmlnQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL2Nkay1jb25maWdcIjtcbmltcG9ydCB7IENka1Rhc2tzIH0gZnJvbSBcIi4vY2RrLXRhc2tzXCI7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9sYW1iZGEtZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtUeXBlU2NyaXB0QXBwT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgICBDZGtDb25maWdDb21tb25PcHRpb25zLFxuICAgIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwJ3MgZW50cnlwb2ludCAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdoaWNoIGlzXG4gICAqIFwic3JjXCIgYnkgZGVmYXVsdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpbi50c1wiXG4gICAqL1xuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5MYW1iZGFGdW5jdGlvbmAgZm9yIGVhY2ggYC5sYW1iZGEudHNgIGhhbmRsZXJcbiAgICogaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW5cbiAgICogYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZGlzY292ZXJzIGFuZCBjcmVhdGVzIGludGVncmF0aW9uIHRlc3RzIGZvciBlYWNoIGAuaW50ZWcudHNgXG4gICAqIGZpbGUgaW4gdW5kZXIgeW91ciB0ZXN0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbi8qKlxuICogQVdTIENESyBhcHAgaW4gVHlwZVNjcmlwdFxuICpcbiAqIEBwamlkIGF3c2Nkay1hcHAtdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka1R5cGVTY3JpcHRBcHAgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQ0RLIHZlcnNpb24gdGhpcyBhcHAgaXMgdXNpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNka1ZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwIGVudHJ5cG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhcHBFbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbW1vbiBDREsgdGFza3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFza3M6IENka1Rhc2tzO1xuXG4gIC8qKlxuICAgKiBjZGsuanNvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka0NvbmZpZzogQ2RrQ29uZmlnO1xuXG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgYnVuZGxlck9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVyT3B0aW9ucyxcblxuICAgICAgICAvLyB3ZSBpbnZva2UgdGhlIFwiYnVuZGxlXCIgdGFzayBhcyBwYXJ0IG9mIHRoZSBidWlsZCBzdGVwIGluIGNkay5qc29uIHNvXG4gICAgICAgIC8vIHdlIGRvbid0IHdhbnQgaXQgdG8gYmUgYWRkZWQgdG8gdGhlIHByZS1jb21waWxlIHBoYXNlLlxuICAgICAgICBhZGRUb1ByZUNvbXBpbGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2RrRGVwcyA9IG5ldyBBd3NDZGtEZXBzSnModGhpcywge1xuICAgICAgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlLlJVTlRJTUUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuYXBwRW50cnlwb2ludCA9IG9wdGlvbnMuYXBwRW50cnlwb2ludCA/PyBcIm1haW4udHNcIjtcblxuICAgIC8vIENMSVxuICAgIHRoaXMuYWRkRGV2RGVwcyhgYXdzLWNka0Ake3RoaXMuY2RrRGVwcy5jZGtWZXJzaW9ufWApO1xuXG4gICAgLy8gbm8gY29tcGlsZSBzdGVwIGJlY2F1c2Ugd2UgZG8gYWxsIG9mIGl0IGluIHR5cGVzY3JpcHQgZGlyZWN0bHlcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNka1Rhc2tzID0gbmV3IENka1Rhc2tzKHRoaXMpO1xuXG4gICAgLy8gYWRkIHN5bnRoIHRvIHRoZSBidWlsZFxuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHRoaXMuY2RrVGFza3Muc3ludGhTaWxlbnQpO1xuXG4gICAgY29uc3QgdHNDb25maWdGaWxlID0gdGhpcy50c2NvbmZpZz8uZmlsZU5hbWU7XG4gICAgaWYgKCF0c0NvbmZpZ0ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGluZyB0c2NvbmZpZy5qc29uXCIpO1xuICAgIH1cblxuICAgIHRoaXMuY2RrQ29uZmlnID0gbmV3IENka0NvbmZpZyh0aGlzLCB7XG4gICAgICBhcHA6IGBucHggdHMtbm9kZSAtUCAke3RzQ29uZmlnRmlsZX0gLS1wcmVmZXItdHMtZXh0cyAke3BhdGgucG9zaXguam9pbihcbiAgICAgICAgdGhpcy5zcmNkaXIsXG4gICAgICAgIHRoaXMuYXBwRW50cnlwb2ludFxuICAgICAgKX1gLFxuICAgICAgZmVhdHVyZUZsYWdzOiB0aGlzLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9uIDwgMixcbiAgICAgIGJ1aWxkQ29tbWFuZDogdGhpcy5ydW5UYXNrQ29tbWFuZCh0aGlzLmJ1bmRsZXIuYnVuZGxlVGFzayksXG4gICAgICB3YXRjaEluY2x1ZGVzOiBbYCR7dGhpcy5zcmNkaXJ9LyoqLyoudHNgLCBgJHt0aGlzLnRlc3RkaXJ9LyoqLyoudHNgXSxcbiAgICAgIHdhdGNoRXhjbHVkZXM6IFtcbiAgICAgICAgXCJSRUFETUUubWRcIixcbiAgICAgICAgXCJjZGsqLmpzb25cIixcbiAgICAgICAgXCIqKi8qLmQudHNcIixcbiAgICAgICAgXCIqKi8qLmpzXCIsXG4gICAgICAgIFwidHNjb25maWcuanNvblwiLFxuICAgICAgICBcInBhY2thZ2UqLmpzb25cIixcbiAgICAgICAgXCJ5YXJuLmxvY2tcIixcbiAgICAgICAgXCJub2RlX21vZHVsZXNcIixcbiAgICAgIF0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShcIi5wYXJjZWwtY2FjaGUvXCIpO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYCR7dGhpcy5jZGtDb25maWcuY2Rrb3V0fS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi5jZGsuc3RhZ2luZy9cIik7XG5cbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5leGNsdWRlLnB1c2godGhpcy5jZGtDb25maWcuY2Rrb3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERldkRlcHMoXCJ0cy1ub2RlQF45XCIpO1xuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFNhbXBsZUNvZGUodGhpcywgdGhpcy5jZGtEZXBzLmNka01ham9yVmVyc2lvbik7XG4gICAgfVxuXG4gICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgdGVzdGRpcjogdGhpcy50ZXN0ZGlyLFxuICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgY2RrRGVwczogdGhpcy5jZGtEZXBzLFxuICAgICAgbGFtYmRhQXV0b0Rpc2NvdmVyOiBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgICAgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyOiBvcHRpb25zLmludGVncmF0aW9uVGVzdEF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gQVdTIENESyBtb2R1bGUgZGVwZW5kZW5jaWVzXG4gICAqIEBwYXJhbSBtb2R1bGVzIFRoZSBsaXN0IG9mIG1vZHVsZXMgdG8gZGVwZW5kIG9uXG4gICAqL1xuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jeSguLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLmNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoLi4ubW9kdWxlcyk7XG4gIH1cbn1cblxuY2xhc3MgU2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwUHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXJcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5hcHBQcm9qZWN0ID0gcHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKCkge1xuICAgIGNvbnN0IG91dGRpciA9IHRoaXMucHJvamVjdC5vdXRkaXI7XG4gICAgY29uc3Qgc3JjZGlyID0gcGF0aC5qb2luKG91dGRpciwgdGhpcy5hcHBQcm9qZWN0LnNyY2Rpcik7XG4gICAgaWYgKFxuICAgICAgZnMucGF0aEV4aXN0c1N5bmMoc3JjZGlyKSAmJlxuICAgICAgZnMucmVhZGRpclN5bmMoc3JjZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoXCIudHNcIikpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjSW1wb3J0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHRoaXMuY2RrTWFqb3JWZXJzaW9uIDwgMikge1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKFxuICAgICAgICBcImltcG9ydCB7IEFwcCwgQ29uc3RydWN0LCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBBcHAsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICAgIHNyY0ltcG9ydHMucHVzaChcImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcmNDb2RlID0gYCR7c3JjSW1wb3J0cy5qb2luKFwiXFxuXCIpfVxuXG5leHBvcnQgY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWNrUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8gZGVmaW5lIHJlc291cmNlcyBoZXJlLi4uXG4gIH1cbn1cblxuLy8gZm9yIGRldmVsb3BtZW50LCB1c2UgYWNjb3VudC9yZWdpb24gZnJvbSBjZGsgY2xpXG5jb25zdCBkZXZFbnYgPSB7XG4gIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OLFxufTtcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuXG5uZXcgTXlTdGFjayhhcHAsICdteS1zdGFjay1kZXYnLCB7IGVudjogZGV2RW52IH0pO1xuLy8gbmV3IE15U3RhY2soYXBwLCAnbXktc3RhY2stcHJvZCcsIHsgZW52OiBwcm9kRW52IH0pO1xuXG5hcHAuc3ludGgoKTtgO1xuXG4gICAgZnMubWtkaXJwU3luYyhzcmNkaXIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHNyY2RpciwgdGhpcy5hcHBQcm9qZWN0LmFwcEVudHJ5cG9pbnQpLCBzcmNDb2RlKTtcblxuICAgIGNvbnN0IHRlc3RkaXIgPSBwYXRoLmpvaW4ob3V0ZGlyLCB0aGlzLmFwcFByb2plY3QudGVzdGRpcik7XG4gICAgaWYgKFxuICAgICAgZnMucGF0aEV4aXN0c1N5bmModGVzdGRpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHRlc3RkaXIpLmZpbHRlcigoeCkgPT4geC5lbmRzV2l0aChcIi50c1wiKSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXN0SW1wb3J0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHRoaXMuY2RrTWFqb3JWZXJzaW9uIDwgMikge1xuICAgICAgdGVzdEltcG9ydHMucHVzaChcImltcG9ydCB7IEFwcCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0Bhd3MtY2RrL2Fzc2VydGlvbnMnO1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVzdEltcG9ydHMucHVzaChcImltcG9ydCB7IEFwcCB9IGZyb20gJ2F3cy1jZGstbGliJztcIik7XG4gICAgICB0ZXN0SW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcIik7XG4gICAgfVxuXG4gICAgY29uc3QgYXBwRW50cnlwb2ludE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgdGhpcy5hcHBQcm9qZWN0LmFwcEVudHJ5cG9pbnQsXG4gICAgICBcIi50c1wiXG4gICAgKTtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGAke3Rlc3RJbXBvcnRzLmpvaW4oXCJcXG5cIil9XG5pbXBvcnQgeyBNeVN0YWNrIH0gZnJvbSAnLi4vc3JjLyR7YXBwRW50cnlwb2ludE5hbWV9JztcblxudGVzdCgnU25hcHNob3QnLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgTXlTdGFjayhhcHAsICd0ZXN0Jyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBleHBlY3QodGVtcGxhdGUudG9KU09OKCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSk7YDtcblxuICAgIGZzLm1rZGlycFN5bmModGVzdGRpcik7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbih0ZXN0ZGlyLCBgJHthcHBFbnRyeXBvaW50TmFtZX0udGVzdC50c2ApLFxuICAgICAgdGVzdENvZGVcbiAgICApO1xuICB9XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC10cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWFwcC10cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsNENBQXlDO0FBQ3pDLGtEQUFpRDtBQUNqRCw4Q0FBK0U7QUFDL0UsbURBQStDO0FBRS9DLHFEQUFnRDtBQUNoRCw2Q0FBaUU7QUFDakUsMkNBQXVDO0FBaUR2Qzs7OztHQUlHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxpQ0FBb0I7SUF5QjNELFlBQVksT0FBbUM7O1FBQzdDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRTtnQkFDZCxHQUFHLE9BQU8sQ0FBQyxjQUFjO2dCQUV6Qix1RUFBdUU7Z0JBQ3ZFLHlEQUF5RDtnQkFDekQsZUFBZSxFQUFFLEtBQUs7YUFDdkI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksNkJBQVksQ0FBQyxJQUFJLEVBQUU7WUFDcEMsY0FBYyxFQUFFLDZCQUFjLENBQUMsT0FBTztZQUN0QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLFNBQVMsQ0FBQztRQUV4RCxNQUFNO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV0RCxpRUFBaUU7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEs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RCxJQUNFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3hEO1lBQ0EsT0FBTztTQUNSO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUN4QyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN6RCxXQUFXLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDckU7YUFBTTtZQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN2RCxXQUFXLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDeEU7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixLQUFLLENBQ04sQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7a0NBQ1osaUJBQWlCOzs7Ozs7OztJQVEvQyxDQUFDO1FBRUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixFQUFFLENBQUMsYUFBYSxDQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLFVBQVUsQ0FBQyxFQUNsRCxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0QXBwUHJvamVjdCwgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IEF1dG9EaXNjb3ZlciB9IGZyb20gXCIuL2F1dG8tZGlzY292ZXJcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHNKcyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzLWpzXCI7XG5pbXBvcnQgeyBDZGtDb25maWcsIENka0NvbmZpZ0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5pbXBvcnQgeyBDZGtUYXNrcyB9IGZyb20gXCIuL2Nkay10YXNrc1wiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnNcbiAgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG4gICAgQ2RrQ29uZmlnQ29tbW9uT3B0aW9ucyxcbiAgICBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgQ0RLIGFwcCdzIGVudHJ5cG9pbnQgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCB3aGljaCBpc1xuICAgKiBcInNyY1wiIGJ5IGRlZmF1bHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW4udHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwRW50cnlwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRnVuY3Rpb25gIGZvciBlYWNoIGAubGFtYmRhLnRzYCBoYW5kbGVyXG4gICAqIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5MYW1iZGFFeHRlbnNpb25gIGZvciBlYWNoIGAubGFtYmRhLWV4dGVuc2lvbi50c2BcbiAgICogZW50cnlwb2ludCBpbiB5b3VyIHNvdXJjZSB0cmVlLiBJZiB0aGlzIGlzIGRpc2FibGVkLCB5b3UgY2FuIG1hbnVhbGx5IGFkZCBhblxuICAgKiBgYXdzY2RrLkF1dG9EaXNjb3ZlcmAgY29tcG9uZW50IHRvIHlvdXIgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGRpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgZWFjaCBgLmludGVnLnRzYFxuICAgKiBmaWxlIGluIHVuZGVyIHlvdXIgdGVzdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbW1vbiBvcHRpb25zIGZvciBhbGwgQVdTIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xufVxuXG4vKipcbiAqIEFXUyBDREsgYXBwIGluIFR5cGVTY3JpcHRcbiAqXG4gKiBAcGppZCBhd3NjZGstYXBwLXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NDZGtUeXBlU2NyaXB0QXBwIGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAvKipcbiAgICogVGhlIENESyB2ZXJzaW9uIHRoaXMgYXBwIGlzIHVzaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBjZGtWZXJzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNka0RlcHMuY2RrVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQ0RLIGFwcCBlbnRyeXBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwRW50cnlwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb21tb24gQ0RLIHRhc2tzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNka1Rhc2tzOiBDZGtUYXNrcztcblxuICAvKipcbiAgICogY2RrLmpzb24gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjZGtDb25maWc6IENka0NvbmZpZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGJ1bmRsZXJPcHRpb25zOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuYnVuZGxlck9wdGlvbnMsXG5cbiAgICAgICAgLy8gd2UgaW52b2tlIHRoZSBcImJ1bmRsZVwiIHRhc2sgYXMgcGFydCBvZiB0aGUgYnVpbGQgc3RlcCBpbiBjZGsuanNvbiBzb1xuICAgICAgICAvLyB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIGFkZGVkIHRvIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICAgICAgYWRkVG9QcmVDb21waWxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNka0RlcHMgPSBuZXcgQXdzQ2RrRGVwc0pzKHRoaXMsIHtcbiAgICAgIGRlcGVuZGVuY3lUeXBlOiBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgICB0aGlzLmFwcEVudHJ5cG9pbnQgPSBvcHRpb25zLmFwcEVudHJ5cG9pbnQgPz8gXCJtYWluLnRzXCI7XG5cbiAgICAvLyBDTElcbiAgICB0aGlzLmFkZERldkRlcHMoYGF3cy1jZGtAJHt0aGlzLmNka0RlcHMuY2RrVmVyc2lvbn1gKTtcblxuICAgIC8vIG5vIGNvbXBpbGUgc3RlcCBiZWNhdXNlIHdlIGRvIGFsbCBvZiBpdCBpbiB0eXBlc2NyaXB0IGRpcmVjdGx5XG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcblxuICAgIC8vIGFkZCBzeW50aCB0byB0aGUgYnVpbGRcbiAgICB0aGlzLnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoU2lsZW50KTtcblxuICAgIGNvbnN0IHRzQ29uZmlnRmlsZSA9IHRoaXMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIGlmICghdHNDb25maWdGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgdHNjb25maWcuanNvblwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNka0NvbmZpZyA9IG5ldyBDZGtDb25maWcodGhpcywge1xuICAgICAgYXBwOiBgbnB4IHRzLW5vZGUgLVAgJHt0c0NvbmZpZ0ZpbGV9IC0tcHJlZmVyLXRzLWV4dHMgJHtwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgIHRoaXMuc3JjZGlyLFxuICAgICAgICB0aGlzLmFwcEVudHJ5cG9pbnRcbiAgICAgICl9YCxcbiAgICAgIGZlYXR1cmVGbGFnczogdGhpcy5jZGtEZXBzLmNka01ham9yVmVyc2lvbiA8IDIsXG4gICAgICBidWlsZENvbW1hbmQ6IHRoaXMucnVuVGFza0NvbW1hbmQodGhpcy5idW5kbGVyLmJ1bmRsZVRhc2spLFxuICAgICAgd2F0Y2hJbmNsdWRlczogW2Ake3RoaXMuc3JjZGlyfS8qKi8qLnRzYCwgYCR7dGhpcy50ZXN0ZGlyfS8qKi8qLnRzYF0sXG4gICAgICB3YXRjaEV4Y2x1ZGVzOiBbXG4gICAgICAgIFwiUkVBRE1FLm1kXCIsXG4gICAgICAgIFwiY2RrKi5qc29uXCIsXG4gICAgICAgIFwiKiovKi5kLnRzXCIsXG4gICAgICAgIFwiKiovKi5qc1wiLFxuICAgICAgICBcInRzY29uZmlnLmpzb25cIixcbiAgICAgICAgXCJwYWNrYWdlKi5qc29uXCIsXG4gICAgICAgIFwieWFybi5sb2NrXCIsXG4gICAgICAgIFwibm9kZV9tb2R1bGVzXCIsXG4gICAgICBdLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIucGFyY2VsLWNhY2hlL1wiKTtcblxuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAke3RoaXMuY2RrQ29uZmlnLmNka291dH0vYCk7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIuY2RrLnN0YWdpbmcvXCIpO1xuXG4gICAgaWYgKHRoaXMudHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcuZXhjbHVkZS5wdXNoKHRoaXMuY2RrQ29uZmlnLmNka291dCk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGREZXZEZXBzKFwidHMtbm9kZUBeOVwiKTtcbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBTYW1wbGVDb2RlKHRoaXMsIHRoaXMuY2RrRGVwcy5jZGtNYWpvclZlcnNpb24pO1xuICAgIH1cblxuICAgIG5ldyBBdXRvRGlzY292ZXIodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIHRlc3RkaXI6IHRoaXMudGVzdGRpcixcbiAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIHRzY29uZmlnUGF0aDogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgIGNka0RlcHM6IHRoaXMuY2RrRGVwcyxcbiAgICAgIGxhbWJkYUF1dG9EaXNjb3Zlcjogb3B0aW9ucy5sYW1iZGFBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcjogb3B0aW9ucy5sYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcjogb3B0aW9ucy5pbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIEFXUyBDREsgbW9kdWxlIGRlcGVuZGVuY2llc1xuICAgKiBAcGFyYW0gbW9kdWxlcyBUaGUgbGlzdCBvZiBtb2R1bGVzIHRvIGRlcGVuZCBvblxuICAgKi9cbiAgcHVibGljIGFkZENka0RlcGVuZGVuY3koLi4ubW9kdWxlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKC4uLm1vZHVsZXMpO1xuICB9XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcFByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNka01ham9yVmVyc2lvbjogbnVtYmVyXG4gICkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuYXBwUHJvamVjdCA9IHByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZSgpIHtcbiAgICBjb25zdCBvdXRkaXIgPSB0aGlzLnByb2plY3Qub3V0ZGlyO1xuICAgIGNvbnN0IHNyY2RpciA9IHBhdGguam9pbihvdXRkaXIsIHRoaXMuYXBwUHJvamVjdC5zcmNkaXIpO1xuICAgIGlmIChcbiAgICAgIGZzLnBhdGhFeGlzdHNTeW5jKHNyY2RpcikgJiZcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHNyY2RpcikuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKFwiLnRzXCIpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0ltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHNyY0ltcG9ydHMucHVzaChcbiAgICAgICAgXCJpbXBvcnQgeyBBcHAsIENvbnN0cnVjdCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcIlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3JjSW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgQXBwLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcIik7XG4gICAgICBzcmNJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjQ29kZSA9IGAke3NyY0ltcG9ydHMuam9pbihcIlxcblwiKX1cblxuZXhwb3J0IGNsYXNzIE15U3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIGRlZmluZSByZXNvdXJjZXMgaGVyZS4uLlxuICB9XG59XG5cbi8vIGZvciBkZXZlbG9wbWVudCwgdXNlIGFjY291bnQvcmVnaW9uIGZyb20gY2RrIGNsaVxuY29uc3QgZGV2RW52ID0ge1xuICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbn07XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxubmV3IE15U3RhY2soYXBwLCAnbXktc3RhY2stZGV2JywgeyBlbnY6IGRldkVudiB9KTtcbi8vIG5ldyBNeVN0YWNrKGFwcCwgJ215LXN0YWNrLXByb2QnLCB7IGVudjogcHJvZEVudiB9KTtcblxuYXBwLnN5bnRoKCk7YDtcblxuICAgIGZzLm1rZGlycFN5bmMoc3JjZGlyKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihzcmNkaXIsIHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50KSwgc3JjQ29kZSk7XG5cbiAgICBjb25zdCB0ZXN0ZGlyID0gcGF0aC5qb2luKG91dGRpciwgdGhpcy5hcHBQcm9qZWN0LnRlc3RkaXIpO1xuICAgIGlmIChcbiAgICAgIGZzLnBhdGhFeGlzdHNTeW5jKHRlc3RkaXIpICYmXG4gICAgICBmcy5yZWFkZGlyU3luYyh0ZXN0ZGlyKS5maWx0ZXIoKHgpID0+IHguZW5kc1dpdGgoXCIudHNcIikpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVzdEltcG9ydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGlmICh0aGlzLmNka01ham9yVmVyc2lvbiA8IDIpIHtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBBcHAgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcIik7XG4gICAgICB0ZXN0SW1wb3J0cy5wdXNoKFwiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAYXdzLWNkay9hc3NlcnRpb25zJztcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlc3RJbXBvcnRzLnB1c2goXCJpbXBvcnQgeyBBcHAgfSBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgICAgdGVzdEltcG9ydHMucHVzaChcImltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcEVudHJ5cG9pbnROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgIHRoaXMuYXBwUHJvamVjdC5hcHBFbnRyeXBvaW50LFxuICAgICAgXCIudHNcIlxuICAgICk7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgJHt0ZXN0SW1wb3J0cy5qb2luKFwiXFxuXCIpfVxuaW1wb3J0IHsgTXlTdGFjayB9IGZyb20gJy4uL3NyYy8ke2FwcEVudHJ5cG9pbnROYW1lfSc7XG5cbnRlc3QoJ1NuYXBzaG90JywgKCkgPT4ge1xuICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG4gIGNvbnN0IHN0YWNrID0gbmV3IE15U3RhY2soYXBwLCAndGVzdCcpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgZXhwZWN0KHRlbXBsYXRlLnRvSlNPTigpKS50b01hdGNoU25hcHNob3QoKTtcbn0pO2A7XG5cbiAgICBmcy5ta2RpcnBTeW5jKHRlc3RkaXIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4odGVzdGRpciwgYCR7YXBwRW50cnlwb2ludE5hbWV9LnRlc3QudHNgKSxcbiAgICAgIHRlc3RDb2RlXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -14,6 +14,14 @@ export interface AwsCdkConstructLibraryOptions extends ConstructLibraryOptions,
14
14
  * @default true
15
15
  */
16
16
  readonly lambdaAutoDiscover?: boolean;
17
+ /**
18
+ * Automatically adds an `awscdk.LambdaExtension` for each `.lambda-extension.ts`
19
+ * entrypoint in your source tree. If this is disabled, you can manually add an
20
+ * `awscdk.AutoDiscover` component to your project
21
+ *
22
+ * @default true
23
+ */
24
+ readonly lambdaExtensionAutoDiscover?: boolean;
17
25
  /**
18
26
  * Automatically discovers and creates integration tests for each `.integ.ts`
19
27
  * file in under your test directory.
@@ -19,7 +19,7 @@ const awscdk_deps_js_1 = require("./awscdk-deps-js");
19
19
  */
20
20
  class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
21
21
  constructor(options) {
22
- var _c, _d, _e;
22
+ var _c, _d, _e, _f;
23
23
  const cdkMajorVersion = (_c = semver.parse(options.cdkVersion)) === null || _c === void 0 ? void 0 : _c.major;
24
24
  super({
25
25
  peerDependencyOptions: cdkMajorVersion === 1
@@ -42,7 +42,8 @@ class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
42
42
  tsconfigPath: this.tsconfigDev.fileName,
43
43
  cdkDeps: this.cdkDeps,
44
44
  lambdaAutoDiscover: (_d = options.lambdaAutoDiscover) !== null && _d !== void 0 ? _d : true,
45
- integrationTestAutoDiscover: (_e = options.integrationTestAutoDiscover) !== null && _e !== void 0 ? _e : true,
45
+ lambdaExtensionAutoDiscover: (_e = options.lambdaExtensionAutoDiscover) !== null && _e !== void 0 ? _e : true,
46
+ integrationTestAutoDiscover: (_f = options.integrationTestAutoDiscover) !== null && _f !== void 0 ? _f : true,
46
47
  });
47
48
  }
48
49
  /**
@@ -80,7 +81,7 @@ class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
80
81
  }
81
82
  exports.AwsCdkConstructLibrary = AwsCdkConstructLibrary;
82
83
  _a = JSII_RTTI_SYMBOL_1;
83
- AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.52.67" };
84
+ AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.52.70" };
84
85
  function determineWorkflowContainerImage(options, cdkMajorVersion) {
85
86
  // if the user specifies the workflow container image explicitly, use that
86
87
  if (options.workflowContainerImage) {
@@ -105,5 +106,5 @@ class ConstructLibraryAws extends AwsCdkConstructLibrary {
105
106
  }
106
107
  exports.ConstructLibraryAws = ConstructLibraryAws;
107
108
  _b = JSII_RTTI_SYMBOL_1;
108
- ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.52.67" };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyxnQ0FBbUU7QUFDbkUsa0RBQWlEO0FBQ2pELG1EQUErQztBQUUvQyxxREFBZ0Q7QUFtQ2hEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxzQkFBZ0I7SUFHMUQsWUFBWSxPQUFzQzs7UUFDaEQsTUFBTSxlQUFlLFNBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLDBDQUFFLEtBQUssQ0FBQztRQUVoRSxLQUFLLENBQUM7WUFDSixxQkFBcUIsRUFDbkIsZUFBZSxLQUFLLENBQUM7Z0JBQ25CLENBQUMsQ0FBQztvQkFDRSxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLHNCQUFzQixFQUFFLCtCQUErQixDQUNyRCxPQUFPLEVBQ1AsZUFBZSxDQUNoQjtZQUNELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw2QkFBWSxDQUFDLElBQUksRUFBRTtZQUNwQyxvRUFBb0U7WUFDcEUsY0FBYyxFQUFFLDZCQUFjLENBQUMsSUFBSTtZQUNuQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDdkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGtCQUFrQixRQUFFLE9BQU8sQ0FBQyxrQkFBa0IsbUNBQUksSUFBSTtZQUN0RCwyQkFBMkIsUUFBRSxPQUFPLENBQUMsMkJBQTJCLG1DQUFJLElBQUk7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGtCQUFrQixDQUFDLEdBQUcsSUFBYztRQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQkFBc0IsQ0FBQyxHQUFHLElBQWM7UUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUF2RUgsd0RBd0VDOzs7QUFFRCxTQUFTLCtCQUErQixDQUN0QyxPQUFzQyxFQUN0QyxlQUFtQztJQUVuQywwRUFBMEU7SUFDMUUsSUFBSSxPQUFPLENBQUMsc0JBQXNCLEVBQUU7UUFDbEMsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQUM7S0FDdkM7SUFFRCxpRkFBaUY7SUFDakYsK0VBQStFO0lBQy9FLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtRQUMxQixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELHdFQUF3RTtJQUN4RSxJQUFJLGVBQWUsS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTywrQkFBK0IsQ0FBQztLQUN4QztJQUVELElBQUksZUFBZSxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLHNDQUFzQyxDQUFDO0tBQy9DO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQU1ELCtDQUErQztBQUMvQyxNQUFhLG1CQUFvQixTQUFRLHNCQUFzQjs7QUFBL0Qsa0RBQWtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IENvbnN0cnVjdExpYnJhcnksIENvbnN0cnVjdExpYnJhcnlPcHRpb25zIH0gZnJvbSBcIi4uL2Nka1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBBdXRvRGlzY292ZXIgfSBmcm9tIFwiLi9hdXRvLWRpc2NvdmVyXCI7XG5pbXBvcnQgeyBBd3NDZGtEZXBzLCBBd3NDZGtEZXBzQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzXCI7XG5pbXBvcnQgeyBBd3NDZGtEZXBzSnMgfSBmcm9tIFwiLi9hd3NjZGstZGVwcy1qc1wiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEF3c0Nka0NvbnN0cnVjdExpYnJhcnlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zXG4gIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMsXG4gICAgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NfbGFtYmRhLkZ1bmN0aW9uYCBmb3IgZWFjaCBgLmxhbWJkYS50c2AgaGFuZGxlclxuICAgKiBpbiB5b3VyIHNvdXJjZSB0cmVlLiBJZiB0aGlzIGlzIGRpc2FibGVkLCB5b3UgZWl0aGVyIG5lZWQgdG8gZXhwbGljaXRseVxuICAgKiBjYWxsIGBhd3NfbGFtYmRhLkZ1bmN0aW9uLmF1dG9EaXNjb3ZlcigpYCBvciBkZWZpbmUgYSBgbmV3XG4gICAqIGF3c19sYW1iZGEuRnVuY3Rpb24oKWAgZm9yIGVhY2ggaGFuZGxlci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBkaXNjb3ZlcnMgYW5kIGNyZWF0ZXMgaW50ZWdyYXRpb24gdGVzdHMgZm9yIGVhY2ggYC5pbnRlZy50c2BcbiAgICogZmlsZSBpbiB1bmRlciB5b3VyIHRlc3QgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21tb24gb3B0aW9ucyBmb3IgYWxsIEFXUyBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBBV1MgQ0RLIGNvbnN0cnVjdCBsaWJyYXJ5IHByb2plY3RcbiAqXG4gKiBBIG11bHRpLWxhbmd1YWdlIChqc2lpKSBjb25zdHJ1Y3QgbGlicmFyeSB3aGljaCB2ZW5kcyBjb25zdHJ1Y3RzIGRlc2lnbmVkIHRvXG4gKiB1c2Ugd2l0aGluIHRoZSBBV1MgQ0RLIHdpdGggYSBmcmllbmRseSB3b3JrZmxvdyBhbmQgYXV0b21hdGljIHB1Ymxpc2hpbmcgdG9cbiAqIHRoZSBjb25zdHJ1Y3QgY2F0YWxvZy5cbiAqXG4gKiBAcGppZCBhd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrTWFqb3JWZXJzaW9uID0gc2VtdmVyLnBhcnNlKG9wdGlvbnMuY2RrVmVyc2lvbik/Lm1ham9yO1xuXG4gICAgc3VwZXIoe1xuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOlxuICAgICAgICBjZGtNYWpvclZlcnNpb24gPT09IDFcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcGlubmVkRGV2RGVwZW5kZW5jeTogZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlOiBkZXRlcm1pbmVXb3JrZmxvd0NvbnRhaW5lckltYWdlKFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjZGtNYWpvclZlcnNpb25cbiAgICAgICksXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jZGtEZXBzID0gbmV3IEF3c0Nka0RlcHNKcyh0aGlzLCB7XG4gICAgICAvLyBzaW5jZSB0aGlzIHdlIGFyZSBhIGxpYnJhcnksIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgYWRkZWQgYSBwZWVyc1xuICAgICAgZGVwZW5kZW5jeVR5cGU6IERlcGVuZGVuY3lUeXBlLlBFRVIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbmV3IEF1dG9EaXNjb3Zlcih0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgdGVzdGRpcjogdGhpcy50ZXN0ZGlyLFxuICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgdHNjb25maWdQYXRoOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgY2RrRGVwczogdGhpcy5jZGtEZXBzLFxuICAgICAgbGFtYmRhQXV0b0Rpc2NvdmVyOiBvcHRpb25zLmxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgICAgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyOiBvcHRpb25zLmludGVncmF0aW9uVGVzdEF1dG9EaXNjb3ZlciA/PyB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgQ0RLIHZlcnNpb24gZm9yIHRoaXMgbGlicmFyeS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2RrVmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmNka1ZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBjZGtWZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNka1ZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBkZXBlbmRlbmNpZXMgdG8gQVdTIENESyBtb2R1bGVzLlxuICAgKlxuICAgKiBTaW5jZSB0aGlzIGlzIGEgbGlicmFyeSBwcm9qZWN0LCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBhZGRlZCBhcyBwZWVyIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgbmFtZXMgb2YgY2RrIG1vZHVsZXMgKGUuZy4gYEBhd3MtY2RrL2F3cy1sYW1iZGFgKS5cbiAgICogQGRlcHJlY2F0ZWQgTm90IHN1cHBvcnRlZCBpbiB2Mi4gRm9yIHYxLCB1c2UgYHByb2plY3QuY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcygpYFxuICAgKi9cbiAgcHVibGljIGFkZENka0RlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLmNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoLi4uZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBV1MgQ0RLIG1vZHVsZXMgYXMgZGV2IGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgbmFtZXMgb2YgY2RrIG1vZHVsZXMgKGUuZy4gYEBhd3MtY2RrL2F3cy1sYW1iZGFgKS5cbiAgICogQGRlcHJlY2F0ZWQgTm90IHN1cHBvcnRlZCBpbiB2Mi4gRm9yIHYxLCB1c2UgYHByb2plY3QuY2RrRGVwcy5hZGRWMURldkRlcGVuZGVuY2llcygpYFxuICAgKi9cbiAgcHVibGljIGFkZENka1Rlc3REZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmFkZFYxRGV2RGVwZW5kZW5jaWVzKC4uLmRlcHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZVdvcmtmbG93Q29udGFpbmVySW1hZ2UoXG4gIG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zLFxuICBjZGtNYWpvclZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gaWYgdGhlIHVzZXIgc3BlY2lmaWVzIHRoZSB3b3JrZmxvdyBjb250YWluZXIgaW1hZ2UgZXhwbGljaXRseSwgdXNlIHRoYXRcbiAgaWYgKG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSkge1xuICAgIHJldHVybiBvcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2U7XG4gIH1cblxuICAvLyBpZiB0aGUgdXNlciBzcGVjaWZpZXMgbWluaW11bSBub2RlIHZlcnNpb24sIHRoZW4gSnNpaVByb2plY3Qgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgLy8gZGV0ZXJtaW5pbmcgdGhlIHdvcmtmbG93IGNvbnRhaW5lciBpbWFnZSBmcm9tIHRoYXQsIHNvIHdlIHJldHVybiBcInVuZGVmaW5lZFwiXG4gIGlmIChvcHRpb25zLm1pbk5vZGVWZXJzaW9uKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgY2hvb3NlIGEgd29ya2Zsb3cgY29udGFpbmVyIGltYWdlIGJhc2VkIG9uIHRoZSBDREsgdmVyc2lvblxuICBpZiAoY2RrTWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgcmV0dXJuIFwianNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW1cIjtcbiAgfVxuXG4gIGlmIChjZGtNYWpvclZlcnNpb24gPT09IDIpIHtcbiAgICByZXR1cm4gXCJqc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbS1ub2RlMTRcIjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zYCAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RMaWJyYXJ5QXdzT3B0aW9uc1xuICBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHt9XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYEF3c0Nka0NvbnN0cnVjdExpYnJhcnlgICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0TGlicmFyeUF3cyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnkge31cbiJdfQ==
109
+ ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.52.70" };
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyxnQ0FBbUU7QUFDbkUsa0RBQWlEO0FBQ2pELG1EQUErQztBQUUvQyxxREFBZ0Q7QUE0Q2hEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxzQkFBZ0I7SUFHMUQsWUFBWSxPQUFzQzs7UUFDaEQsTUFBTSxlQUFlLFNBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLDBDQUFFLEtBQUssQ0FBQztRQUVoRSxLQUFLLENBQUM7WUFDSixxQkFBcUIsRUFDbkIsZUFBZSxLQUFLLENBQUM7Z0JBQ25CLENBQUMsQ0FBQztvQkFDRSxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLHNCQUFzQixFQUFFLCtCQUErQixDQUNyRCxPQUFPLEVBQ1AsZUFBZSxDQUNoQjtZQUNELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw2QkFBWSxDQUFDLElBQUksRUFBRTtZQUNwQyxvRUFBb0U7WUFDcEUsY0FBYyxFQUFFLDZCQUFjLENBQUMsSUFBSTtZQUNuQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDdkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGtCQUFrQixRQUFFLE9BQU8sQ0FBQyxrQkFBa0IsbUNBQUksSUFBSTtZQUN0RCwyQkFBMkIsUUFBRSxPQUFPLENBQUMsMkJBQTJCLG1DQUFJLElBQUk7WUFDeEUsMkJBQTJCLFFBQUUsT0FBTyxDQUFDLDJCQUEyQixtQ0FBSSxJQUFJO1NBQ3pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxrQkFBa0IsQ0FBQyxHQUFHLElBQWM7UUFDekMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksc0JBQXNCLENBQUMsR0FBRyxJQUFjO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7O0FBeEVILHdEQXlFQzs7O0FBRUQsU0FBUywrQkFBK0IsQ0FDdEMsT0FBc0MsRUFDdEMsZUFBbUM7SUFFbkMsMEVBQTBFO0lBQzFFLElBQUksT0FBTyxDQUFDLHNCQUFzQixFQUFFO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixDQUFDO0tBQ3ZDO0lBRUQsaUZBQWlGO0lBQ2pGLCtFQUErRTtJQUMvRSxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUU7UUFDMUIsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sK0JBQStCLENBQUM7S0FDeEM7SUFFRCxJQUFJLGVBQWUsS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTyxzQ0FBc0MsQ0FBQztLQUMvQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFNRCwrQ0FBK0M7QUFDL0MsTUFBYSxtQkFBb0IsU0FBUSxzQkFBc0I7O0FBQS9ELGtEQUFrRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RMaWJyYXJ5LCBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgQXV0b0Rpc2NvdmVyIH0gZnJvbSBcIi4vYXV0by1kaXNjb3ZlclwiO1xuaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgQXdzQ2RrRGVwc0pzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHMtanNcIjtcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL2xhbWJkYS1mdW5jdGlvblwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9uc1xuICBleHRlbmRzIENvbnN0cnVjdExpYnJhcnlPcHRpb25zLFxuICAgIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzX2xhbWJkYS5GdW5jdGlvbmAgZm9yIGVhY2ggYC5sYW1iZGEudHNgIGhhbmRsZXJcbiAgICogaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGVpdGhlciBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICogY2FsbCBgYXdzX2xhbWJkYS5GdW5jdGlvbi5hdXRvRGlzY292ZXIoKWAgb3IgZGVmaW5lIGEgYG5ld1xuICAgKiBhd3NfbGFtYmRhLkZ1bmN0aW9uKClgIGZvciBlYWNoIGhhbmRsZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzY2RrLkxhbWJkYUV4dGVuc2lvbmAgZm9yIGVhY2ggYC5sYW1iZGEtZXh0ZW5zaW9uLnRzYFxuICAgKiBlbnRyeXBvaW50IGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuXG4gICAqIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZGlzY292ZXJzIGFuZCBjcmVhdGVzIGludGVncmF0aW9uIHRlc3RzIGZvciBlYWNoIGAuaW50ZWcudHNgXG4gICAqIGZpbGUgaW4gdW5kZXIgeW91ciB0ZXN0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbi8qKlxuICogQVdTIENESyBjb25zdHJ1Y3QgbGlicmFyeSBwcm9qZWN0XG4gKlxuICogQSBtdWx0aS1sYW5ndWFnZSAoanNpaSkgY29uc3RydWN0IGxpYnJhcnkgd2hpY2ggdmVuZHMgY29uc3RydWN0cyBkZXNpZ25lZCB0b1xuICogdXNlIHdpdGhpbiB0aGUgQVdTIENESyB3aXRoIGEgZnJpZW5kbHkgd29ya2Zsb3cgYW5kIGF1dG9tYXRpYyBwdWJsaXNoaW5nIHRvXG4gKiB0aGUgY29uc3RydWN0IGNhdGFsb2cuXG4gKlxuICogQHBqaWQgYXdzY2RrLWNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrQ29uc3RydWN0TGlicmFyeSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucykge1xuICAgIGNvbnN0IGNka01ham9yVmVyc2lvbiA9IHNlbXZlci5wYXJzZShvcHRpb25zLmNka1ZlcnNpb24pPy5tYWpvcjtcblxuICAgIHN1cGVyKHtcbiAgICAgIHBlZXJEZXBlbmRlbmN5T3B0aW9uczpcbiAgICAgICAgY2RrTWFqb3JWZXJzaW9uID09PSAxXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgd29ya2Zsb3dDb250YWluZXJJbWFnZTogZGV0ZXJtaW5lV29ya2Zsb3dDb250YWluZXJJbWFnZShcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgY2RrTWFqb3JWZXJzaW9uXG4gICAgICApLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuY2RrRGVwcyA9IG5ldyBBd3NDZGtEZXBzSnModGhpcywge1xuICAgICAgLy8gc2luY2UgdGhpcyB3ZSBhcmUgYSBsaWJyYXJ5LCBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGFkZGVkIGEgcGVlcnNcbiAgICAgIGRlcGVuZGVuY3lUeXBlOiBEZXBlbmRlbmN5VHlwZS5QRUVSLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIG5ldyBBdXRvRGlzY292ZXIodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIHRlc3RkaXI6IHRoaXMudGVzdGRpcixcbiAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIHRzY29uZmlnUGF0aDogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgIGNka0RlcHM6IHRoaXMuY2RrRGVwcyxcbiAgICAgIGxhbWJkYUF1dG9EaXNjb3Zlcjogb3B0aW9ucy5sYW1iZGFBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcjogb3B0aW9ucy5sYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcjogb3B0aW9ucy5pbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IENESyB2ZXJzaW9uIGZvciB0aGlzIGxpYnJhcnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNka1ZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgY2RrVmVyc2lvbmBcbiAgICovXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZGVwZW5kZW5jaWVzIHRvIEFXUyBDREsgbW9kdWxlcy5cbiAgICpcbiAgICogU2luY2UgdGhpcyBpcyBhIGxpYnJhcnkgcHJvamVjdCwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgYWRkZWQgYXMgcGVlciBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkZXBzIG5hbWVzIG9mIGNkayBtb2R1bGVzIChlLmcuIGBAYXdzLWNkay9hd3MtbGFtYmRhYCkuXG4gICAqIEBkZXByZWNhdGVkIE5vdCBzdXBwb3J0ZWQgaW4gdjIuIEZvciB2MSwgdXNlIGBwcm9qZWN0LmNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoKWBcbiAgICovXG4gIHB1YmxpYyBhZGRDZGtEZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKC4uLmRlcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgQVdTIENESyBtb2R1bGVzIGFzIGRldiBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkZXBzIG5hbWVzIG9mIGNkayBtb2R1bGVzIChlLmcuIGBAYXdzLWNkay9hd3MtbGFtYmRhYCkuXG4gICAqIEBkZXByZWNhdGVkIE5vdCBzdXBwb3J0ZWQgaW4gdjIuIEZvciB2MSwgdXNlIGBwcm9qZWN0LmNka0RlcHMuYWRkVjFEZXZEZXBlbmRlbmNpZXMoKWBcbiAgICovXG4gIHB1YmxpYyBhZGRDZGtUZXN0RGVwZW5kZW5jaWVzKC4uLmRlcHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuY2RrRGVwcy5hZGRWMURldkRlcGVuZGVuY2llcyguLi5kZXBzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRlcm1pbmVXb3JrZmxvd0NvbnRhaW5lckltYWdlKFxuICBvcHRpb25zOiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyxcbiAgY2RrTWFqb3JWZXJzaW9uOiBudW1iZXIgfCB1bmRlZmluZWRcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIGlmIHRoZSB1c2VyIHNwZWNpZmllcyB0aGUgd29ya2Zsb3cgY29udGFpbmVyIGltYWdlIGV4cGxpY2l0bHksIHVzZSB0aGF0XG4gIGlmIChvcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2UpIHtcbiAgICByZXR1cm4gb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlO1xuICB9XG5cbiAgLy8gaWYgdGhlIHVzZXIgc3BlY2lmaWVzIG1pbmltdW0gbm9kZSB2ZXJzaW9uLCB0aGVuIEpzaWlQcm9qZWN0IHdpbGwgdGFrZSBjYXJlIG9mXG4gIC8vIGRldGVybWluaW5nIHRoZSB3b3JrZmxvdyBjb250YWluZXIgaW1hZ2UgZnJvbSB0aGF0LCBzbyB3ZSByZXR1cm4gXCJ1bmRlZmluZWRcIlxuICBpZiAob3B0aW9ucy5taW5Ob2RlVmVyc2lvbikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBvdGhlcndpc2UsIGNob29zZSBhIHdvcmtmbG93IGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB0aGUgQ0RLIHZlcnNpb25cbiAgaWYgKGNka01ham9yVmVyc2lvbiA9PT0gMSkge1xuICAgIHJldHVybiBcImpzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltXCI7XG4gIH1cblxuICBpZiAoY2RrTWFqb3JWZXJzaW9uID09PSAyKSB7XG4gICAgcmV0dXJuIFwianNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0tbm9kZTE0XCI7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9uc2AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0TGlicmFyeUF3c09wdGlvbnNcbiAgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7fVxuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5YCAqL1xuZXhwb3J0IGNsYXNzIENvbnN0cnVjdExpYnJhcnlBd3MgZXh0ZW5kcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IHt9XG4iXX0=
@@ -19,5 +19,5 @@ class AwsCdkDepsJava extends awscdk_deps_1.AwsCdkDeps {
19
19
  }
20
20
  exports.AwsCdkDepsJava = AwsCdkDepsJava;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- AwsCdkDepsJava[_a] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.52.67" };
22
+ AwsCdkDepsJava[_a] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.52.70" };
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtamF2YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWRlcHMtamF2YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtDQUErRDtBQUUvRDs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHdCQUFVO0lBQ2xDLFlBQVk7UUFDcEIsT0FBTztZQUNMLE1BQU0sRUFBRSw2QkFBNkI7WUFDckMsTUFBTSxFQUFFLG9DQUFvQztZQUM1QyxVQUFVLEVBQUUsZ0NBQWdDO1lBQzVDLFVBQVUsRUFBRSxtQ0FBbUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7O0FBUkgsd0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtEZXBzLCBBd3NDZGtQYWNrYWdlTmFtZXMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuXG4vKipcbiAqIE1hbmFnZXMgZGVwZW5kZW5jaWVzIG9uIHRoZSBBV1MgQ0RLIGZvciBKYXZhIHByb2plY3RzLlxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrRGVwc0phdmEgZXh0ZW5kcyBBd3NDZGtEZXBzIHtcbiAgcHJvdGVjdGVkIHBhY2thZ2VOYW1lcygpOiBBd3NDZGtQYWNrYWdlTmFtZXMge1xuICAgIHJldHVybiB7XG4gICAgICBjb3JlVjE6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9hd3MtY2RrLWxpYlwiLFxuICAgICAgY29uc3RydWN0czogXCJzb2Z0d2FyZS5jb25zdHJ1Y3RzL2NvbnN0cnVjdHNcIixcbiAgICAgIGFzc2VydGlvbnM6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -20,5 +20,5 @@ class AwsCdkDepsJs extends awscdk_deps_1.AwsCdkDeps {
20
20
  }
21
21
  exports.AwsCdkDepsJs = AwsCdkDepsJs;
22
22
  _a = JSII_RTTI_SYMBOL_1;
23
- AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.52.67" };
23
+ AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.52.70" };
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQStEO0FBRS9EOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsd0JBQVU7SUFDaEMsWUFBWTtRQUNwQixPQUFPO1lBQ0wsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFLGFBQWE7WUFDckIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixVQUFVLEVBQUUscUJBQXFCO1NBQ2xDLENBQUM7SUFDSixDQUFDOztBQVRILG9DQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrUGFja2FnZU5hbWVzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcblxuLyoqXG4gKiBNYW5hZ2VzIGRlcGVuZGVuY2llcyBvbiB0aGUgQVdTIENESyBmb3IgTm9kZS5qcyBwcm9qZWN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka0RlcHNKcyBleHRlbmRzIEF3c0Nka0RlcHMge1xuICBwcm90ZWN0ZWQgcGFja2FnZU5hbWVzKCk6IEF3c0Nka1BhY2thZ2VOYW1lcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvcmVWMTogXCJAYXdzLWNkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwiYXdzLWNkay1saWJcIixcbiAgICAgIGNvbnN0cnVjdHM6IFwiY29uc3RydWN0c1wiLFxuICAgICAgYXNzZXJ0OiBcIkBhd3MtY2RrL2Fzc2VydFwiLFxuICAgICAgYXNzZXJ0aW9uczogXCJAYXdzLWNkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -149,7 +149,7 @@ class AwsCdkDeps extends component_1.Component {
149
149
  }
150
150
  exports.AwsCdkDeps = AwsCdkDeps;
151
151
  _a = JSII_RTTI_SYMBOL_1;
152
- AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.52.67" };
152
+ AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.52.70" };
153
153
  function determineFrameworkVersion(options) {
154
154
  const ver = semver.parse(options.cdkVersion);
155
155
  if (!ver) {
@@ -41,7 +41,7 @@ class CdkConfig extends component_1.Component {
41
41
  }
42
42
  exports.CdkConfig = CdkConfig;
43
43
  _a = JSII_RTTI_SYMBOL_1;
44
- CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.52.67" };
44
+ CdkConfig[_a] = { fqn: "projen.awscdk.CdkConfig", version: "0.52.70" };
45
45
  /**
46
46
  * Which approval is required when deploying CDK apps.
47
47
  */
@@ -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.52.67" };
49
+ CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.52.70" };
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRhc2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9jZGstdGFza3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7QUFJekM7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxxQkFBUztJQStCckMsWUFBWSxPQUFnQjs7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELElBQUksRUFBRSxXQUFXO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDakQsV0FBVyxFQUNULG9HQUFvRztZQUN0RyxJQUFJLEVBQUUsdUJBQXVCO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3hDLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztRQUVILDJFQUEyRTtRQUMzRSxNQUFNLEtBQUssU0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLENBQUMsV0FBVztZQUNmLHFGQUFxRixDQUFDO1FBRXhGLGlFQUFpRTtRQUNqRSxrREFBa0Q7UUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5DLDRCQUE0QjtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7O0FBM0VILDRCQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8qKlxuICogQWRkcyBzdGFuZGFyZCBBV1MgQ0RLIHRhc2tzIHRvIHlvdXIgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka1Rhc2tzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIHlvdXIgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN5bnRoOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplcyB5b3VyIGFwcCBhbmQgc3VwcHJlc3NlcyBzdGRvdXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3ludGhTaWxlbnQ6IFRhc2s7XG5cbiAgLyoqXG4gICAqIERlcGxveXMgeW91ciBhcHAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwbG95OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgdGhlIHN0YWNrcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXN0cm95OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBEaWZmIGFnYWluc3QgcHJvZHVjdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaWZmOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBXYXRjaCB0YXNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoOiBUYXNrO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuc3ludGggPSBwcm9qZWN0LmFkZFRhc2soXCJzeW50aFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTeW50aGVzaXplcyB5b3VyIGNkayBhcHAgaW50byBjZGsub3V0XCIsXG4gICAgICBleGVjOiBcImNkayBzeW50aFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zeW50aFNpbGVudCA9IHByb2plY3QuYWRkVGFzayhcInN5bnRoOnNpbGVudFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1N5bnRoZXNpemVzIHlvdXIgY2RrIGFwcCBpbnRvIGNkay5vdXQgYW5kIHN1cHByZXNzZXMgdGhlIHRlbXBsYXRlIGluIHN0ZG91dCAocGFydCBvZiBcInlhcm4gYnVpbGRcIiknLFxuICAgICAgZXhlYzogXCJjZGsgc3ludGggPiAvZGV2L251bGxcIiwgLy8gcmVkaXJlY3QgdG8gL2Rldi9udWxsIHRvIGhpZGUgdGVtcGxhdGVcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwbG95ID0gcHJvamVjdC5hZGRUYXNrKFwiZGVwbG95XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRlcGxveXMgeW91ciBDREsgYXBwIHRvIHRoZSBBV1MgY2xvdWRcIixcbiAgICAgIGV4ZWM6IFwiY2RrIGRlcGxveVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95ID0gcHJvamVjdC5hZGRUYXNrKFwiZGVzdHJveVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEZXN0cm95cyB5b3VyIGNkayBhcHAgaW4gdGhlIEFXUyBjbG91ZFwiLFxuICAgICAgZXhlYzogXCJjZGsgZGVzdHJveVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kaWZmID0gcHJvamVjdC5hZGRUYXNrKFwiZGlmZlwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEaWZmcyB0aGUgY3VycmVudGx5IGRlcGxveWVkIGFwcCBhZ2FpbnN0IHlvdXIgY29kZVwiLFxuICAgICAgZXhlYzogXCJjZGsgZGlmZlwiLFxuICAgIH0pO1xuXG4gICAgLy8gdHlwZXNjcmlwdCBwcm9qZWN0cyBhbHJlYWR5IGhhdmUgYSBcIndhdGNoXCIgdGFzaywgd2Ugd2Ugd2lsbCByZXB1cnBvc2UgaXRcbiAgICBjb25zdCB3YXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZChcIndhdGNoXCIpID8/IHByb2plY3QuYWRkVGFzayhcIndhdGNoXCIpO1xuXG4gICAgd2F0Y2gucmVzZXQoKTtcbiAgICB3YXRjaC5kZXNjcmlwdGlvbiA9XG4gICAgICBcIldhdGNoZXMgY2hhbmdlcyBpbiB5b3VyIHNvdXJjZSBjb2RlIGFuZCByZWJ1aWxkcyBhbmQgZGVwbG95cyB0byB0aGUgY3VycmVudCBhY2NvdW50XCI7XG5cbiAgICAvLyBkZXBsb3kgZmlyc3QgYmVjYXVzZSBzdXJwcmlzaW5nbHkgd2F0Y2ggaXMgbm90IGRlcGxveWluZyBmaXJzdFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE3Nzc2XG4gICAgd2F0Y2guZXhlYyhcImNkayBkZXBsb3kgLS1ob3Rzd2FwXCIpO1xuXG4gICAgLy8gbm93IHdlIGFyZSByZWFkeSB0byB3YXRjaFxuICAgIHdhdGNoLmV4ZWMoXCJjZGsgd2F0Y2hcIik7XG5cbiAgICB0aGlzLndhdGNoID0gd2F0Y2g7XG4gIH1cbn1cbiJdfQ==
@@ -10,3 +10,4 @@ export * from "./cdk-config";
10
10
  export * from "./cdk-tasks";
11
11
  export * from "./integration-test";
12
12
  export * from "./lambda-function";
13
+ export * from "./lambda-extension";
@@ -22,4 +22,5 @@ __exportStar(require("./cdk-config"), exports);
22
22
  __exportStar(require("./cdk-tasks"), exports);
23
23
  __exportStar(require("./integration-test"), exports);
24
24
  __exportStar(require("./lambda-function"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQyxvREFBa0M7QUFDbEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyxxREFBbUM7QUFDbkMsZ0RBQThCO0FBQzlCLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsK0NBQTZCO0FBQzdCLDhDQUE0QjtBQUM1QixxREFBbUM7QUFDbkMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXV0by1kaXNjb3ZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWFwcC1qYXZhXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NjZGstYXBwLXB5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NjZGstYXBwLXRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NjZGstY29uc3RydWN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWRlcHMtamF2YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWRlcHMtanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Nkay1jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Nkay10YXNrc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZWdyYXRpb24tdGVzdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG4iXX0=
25
+ __exportStar(require("./lambda-extension"), exports);
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQyxvREFBa0M7QUFDbEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyxxREFBbUM7QUFDbkMsZ0RBQThCO0FBQzlCLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsK0NBQTZCO0FBQzdCLDhDQUE0QjtBQUM1QixxREFBbUM7QUFDbkMsb0RBQWtDO0FBQ2xDLHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2F1dG8tZGlzY292ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F3c2Nkay1hcHAtamF2YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWFwcC1weVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWFwcC10c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWNvbnN0cnVjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F3c2Nkay1kZXBzLWphdmFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F3c2Nkay1kZXBzLWpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jZGstY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jZGstdGFza3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVncmF0aW9uLXRlc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xhbWJkYS1mdW5jdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGFtYmRhLWV4dGVuc2lvblwiO1xuIl19
@@ -77,5 +77,5 @@ class IntegrationTest extends cdk_1.IntegrationTestBase {
77
77
  }
78
78
  exports.IntegrationTest = IntegrationTest;
79
79
  _a = JSII_RTTI_SYMBOL_1;
80
- IntegrationTest[_a] = { fqn: "projen.awscdk.IntegrationTest", version: "0.52.67" };
80
+ IntegrationTest[_a] = { fqn: "projen.awscdk.IntegrationTest", version: "0.52.70" };
81
81
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvaW50ZWdyYXRpb24tdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1QixnQ0FBeUU7QUFDekUsa0RBQWlEO0FBSWpELHlDQUEyQztBQW9DM0M7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEseUJBQW1CO0lBV3RELFlBQVksT0FBZ0IsRUFBRSxPQUErQjs7UUFDM0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FDeEIsWUFBWSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUM3Qyw2QkFBYyxDQUFDLEtBQUssQ0FDckIsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLDZCQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxNQUFNLFNBQVMsR0FBRyxXQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFdBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsY0FBYyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV2RSxNQUFNLElBQUksR0FBRztZQUNYLFVBQVUsR0FBRyxHQUFHO1lBQ2hCLHdCQUF3QjtZQUN4QixxREFBcUQ7WUFDckQscUJBQXFCO1NB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QUksQ0FBQyxXQUNQLEtBQUssU0FBUyxHQUFHLENBQ2xCLENBQUM7UUFFRiwyQ0FBMkM7UUFDM0MsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1NBQzFFO0lBQ0gsQ0FBQzs7QUFyR0gsMENBc0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblRlc3RCYXNlLCBJbnRlZ3JhdGlvblRlc3RCYXNlT3B0aW9ucyB9IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgRkVBVFVSRV9GTEFHUyB9IGZyb20gXCIuL2ludGVybmFsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25UZXN0Q29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSB0ZXN0IGFwcCBhZnRlciBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC4gSWYgZGlzYWJsZWQsIGxlYXZlcyB0aGVcbiAgICogYXBwIGRlcGxveWVkIGluIHRoZSBkZXYgYWNjb3VudC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzdHJveUFmdGVyRGVwbG95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBwYXRoIG1ldGFkYXRhLCBhZGRpbmcgYGF3czpjZGs6cGF0aGAsIHdpdGggdGhlIGRlZmluaW5nIGNvbnN0cnVjdCdzXG4gICAqIHBhdGgsIHRvIHRoZSBDbG91ZEZvcm1hdGlvbiBtZXRhZGF0YSBmb3IgZWFjaCBzeW50aGVzaXplZCByZXNvdXJjZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHBhdGhNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEludGVncmF0aW9uVGVzdGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25UZXN0T3B0aW9uc1xuICBleHRlbmRzIEludGVncmF0aW9uVGVzdENvbW1vbk9wdGlvbnMsXG4gICAgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHN0YWNrcyB3aXRoaW4gdGhlIGludGVncmF0aW9uIHRlc3QgdG8gZGVwbG95L2Rlc3Ryb3kuXG4gICAqIEBkZWZhdWx0IFtcIioqXCJdXG4gICAqL1xuICByZWFkb25seSBzdGFja3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQVdTIENESyBkZXBlbmRlbmN5IG1hbmFnZXIuXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xufVxuXG4vKipcbiAqIENsb3VkIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25UZXN0IGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QmFzZSB7XG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc3Ryb3lUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgd2F0Y2ggdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3YXRjaFRhc2s6IFRhc2s7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogSW50ZWdyYXRpb25UZXN0T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFwcm9qZWN0LmRlcHMudHJ5R2V0RGVwZW5kZW5jeShcImF3cy1jZGtcIikpIHtcbiAgICAgIHByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFxuICAgICAgICBgYXdzLWNka0BeJHtvcHRpb25zLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9ufWAsXG4gICAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghcHJvamVjdC5kZXBzLnRyeUdldERlcGVuZGVuY3koXCJ0cy1ub2RlXCIpKSB7XG4gICAgICBwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcInRzLW5vZGVcIiwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcGxveURpciA9IGpvaW4odGhpcy50bXBEaXIsIFwiZGVwbG95LmNkay5vdXRcIik7XG4gICAgY29uc3QgYXNzZXJ0RGlyID0gam9pbih0aGlzLnRtcERpciwgXCJhc3NlcnQuY2RrLm91dFwiKTtcbiAgICBjb25zdCBhcHAgPSBgdHMtbm9kZSAtUCAke29wdGlvbnMudHNjb25maWdQYXRofSAke29wdGlvbnMuZW50cnlwb2ludH1gO1xuXG4gICAgY29uc3Qgb3B0cyA9IFtcbiAgICAgIGAtLWFwcCBcIiR7YXBwfVwiYCxcbiAgICAgIFwiLS1uby12ZXJzaW9uLXJlcG9ydGluZ1wiLFxuICAgICAgLy8gZG9uJ3QgaW5qZWN0IGNsb3VkZm9ybWF0aW9uIG1ldGFkYXRhIGludG8gdGVtcGxhdGVcbiAgICAgIFwiLS1uby1hc3NldC1tZXRhZGF0YVwiLFxuICAgIF07XG5cbiAgICBjb25zdCBwYXRoTWV0YWRhdGEgPSBvcHRpb25zLnBhdGhNZXRhZGF0YSA/PyBmYWxzZTtcbiAgICBpZiAoIXBhdGhNZXRhZGF0YSkge1xuICAgICAgb3B0cy5wdXNoKFwiLS1uby1wYXRoLW1ldGFkYXRhXCIpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICAvLyBhZGQgYWxsIGZlYXR1cmUgZmxhZ3NcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gW1xuICAgICAgICAuLi5GRUFUVVJFX0ZMQUdTLFxuICAgICAgICBcIkBhd3MtY2RrL2NvcmU6bmV3U3R5bGVTdGFja1N5bnRoZXNpc1wiLCAvLyBzaW1wbGlmaWVzIGFzc2V0IGNvb3JkaW5hdGVzIGluIHN5bnRoIG91dHB1dFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgICAgIG9wdHMucHVzaChgLS1jb250ZXh0ICR7ZmVhdHVyZX09dHJ1ZWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNka29wdHMgPSBvcHRzLmpvaW4oXCIgXCIpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHN0YWNrcyB0byBkZXBsb3lcbiAgICBjb25zdCBzdGFja3MgPSBvcHRpb25zLnN0YWNrcyA/PyBbXCIqKlwiXTtcbiAgICBjb25zdCBzdGFja09wdHMgPSBzdGFja3MubWFwKChzdGFjaykgPT4gYCcke3N0YWNrfSdgKS5qb2luKFwiIFwiKTtcblxuICAgIHRoaXMuZGVwbG95VGFzay5leGVjKGBybSAtZnIgJHtkZXBsb3lEaXJ9YCk7XG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWMoXG4gICAgICBgY2RrIGRlcGxveSAke2Nka29wdHN9ICR7c3RhY2tPcHRzfSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLW8gJHtkZXBsb3lEaXJ9YFxuICAgICk7XG5cbiAgICAvLyBpZiBkZXBsb3ltZW50IHdhcyBzdWNjZXNzZnVsLCBjb3B5IHRoZSBkZXBsb3kgZGlyIHRvIHRoZSBleHBlY3RlZCBkaXJcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlYyhgcm0gLWZyICR7dGhpcy5zbmFwc2hvdERpcn1gKTtcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlYyhgbXYgJHtkZXBsb3lEaXJ9ICR7dGhpcy5zbmFwc2hvdERpcn1gKTtcblxuICAgIHRoaXMud2F0Y2hUYXNrID0gcHJvamVjdC5hZGRUYXNrKGBpbnRlZzoke3RoaXMubmFtZX06d2F0Y2hgLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYHdhdGNoIGludGVncmF0aW9uIHRlc3QgJyR7dGhpcy5uYW1lfScgKHdpdGhvdXQgdXBkYXRpbmcgc25hcHNob3RzKWAsXG4gICAgICBleGVjOiBgY2RrIHdhdGNoICR7Y2Rrb3B0c30gJHtzdGFja09wdHN9IC1vICR7ZGVwbG95RGlyfWAsXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlc3Ryb3lUYXNrID0gcHJvamVjdC5hZGRUYXNrKGBpbnRlZzoke3RoaXMubmFtZX06ZGVzdHJveWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgZGVzdHJveSBpbnRlZ3JhdGlvbiB0ZXN0ICcke3RoaXMubmFtZX0nYCxcbiAgICAgIGV4ZWM6IGBjZGsgZGVzdHJveSAtLWFwcCAke3RoaXMuc25hcHNob3REaXJ9ICR7c3RhY2tPcHRzfSAtLW5vLXZlcnNpb24tcmVwb3J0aW5nYCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlc3Ryb3lBZnRlckRlcGxveSA9IG9wdGlvbnMuZGVzdHJveUFmdGVyRGVwbG95ID8/IHRydWU7XG4gICAgaWYgKGRlc3Ryb3lBZnRlckRlcGxveSkge1xuICAgICAgdGhpcy5kZXBsb3lUYXNrLnNwYXduKHRoaXMuZGVzdHJveVRhc2spO1xuICAgIH1cblxuICAgIHRoaXMuc25hcHNob3RUYXNrLmV4ZWMoXG4gICAgICBgY2RrIHN5bnRoICR7Y2Rrb3B0c30gLW8gJHt0aGlzLnNuYXBzaG90RGlyfSA+IC9kZXYvbnVsbGBcbiAgICApO1xuXG4gICAgY29uc3QgZXhjbHVkZSA9IFtcImFzc2V0LipcIiwgXCJjZGsub3V0XCIsIFwibWFuaWZlc3QuanNvblwiLCBcInRyZWUuanNvblwiXTtcblxuICAgIHRoaXMuYXNzZXJ0VGFzay5leGVjKGBjZGsgc3ludGggJHtjZGtvcHRzfSAtbyAke2Fzc2VydERpcn0gPiAvZGV2L251bGxgKTtcbiAgICB0aGlzLmFzc2VydFRhc2suZXhlYyhcbiAgICAgIGBkaWZmIC1yICR7ZXhjbHVkZS5tYXAoKHgpID0+IGAteCAke3h9YCkuam9pbihcIiBcIil9ICR7XG4gICAgICAgIHRoaXMuc25hcHNob3REaXJcbiAgICAgIH0vICR7YXNzZXJ0RGlyfS9gXG4gICAgKTtcblxuICAgIC8vIGRvIG5vdCBjb21taXQgYWxsIGZpbGVzIHdlIGFyZSBleGNsdWRpbmdcbiAgICBmb3IgKGNvbnN0IHggb2YgZXhjbHVkZSkge1xuICAgICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoYCR7dGhpcy5zbmFwc2hvdERpcn0vJHt4fWApO1xuICAgICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoYCR7dGhpcy5zbmFwc2hvdERpcn0vKiovJHt4fWApOyAvLyBuZXN0ZWQgYXNzZW1ibGllc1xuICAgIH1cbiAgfVxufVxuIl19
@@ -6,3 +6,11 @@ export declare const FEATURE_FLAGS: string[];
6
6
  * Suffix for AWS Lambda handlers.
7
7
  */
8
8
  export declare const TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
9
+ /**
10
+ * Suffix for AWS Lambda Extensions.
11
+ */
12
+ export declare const TYPESCRIPT_LAMBDA_EXTENSION_EXT = ".lambda-extension.ts";
13
+ /**
14
+ * Converts the given path string to posix if it wasn't already.
15
+ */
16
+ export declare function convertToPosixPath(p: string): string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TYPESCRIPT_LAMBDA_EXT = exports.FEATURE_FLAGS = void 0;
3
+ exports.convertToPosixPath = exports.TYPESCRIPT_LAMBDA_EXTENSION_EXT = exports.TYPESCRIPT_LAMBDA_EXT = exports.FEATURE_FLAGS = void 0;
4
+ const path_1 = require("path");
4
5
  /**
5
6
  * Feature flags as of v1.130.0
6
7
  */
@@ -23,4 +24,15 @@ exports.FEATURE_FLAGS = [
23
24
  * Suffix for AWS Lambda handlers.
24
25
  */
25
26
  exports.TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2ludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ1UsUUFBQSxhQUFhLEdBQUc7SUFDM0IsMEJBQTBCO0lBQzFCLHdEQUF3RDtJQUN4RCx5Q0FBeUM7SUFDekMsb0NBQW9DO0lBQ3BDLDZDQUE2QztJQUM3QyxrREFBa0Q7SUFDbEQscUNBQXFDO0lBQ3JDLHNDQUFzQztJQUN0QyxxREFBcUQ7SUFDckQsd0NBQXdDO0lBQ3hDLDBDQUEwQztJQUMxQywyQ0FBMkM7SUFDM0MsMkRBQTJEO0NBQzVELENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGZWF0dXJlIGZsYWdzIGFzIG9mIHYxLjEzMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBGRUFUVVJFX0ZMQUdTID0gW1xuICBcImF3cy1jZGs6ZW5hYmxlRGlmZk5vRmFpbFwiLFxuICBcIkBhd3MtY2RrL2F3cy1hcGlnYXRld2F5OnVzYWdlUGxhbktleU9yZGVySW5zZW5zaXRpdmVJZFwiLFxuICBcIkBhd3MtY2RrL2NvcmU6ZW5hYmxlU3RhY2tOYW1lRHVwbGljYXRlc1wiLFxuICBcIkBhd3MtY2RrL2NvcmU6c3RhY2tSZWxhdGl2ZUV4cG9ydHNcIixcbiAgXCJAYXdzLWNkay9hd3MtZWNyLWFzc2V0czpkb2NrZXJJZ25vcmVTdXBwb3J0XCIsXG4gIFwiQGF3cy1jZGsvYXdzLXNlY3JldHNtYW5hZ2VyOnBhcnNlT3duZWRTZWNyZXROYW1lXCIsXG4gIFwiQGF3cy1jZGsvYXdzLWttczpkZWZhdWx0S2V5UG9saWNpZXNcIixcbiAgXCJAYXdzLWNkay9hd3MtczM6Z3JhbnRXcml0ZVdpdGhvdXRBY2xcIixcbiAgXCJAYXdzLWNkay9hd3MtZWNzLXBhdHRlcm5zOnJlbW92ZURlZmF1bHREZXNpcmVkQ291bnRcIixcbiAgXCJAYXdzLWNkay9hd3MtcmRzOmxvd2VyY2FzZURiSWRlbnRpZmllclwiLFxuICBcIkBhd3MtY2RrL2F3cy1lZnM6ZGVmYXVsdEVuY3J5cHRpb25BdFJlc3RcIixcbiAgXCJAYXdzLWNkay9hd3MtbGFtYmRhOnJlY29nbml6ZVZlcnNpb25Qcm9wc1wiLFxuICBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250OmRlZmF1bHRTZWN1cml0eVBvbGljeVRMU3YxLjJfMjAyMVwiLFxuXTtcblxuLyoqXG4gKiBTdWZmaXggZm9yIEFXUyBMYW1iZGEgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0xBTUJEQV9FWFQgPSBcIi5sYW1iZGEudHNcIjtcbiJdfQ==
27
+ /**
28
+ * Suffix for AWS Lambda Extensions.
29
+ */
30
+ exports.TYPESCRIPT_LAMBDA_EXTENSION_EXT = ".lambda-extension.ts";
31
+ /**
32
+ * Converts the given path string to posix if it wasn't already.
33
+ */
34
+ function convertToPosixPath(p) {
35
+ return p.split(path_1.sep).join(path_1.posix.sep);
36
+ }
37
+ exports.convertToPosixPath = convertToPosixPath;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2ludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFrQztBQUVsQzs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHO0lBQzNCLDBCQUEwQjtJQUMxQix3REFBd0Q7SUFDeEQseUNBQXlDO0lBQ3pDLG9DQUFvQztJQUNwQyw2Q0FBNkM7SUFDN0Msa0RBQWtEO0lBQ2xELHFDQUFxQztJQUNyQyxzQ0FBc0M7SUFDdEMscURBQXFEO0lBQ3JELHdDQUF3QztJQUN4QywwQ0FBMEM7SUFDMUMsMkNBQTJDO0lBQzNDLDJEQUEyRDtDQUM1RCxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQUVsRDs7R0FFRztBQUNVLFFBQUEsK0JBQStCLEdBQUcsc0JBQXNCLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxDQUFTO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxnREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlcCwgcG9zaXggfSBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIEZlYXR1cmUgZmxhZ3MgYXMgb2YgdjEuMTMwLjBcbiAqL1xuZXhwb3J0IGNvbnN0IEZFQVRVUkVfRkxBR1MgPSBbXG4gIFwiYXdzLWNkazplbmFibGVEaWZmTm9GYWlsXCIsXG4gIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6dXNhZ2VQbGFuS2V5T3JkZXJJbnNlbnNpdGl2ZUlkXCIsXG4gIFwiQGF3cy1jZGsvY29yZTplbmFibGVTdGFja05hbWVEdXBsaWNhdGVzXCIsXG4gIFwiQGF3cy1jZGsvY29yZTpzdGFja1JlbGF0aXZlRXhwb3J0c1wiLFxuICBcIkBhd3MtY2RrL2F3cy1lY3ItYXNzZXRzOmRvY2tlcklnbm9yZVN1cHBvcnRcIixcbiAgXCJAYXdzLWNkay9hd3Mtc2VjcmV0c21hbmFnZXI6cGFyc2VPd25lZFNlY3JldE5hbWVcIixcbiAgXCJAYXdzLWNkay9hd3Mta21zOmRlZmF1bHRLZXlQb2xpY2llc1wiLFxuICBcIkBhd3MtY2RrL2F3cy1zMzpncmFudFdyaXRlV2l0aG91dEFjbFwiLFxuICBcIkBhd3MtY2RrL2F3cy1lY3MtcGF0dGVybnM6cmVtb3ZlRGVmYXVsdERlc2lyZWRDb3VudFwiLFxuICBcIkBhd3MtY2RrL2F3cy1yZHM6bG93ZXJjYXNlRGJJZGVudGlmaWVyXCIsXG4gIFwiQGF3cy1jZGsvYXdzLWVmczpkZWZhdWx0RW5jcnlwdGlvbkF0UmVzdFwiLFxuICBcIkBhd3MtY2RrL2F3cy1sYW1iZGE6cmVjb2duaXplVmVyc2lvblByb3BzXCIsXG4gIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQ6ZGVmYXVsdFNlY3VyaXR5UG9saWN5VExTdjEuMl8yMDIxXCIsXG5dO1xuXG4vKipcbiAqIFN1ZmZpeCBmb3IgQVdTIExhbWJkYSBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCA9IFwiLmxhbWJkYS50c1wiO1xuXG4vKipcbiAqIFN1ZmZpeCBmb3IgQVdTIExhbWJkYSBFeHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MQU1CREFfRVhURU5TSU9OX0VYVCA9IFwiLmxhbWJkYS1leHRlbnNpb24udHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gcGF0aCBzdHJpbmcgdG8gcG9zaXggaWYgaXQgd2Fzbid0IGFscmVhZHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qb3NpeFBhdGgocDogc3RyaW5nKSB7XG4gIHJldHVybiBwLnNwbGl0KHNlcCkuam9pbihwb3NpeC5zZXApO1xufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component } from "../component";
2
+ import { BundlingOptions } from "../javascript";
3
+ import { Project } from "../project";
4
+ import { AwsCdkDeps } from "./awscdk-deps";
5
+ import { LambdaRuntime } from "./lambda-function";
6
+ /**
7
+ * Common options for creating lambda extensions.
8
+ */
9
+ export interface LambdaExtensionCommonOptions {
10
+ /**
11
+ * The extension's compatible runtimes.
12
+ */
13
+ readonly compatibleRuntimes?: LambdaRuntime[];
14
+ /**
15
+ * Bundling options for this AWS Lambda extension.
16
+ *
17
+ * If not specified the default bundling options specified for the project
18
+ * `Bundler` instance will be used.
19
+ *
20
+ * @default - defaults
21
+ */
22
+ readonly bundlingOptions?: BundlingOptions;
23
+ }
24
+ /**
25
+ * Options for creating lambda extensions.
26
+ */
27
+ export interface LambdaExtensionOptions extends LambdaExtensionCommonOptions {
28
+ /**
29
+ * Name of the extension
30
+ *
31
+ * @default - Derived from the entrypoint filename.
32
+ */
33
+ readonly name?: string;
34
+ /**
35
+ * A path from the project root directory to a TypeScript file which contains
36
+ * the AWS Lambda extension entrypoint (stand-alone script).
37
+ *
38
+ * This is relative to the root directory of the project.
39
+ *
40
+ * @example "src/subdir/foo.lambda-extension.ts"
41
+ */
42
+ readonly entrypoint: string;
43
+ /**
44
+ * AWS CDK dependency manager.
45
+ */
46
+ readonly cdkDeps: AwsCdkDeps;
47
+ /**
48
+ * The name of the generated TypeScript source file. This file should also be
49
+ * under the source tree.
50
+ *
51
+ * @default - The name of the entrypoint file, with the `-layer-version.ts`
52
+ * suffix instead of `.lambda-extension.ts`.
53
+ */
54
+ readonly constructFile?: string;
55
+ /**
56
+ * The name of the generated `lambda.LayerVersion` subclass.
57
+ *
58
+ * @default - A pascal cased version of the name of the entrypoint file, with
59
+ * the extension `LayerVersion` (e.g. `AppConfigLayerVersion`).
60
+ */
61
+ readonly constructName?: string;
62
+ }
63
+ /**
64
+ * Create a Lambda Extension
65
+ */
66
+ export declare class LambdaExtension extends Component {
67
+ constructor(project: Project, options: LambdaExtensionOptions);
68
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LambdaExtension = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const path_1 = require("path");
7
+ const case_1 = require("case");
8
+ const component_1 = require("../component");
9
+ const javascript_1 = require("../javascript");
10
+ const source_code_1 = require("../source-code");
11
+ const internal_1 = require("./internal");
12
+ const lambda_function_1 = require("./lambda-function");
13
+ /**
14
+ * Create a Lambda Extension
15
+ */
16
+ class LambdaExtension extends component_1.Component {
17
+ constructor(project, options) {
18
+ var _b, _c, _d;
19
+ super(project);
20
+ const basePath = path_1.join(path_1.dirname(options.entrypoint), path_1.basename(options.entrypoint, internal_1.TYPESCRIPT_LAMBDA_EXTENSION_EXT));
21
+ const name = (_b = options.name) !== null && _b !== void 0 ? _b : path_1.basename(basePath);
22
+ const bundler = javascript_1.Bundler.of(project);
23
+ if (!bundler) {
24
+ throw new Error("No bundler found. Please add a Bundler component to your project.");
25
+ }
26
+ const compatibleRuntimes = (_c = options.compatibleRuntimes) !== null && _c !== void 0 ? _c : [
27
+ lambda_function_1.LambdaRuntime.NODEJS_14_X,
28
+ lambda_function_1.LambdaRuntime.NODEJS_12_X,
29
+ ];
30
+ if (compatibleRuntimes.length === 0) {
31
+ throw new Error("Compatible runtimes must include at least one runtime");
32
+ }
33
+ // Use the lowest runtime version to bundle
34
+ const [bundlerRuntime] = compatibleRuntimes.sort((a, b) => a.functionRuntime.localeCompare(b.functionRuntime));
35
+ // Allow extension code to import dev-deps since they are only needed
36
+ // during bundling
37
+ const eslint = javascript_1.Eslint.of(project);
38
+ eslint === null || eslint === void 0 ? void 0 : eslint.allowDevDeps(options.entrypoint);
39
+ const bundle = bundler.addBundle(options.entrypoint, {
40
+ platform: bundlerRuntime.esbuildPlatform,
41
+ target: bundlerRuntime.esbuildTarget,
42
+ externals: ["aws-sdk"],
43
+ outfile: `extensions/${name}`,
44
+ // Make the output executable because Lambda expects to run
45
+ // extensions as stand-alone programs alongside the main lambda
46
+ // process.
47
+ executable: true,
48
+ ...options.bundlingOptions,
49
+ });
50
+ const constructFile = (_d = options.constructFile) !== null && _d !== void 0 ? _d : `${basePath}-layer-version.ts`;
51
+ new LambdaLayerConstruct(project, {
52
+ constructFile: constructFile,
53
+ constructName: options.constructName,
54
+ assetDir: bundle.outdir,
55
+ compatibleRuntimes: compatibleRuntimes,
56
+ description: `Provides a Lambda Extension \`${name}\` from ${internal_1.convertToPosixPath(options.entrypoint)}`,
57
+ cdkDeps: options.cdkDeps,
58
+ });
59
+ }
60
+ }
61
+ exports.LambdaExtension = LambdaExtension;
62
+ _a = JSII_RTTI_SYMBOL_1;
63
+ LambdaExtension[_a] = { fqn: "projen.awscdk.LambdaExtension", version: "0.52.70" };
64
+ class LambdaLayerConstruct extends source_code_1.SourceCode {
65
+ constructor(project, options) {
66
+ var _b;
67
+ super(project, options.constructFile);
68
+ const src = this;
69
+ const cdkDeps = options.cdkDeps;
70
+ const constructName = (_b = options.constructName) !== null && _b !== void 0 ? _b : case_1.pascal(path_1.basename(options.constructFile, ".ts"));
71
+ const propsType = `${constructName}Props`;
72
+ const assetDir = path_1.relative(path_1.dirname(options.constructFile), options.assetDir);
73
+ if (src.marker) {
74
+ src.line(`// ${src.marker}`);
75
+ }
76
+ src.line("import * as path from 'path';");
77
+ if (cdkDeps.cdkMajorVersion === 1) {
78
+ src.line("import * as lambda from '@aws-cdk/aws-lambda';");
79
+ src.line("import { Construct } from '@aws-cdk/core';");
80
+ cdkDeps.addV1Dependencies("@aws-cdk/aws-lambda");
81
+ cdkDeps.addV1Dependencies("@aws-cdk/core");
82
+ }
83
+ else {
84
+ src.line("import * as lambda from 'aws-cdk-lib/aws-lambda';");
85
+ src.line("import { Construct } from 'constructs';");
86
+ }
87
+ src.line();
88
+ src.line("/**");
89
+ src.line(` * Props for ${constructName}`);
90
+ src.line(" */");
91
+ src.open(`export interface ${propsType} extends lambda.LayerVersionOptions {`);
92
+ src.close("}");
93
+ src.line();
94
+ src.line("/**");
95
+ src.line(` * ${options.description}`);
96
+ src.line(" */");
97
+ src.open(`export class ${constructName} extends lambda.LayerVersion {`);
98
+ src.open(`constructor(scope: Construct, id: string, props?: ${propsType}) {`);
99
+ src.open("super(scope, id, {");
100
+ src.line(`description: ${encodeCodeString(options.description)},`);
101
+ src.line("...props,");
102
+ src.open("compatibleRuntimes: [");
103
+ for (const runtime of options.compatibleRuntimes) {
104
+ src.line(`lambda.Runtime.${runtime.functionRuntime},`);
105
+ }
106
+ src.close("],");
107
+ src.open(`code: lambda.Code.fromAsset(path.join(__dirname,`);
108
+ src.line(`${encodeCodeString(internal_1.convertToPosixPath(assetDir))})),`);
109
+ src.close();
110
+ src.close("});");
111
+ src.close("}");
112
+ src.close("}");
113
+ }
114
+ }
115
+ /**
116
+ * Encodes a string for embedding in source code.
117
+ */
118
+ function encodeCodeString(value) {
119
+ const json = JSON.stringify(value);
120
+ const escapedString = json.substring(1, json.length - 1).replace(/'/g, "\\'");
121
+ return `'${escapedString}'`;
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvbGFtYmRhLWV4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUF5RDtBQUN6RCwrQkFBOEI7QUFDOUIsNENBQXlDO0FBQ3pDLDhDQUFpRTtBQUVqRSxnREFBNEM7QUFFNUMseUNBR29CO0FBQ3BCLHVEQUFrRDtBQWtFbEQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEscUJBQVM7SUFDNUMsWUFBWSxPQUFnQixFQUFFLE9BQStCOztRQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFFBQVEsR0FBRyxXQUFJLENBQ25CLGNBQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQzNCLGVBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLDBDQUErQixDQUFDLENBQzlELENBQUM7UUFFRixNQUFNLElBQUksU0FBRyxPQUFPLENBQUMsSUFBSSxtQ0FBSSxlQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEQsTUFBTSxPQUFPLEdBQUcsb0JBQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUVBQW1FLENBQ3BFLENBQUM7U0FDSDtRQUVELE1BQU0sa0JBQWtCLFNBQUcsT0FBTyxDQUFDLGtCQUFrQixtQ0FBSTtZQUN2RCwrQkFBYSxDQUFDLFdBQVc7WUFDekIsK0JBQWEsQ0FBQyxXQUFXO1NBQzFCLENBQUM7UUFFRixJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMs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N0QsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLDZCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUUsT0FBTyxJQUFJLGFBQWEsR0FBRyxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcGFzY2FsIH0gZnJvbSBcImNhc2VcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEJ1bmRsZXIsIEJ1bmRsaW5nT3B0aW9ucywgRXNsaW50IH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgU291cmNlQ29kZSB9IGZyb20gXCIuLi9zb3VyY2UtY29kZVwiO1xuaW1wb3J0IHsgQXdzQ2RrRGVwcyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzXCI7XG5pbXBvcnQge1xuICBjb252ZXJ0VG9Qb3NpeFBhdGgsXG4gIFRZUEVTQ1JJUFRfTEFNQkRBX0VYVEVOU0lPTl9FWFQsXG59IGZyb20gXCIuL2ludGVybmFsXCI7XG5pbXBvcnQgeyBMYW1iZGFSdW50aW1lIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIGNyZWF0aW5nIGxhbWJkYSBleHRlbnNpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUV4dGVuc2lvbkNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbidzIGNvbXBhdGlibGUgcnVudGltZXMuXG4gICAqL1xuICByZWFkb25seSBjb21wYXRpYmxlUnVudGltZXM/OiBMYW1iZGFSdW50aW1lW107XG5cbiAgLyoqXG4gICAqIEJ1bmRsaW5nIG9wdGlvbnMgZm9yIHRoaXMgQVdTIExhbWJkYSBleHRlbnNpb24uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgYnVuZGxpbmcgb3B0aW9ucyBzcGVjaWZpZWQgZm9yIHRoZSBwcm9qZWN0XG4gICAqIGBCdW5kbGVyYCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IEJ1bmRsaW5nT3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBsYW1iZGEgZXh0ZW5zaW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFFeHRlbnNpb25PcHRpb25zIGV4dGVuZHMgTGFtYmRhRXh0ZW5zaW9uQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBleHRlbnNpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZXJpdmVkIGZyb20gdGhlIGVudHJ5cG9pbnQgZmlsZW5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggZnJvbSB0aGUgcHJvamVjdCByb290IGRpcmVjdG9yeSB0byBhIFR5cGVTY3JpcHQgZmlsZSB3aGljaCBjb250YWluc1xuICAgKiB0aGUgQVdTIExhbWJkYSBleHRlbnNpb24gZW50cnlwb2ludCAoc3RhbmQtYWxvbmUgc2NyaXB0KS5cbiAgICpcbiAgICogVGhpcyBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwic3JjL3N1YmRpci9mb28ubGFtYmRhLWV4dGVuc2lvbi50c1wiXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFXUyBDREsgZGVwZW5kZW5jeSBtYW5hZ2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBUeXBlU2NyaXB0IHNvdXJjZSBmaWxlLiBUaGlzIGZpbGUgc2hvdWxkIGFsc28gYmVcbiAgICogdW5kZXIgdGhlIHNvdXJjZSB0cmVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBuYW1lIG9mIHRoZSBlbnRyeXBvaW50IGZpbGUsIHdpdGggdGhlIGAtbGF5ZXItdmVyc2lvbi50c2BcbiAgICogc3VmZml4IGluc3RlYWQgb2YgYC5sYW1iZGEtZXh0ZW5zaW9uLnRzYC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgYGxhbWJkYS5MYXllclZlcnNpb25gIHN1YmNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcGFzY2FsIGNhc2VkIHZlcnNpb24gb2YgdGhlIG5hbWUgb2YgdGhlIGVudHJ5cG9pbnQgZmlsZSwgd2l0aFxuICAgKiB0aGUgZXh0ZW5zaW9uIGBMYXllclZlcnNpb25gIChlLmcuIGBBcHBDb25maWdMYXllclZlcnNpb25gKS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgTGFtYmRhIEV4dGVuc2lvblxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRXh0ZW5zaW9uIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRXh0ZW5zaW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgYmFzZVBhdGggPSBqb2luKFxuICAgICAgZGlybmFtZShvcHRpb25zLmVudHJ5cG9pbnQpLFxuICAgICAgYmFzZW5hbWUob3B0aW9ucy5lbnRyeXBvaW50LCBUWVBFU0NSSVBUX0xBTUJEQV9FWFRFTlNJT05fRVhUKVxuICAgICk7XG5cbiAgICBjb25zdCBuYW1lID0gb3B0aW9ucy5uYW1lID8/IGJhc2VuYW1lKGJhc2VQYXRoKTtcblxuICAgIGNvbnN0IGJ1bmRsZXIgPSBCdW5kbGVyLm9mKHByb2plY3QpO1xuICAgIGlmICghYnVuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5vIGJ1bmRsZXIgZm91bmQuIFBsZWFzZSBhZGQgYSBCdW5kbGVyIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGF0aWJsZVJ1bnRpbWVzID0gb3B0aW9ucy5jb21wYXRpYmxlUnVudGltZXMgPz8gW1xuICAgICAgTGFtYmRhUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgICAgIExhbWJkYVJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgXTtcblxuICAgIGlmIChjb21wYXRpYmxlUnVudGltZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb21wYXRpYmxlIHJ1bnRpbWVzIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgcnVudGltZVwiKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGxvd2VzdCBydW50aW1lIHZlcnNpb24gdG8gYnVuZGxlXG4gICAgY29uc3QgW2J1bmRsZXJSdW50aW1lXSA9IGNvbXBhdGlibGVSdW50aW1lcy5zb3J0KChhLCBiKSA9PlxuICAgICAgYS5mdW5jdGlvblJ1bnRpbWUubG9jYWxlQ29tcGFyZShiLmZ1bmN0aW9uUnVudGltZSlcbiAgICApO1xuXG4gICAgLy8gQWxsb3cgZXh0ZW5zaW9uIGNvZGUgdG8gaW1wb3J0IGRldi1kZXBzIHNpbmNlIHRoZXkgYXJlIG9ubHkgbmVlZGVkXG4gICAgLy8gZHVyaW5nIGJ1bmRsaW5nXG4gICAgY29uc3QgZXNsaW50ID0gRXNsaW50Lm9mKHByb2plY3QpO1xuICAgIGVzbGludD8uYWxsb3dEZXZEZXBzKG9wdGlvbnMuZW50cnlwb2ludCk7XG5cbiAgICBjb25zdCBidW5kbGUgPSBidW5kbGVyLmFkZEJ1bmRsZShvcHRpb25zLmVudHJ5cG9pbnQsIHtcbiAgICAgIHBsYXRmb3JtOiBidW5kbGVyUnVudGltZS5lc2J1aWxkUGxhdGZvcm0sXG4gICAgICB0YXJnZXQ6IGJ1bmRsZXJSdW50aW1lLmVzYnVpbGRUYXJnZXQsXG4gICAgICBleHRlcm5hbHM6IFtcImF3cy1zZGtcIl0sXG4gICAgICBvdXRmaWxlOiBgZXh0ZW5zaW9ucy8ke25hbWV9YCxcbiAgICAgIC8vIE1ha2UgdGhlIG91dHB1dCBleGVjdXRhYmxlIGJlY2F1c2UgTGFtYmRhIGV4cGVjdHMgdG8gcnVuXG4gICAgICAvLyBleHRlbnNpb25zIGFzIHN0YW5kLWFsb25lIHByb2dyYW1zIGFsb25nc2lkZSB0aGUgbWFpbiBsYW1iZGFcbiAgICAgIC8vIHByb2Nlc3MuXG4gICAgICBleGVjdXRhYmxlOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucy5idW5kbGluZ09wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID1cbiAgICAgIG9wdGlvbnMuY29uc3RydWN0RmlsZSA/PyBgJHtiYXNlUGF0aH0tbGF5ZXItdmVyc2lvbi50c2A7XG5cbiAgICBuZXcgTGFtYmRhTGF5ZXJDb25zdHJ1Y3QocHJvamVjdCwge1xuICAgICAgY29uc3RydWN0RmlsZTogY29uc3RydWN0RmlsZSxcbiAgICAgIGNvbnN0cnVjdE5hbWU6IG9wdGlvbnMuY29uc3RydWN0TmFtZSxcbiAgICAgIGFzc2V0RGlyOiBidW5kbGUub3V0ZGlyLFxuICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBjb21wYXRpYmxlUnVudGltZXMsXG4gICAgICBkZXNjcmlwdGlvbjogYFByb3ZpZGVzIGEgTGFtYmRhIEV4dGVuc2lvbiBcXGAke25hbWV9XFxgIGZyb20gJHtjb252ZXJ0VG9Qb3NpeFBhdGgoXG4gICAgICAgIG9wdGlvbnMuZW50cnlwb2ludFxuICAgICAgKX1gLFxuICAgICAgY2RrRGVwczogb3B0aW9ucy5jZGtEZXBzLFxuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBMYW1iZGFMYXllckNvbnN0cnVjdE9wdGlvbnMge1xuICByZWFkb25seSBhc3NldERpcjogc3RyaW5nO1xuICByZWFkb25seSBjb21wYXRpYmxlUnVudGltZXM6IExhbWJkYVJ1bnRpbWVbXTtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY29uc3RydWN0RmlsZTogc3RyaW5nO1xuICByZWFkb25seSBjb25zdHJ1Y3ROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xufVxuXG5jbGFzcyBMYW1iZGFMYXllckNvbnN0cnVjdCBleHRlbmRzIFNvdXJjZUNvZGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFMYXllckNvbnN0cnVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBvcHRpb25zLmNvbnN0cnVjdEZpbGUpO1xuXG4gICAgY29uc3Qgc3JjID0gdGhpcztcbiAgICBjb25zdCBjZGtEZXBzID0gb3B0aW9ucy5jZGtEZXBzO1xuXG4gICAgY29uc3QgY29uc3RydWN0TmFtZSA9XG4gICAgICBvcHRpb25zLmNvbnN0cnVjdE5hbWUgPz8gcGFzY2FsKGJhc2VuYW1lKG9wdGlvbnMuY29uc3RydWN0RmlsZSwgXCIudHNcIikpO1xuICAgIGNvbnN0IHByb3BzVHlwZSA9IGAke2NvbnN0cnVjdE5hbWV9UHJvcHNgO1xuXG4gICAgY29uc3QgYXNzZXREaXIgPSByZWxhdGl2ZShkaXJuYW1lKG9wdGlvbnMuY29uc3RydWN0RmlsZSksIG9wdGlvbnMuYXNzZXREaXIpO1xuXG4gICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgfVxuICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcIik7XG5cbiAgICBpZiAoY2RrRGVwcy5jZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnO1wiKTtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XCIpO1xuICAgICAgY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyhcIkBhd3MtY2RrL2F3cy1sYW1iZGFcIik7XG4gICAgICBjZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKFwiQGF3cy1jZGsvY29yZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XCIpO1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIik7XG4gICAgfVxuXG4gICAgc3JjLmxpbmUoKTtcblxuICAgIHNyYy5saW5lKFwiLyoqXCIpO1xuICAgIHNyYy5saW5lKGAgKiBQcm9wcyBmb3IgJHtjb25zdHJ1Y3ROYW1lfWApO1xuICAgIHNyYy5saW5lKFwiICovXCIpO1xuICAgIHNyYy5vcGVuKFxuICAgICAgYGV4cG9ydCBpbnRlcmZhY2UgJHtwcm9wc1R5cGV9IGV4dGVuZHMgbGFtYmRhLkxheWVyVmVyc2lvbk9wdGlvbnMge2BcbiAgICApO1xuICAgIHNyYy5jbG9zZShcIn1cIik7XG4gICAgc3JjLmxpbmUoKTtcblxuICAgIHNyYy5saW5lKFwiLyoqXCIpO1xuICAgIHNyYy5saW5lKGAgKiAke29wdGlvbnMuZGVzY3JpcHRpb259YCk7XG4gICAgc3JjLmxpbmUoXCIgKi9cIik7XG4gICAgc3JjLm9wZW4oYGV4cG9ydCBjbGFzcyAke2NvbnN0cnVjdE5hbWV9IGV4dGVuZHMgbGFtYmRhLkxheWVyVmVyc2lvbiB7YCk7XG4gICAgc3JjLm9wZW4oXG4gICAgICBgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiAke3Byb3BzVHlwZX0pIHtgXG4gICAgKTtcblxuICAgIHNyYy5vcGVuKFwic3VwZXIoc2NvcGUsIGlkLCB7XCIpO1xuICAgIHNyYy5saW5lKGBkZXNjcmlwdGlvbjogJHtlbmNvZGVDb2RlU3RyaW5nKG9wdGlvbnMuZGVzY3JpcHRpb24pfSxgKTtcbiAgICBzcmMubGluZShcIi4uLnByb3BzLFwiKTtcblxuICAgIHNyYy5vcGVuKFwiY29tcGF0aWJsZVJ1bnRpbWVzOiBbXCIpO1xuICAgIGZvciAoY29uc3QgcnVudGltZSBvZiBvcHRpb25zLmNvbXBhdGlibGVSdW50aW1lcykge1xuICAgICAgc3JjLmxpbmUoYGxhbWJkYS5SdW50aW1lLiR7cnVudGltZS5mdW5jdGlvblJ1bnRpbWV9LGApO1xuICAgIH1cbiAgICBzcmMuY2xvc2UoXCJdLFwiKTtcblxuICAgIHNyYy5vcGVuKGBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSxgKTtcbiAgICBzcmMubGluZShgJHtlbmNvZGVDb2RlU3RyaW5nKGNvbnZlcnRUb1Bvc2l4UGF0aChhc3NldERpcikpfSkpLGApO1xuICAgIHNyYy5jbG9zZSgpO1xuICAgIHNyYy5jbG9zZShcIn0pO1wiKTtcblxuICAgIHNyYy5jbG9zZShcIn1cIik7XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcbiAgfVxufVxuXG4vKipcbiAqIEVuY29kZXMgYSBzdHJpbmcgZm9yIGVtYmVkZGluZyBpbiBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlQ29kZVN0cmluZyh2YWx1ZTogc3RyaW5nKSB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIGNvbnN0IGVzY2FwZWRTdHJpbmcgPSBqc29uLnN1YnN0cmluZygxLCBqc29uLmxlbmd0aCAtIDEpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKTtcbiAgcmV0dXJuIGAnJHtlc2NhcGVkU3RyaW5nfSdgO1xufVxuIl19