projen 0.31.18 → 0.32.2

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 (143) hide show
  1. package/.jsii +2150 -444
  2. package/API.md +735 -78
  3. package/README.md +1 -0
  4. package/docs/aws-lambda.md +103 -0
  5. package/docs/programmatic-api.md +56 -0
  6. package/lib/awscdk/auto-discover.d.ts +46 -0
  7. package/lib/awscdk/auto-discover.js +46 -0
  8. package/lib/awscdk/cdk-config.d.ts +103 -0
  9. package/lib/awscdk/cdk-config.js +56 -0
  10. package/lib/awscdk/cdk-tasks.d.ts +38 -0
  11. package/lib/awscdk/cdk-tasks.js +39 -0
  12. package/lib/awscdk/index.d.ts +5 -0
  13. package/lib/awscdk/index.js +18 -0
  14. package/lib/awscdk/internal.d.ts +8 -0
  15. package/lib/awscdk/internal.js +26 -0
  16. package/lib/awscdk/java-app.d.ts +92 -0
  17. package/lib/awscdk/java-app.js +90 -0
  18. package/lib/awscdk/lambda-function.d.ts +146 -0
  19. package/lib/awscdk/lambda-function.js +160 -0
  20. package/lib/awscdk-app-ts.d.ts +22 -40
  21. package/lib/awscdk-app-ts.js +21 -46
  22. package/lib/awscdk-construct.d.ts +15 -58
  23. package/lib/awscdk-construct.js +13 -62
  24. package/lib/cdk8s-app-ts.js +1 -1
  25. package/lib/cdk8s-construct.js +1 -1
  26. package/lib/cdktf-construct.js +1 -1
  27. package/lib/cli/cmds/new.js +23 -65
  28. package/lib/cli/util.d.ts +19 -0
  29. package/lib/cli/util.js +52 -0
  30. package/lib/common.js +6 -2
  31. package/lib/component.js +1 -1
  32. package/lib/construct-lib.js +1 -1
  33. package/lib/deps/dependencies.js +1 -1
  34. package/lib/dev-env.js +1 -1
  35. package/lib/docker-compose.js +2 -2
  36. package/lib/eslint.d.ts +18 -0
  37. package/lib/eslint.js +17 -5
  38. package/lib/file.js +1 -1
  39. package/lib/git/gitattributes.js +1 -1
  40. package/lib/github/auto-approve.js +1 -1
  41. package/lib/github/auto-merge.js +1 -1
  42. package/lib/github/dependabot.js +1 -1
  43. package/lib/github/github.js +1 -1
  44. package/lib/github/mergify.js +1 -1
  45. package/lib/github/pr-template.js +1 -1
  46. package/lib/github/stale.js +1 -1
  47. package/lib/github/task-workflow.js +1 -1
  48. package/lib/github/workflows.js +4 -5
  49. package/lib/gitpod.js +1 -1
  50. package/lib/ignore-file.js +1 -1
  51. package/lib/index.d.ts +2 -0
  52. package/lib/index.js +3 -1
  53. package/lib/ini.js +1 -1
  54. package/lib/inventory.d.ts +15 -3
  55. package/lib/inventory.js +53 -29
  56. package/lib/java/java-project.d.ts +28 -14
  57. package/lib/java/java-project.js +3 -2
  58. package/lib/java/junit.js +1 -1
  59. package/lib/java/maven-compile.js +1 -1
  60. package/lib/java/maven-packaging.js +1 -1
  61. package/lib/java/maven-sample.js +1 -1
  62. package/lib/java/pom.js +1 -1
  63. package/lib/java/projenrc.js +1 -1
  64. package/lib/javascript/bundler.d.ts +144 -0
  65. package/lib/javascript/bundler.js +93 -0
  66. package/lib/javascript/index.d.ts +1 -0
  67. package/lib/javascript/index.js +2 -1
  68. package/lib/javascript/npm-config.js +1 -1
  69. package/lib/javascript/projenrc.js +3 -3
  70. package/lib/javascript/render-options.d.ts +5 -0
  71. package/lib/javascript/render-options.js +24 -21
  72. package/lib/jest.js +1 -1
  73. package/lib/jsii-project.js +1 -1
  74. package/lib/json/projenrc.js +1 -1
  75. package/lib/json/run-projenrc.task.js +6 -11
  76. package/lib/json.js +1 -1
  77. package/lib/license.js +1 -1
  78. package/lib/logger.js +1 -1
  79. package/lib/makefile.js +1 -1
  80. package/lib/node-package.js +1 -1
  81. package/lib/node-project.d.ts +11 -1
  82. package/lib/node-project.js +9 -4
  83. package/lib/object-file.js +1 -1
  84. package/lib/project.js +2 -2
  85. package/lib/projects.d.ts +80 -0
  86. package/lib/projects.js +81 -0
  87. package/lib/python/pip.js +1 -1
  88. package/lib/python/poetry.js +2 -2
  89. package/lib/python/projenrc.js +4 -5
  90. package/lib/python/pytest.js +1 -1
  91. package/lib/python/python-project.js +1 -1
  92. package/lib/python/python-sample.js +1 -1
  93. package/lib/python/requirements-file.js +1 -1
  94. package/lib/python/setuppy.js +1 -1
  95. package/lib/python/setuptools.js +1 -1
  96. package/lib/python/venv.js +1 -1
  97. package/lib/readme.js +1 -1
  98. package/lib/release/publisher.js +1 -1
  99. package/lib/release/release-trigger.js +1 -1
  100. package/lib/release/release.js +1 -1
  101. package/lib/sample-file.js +2 -2
  102. package/lib/semver.js +1 -1
  103. package/lib/source-code.js +1 -1
  104. package/lib/tasks/runtime.js +1 -1
  105. package/lib/tasks/task.js +1 -1
  106. package/lib/tasks/tasks.js +1 -1
  107. package/lib/textfile.js +1 -1
  108. package/lib/toml.js +1 -1
  109. package/lib/typescript/projenrc.js +3 -3
  110. package/lib/typescript-config.js +1 -1
  111. package/lib/typescript.js +3 -3
  112. package/lib/upgrade-dependencies.js +2 -2
  113. package/lib/util/synth.d.ts +4 -0
  114. package/lib/util/synth.js +35 -2
  115. package/lib/util.js +11 -3
  116. package/lib/version.js +1 -1
  117. package/lib/vscode/devcontainer.js +1 -1
  118. package/lib/vscode/launch-config.js +1 -1
  119. package/lib/vscode/vscode.js +1 -1
  120. package/lib/web/next.js +3 -3
  121. package/lib/web/postcss.js +1 -1
  122. package/lib/web/react.js +4 -4
  123. package/lib/web/tailwind.js +1 -1
  124. package/lib/xmlfile.js +1 -1
  125. package/lib/yaml.js +1 -1
  126. package/node_modules/case/LICENSE +22 -0
  127. package/node_modules/case/README.md +139 -0
  128. package/node_modules/case/case.d.ts +43 -0
  129. package/node_modules/case/dist/Case.js +171 -0
  130. package/node_modules/case/dist/Case.min.js +5 -0
  131. package/node_modules/case/dist/Case.min.js.map +1 -0
  132. package/node_modules/case/dist/Case.plus.js +189 -0
  133. package/node_modules/case/dist/Case.plus.min.js +5 -0
  134. package/node_modules/case/dist/Case.plus.min.js.map +1 -0
  135. package/node_modules/case/package.json +58 -0
  136. package/package.json +4 -4
  137. package/lib/cli/create.d.ts +0 -41
  138. package/lib/cli/create.js +0 -48
  139. package/node_modules/decamelize/index.d.ts +0 -20
  140. package/node_modules/decamelize/index.js +0 -12
  141. package/node_modules/decamelize/license +0 -9
  142. package/node_modules/decamelize/package.json +0 -40
  143. package/node_modules/decamelize/readme.md +0 -51
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AwsCdkJavaApp = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const path_1 = require("path");
7
+ const semver = require("semver");
8
+ const __1 = require("..");
9
+ const java_1 = require("../java");
10
+ const cdk_config_1 = require("./cdk-config");
11
+ const cdk_tasks_1 = require("./cdk-tasks");
12
+ /**
13
+ * (experimental) AWS CDK app in Java.
14
+ *
15
+ * @experimental
16
+ * @pjid awscdk-app-java
17
+ */
18
+ class AwsCdkJavaApp extends java_1.JavaProject {
19
+ /**
20
+ * @experimental
21
+ */
22
+ constructor(options) {
23
+ var _b, _c, _d;
24
+ const mainClassComponents = options.mainClass.split('.');
25
+ const mainPackage = mainClassComponents.slice(0, -1);
26
+ const mainClassName = mainClassComponents[mainClassComponents.length - 1];
27
+ super({
28
+ ...options,
29
+ sample: false,
30
+ sampleJavaPackage: mainPackage.join('.'),
31
+ });
32
+ this.mainClass = options.mainClass;
33
+ this.mainPackage = mainPackage.join('.');
34
+ this.mainClassName = mainClassName;
35
+ this.cdkVersion = options.cdkVersion;
36
+ if (!this.cdkVersion) {
37
+ throw new Error('Required field cdkVersion is not specified.');
38
+ }
39
+ const cdkMajorVersion = (_c = (_b = semver.minVersion(this.cdkVersion)) === null || _b === void 0 ? void 0 : _b.major) !== null && _c !== void 0 ? _c : 1;
40
+ if (cdkMajorVersion >= 2) {
41
+ throw new Error('CDKv2 is still not supported');
42
+ }
43
+ this.addCdkDependency('core');
44
+ this.addCdkDependency(...(_d = options.cdkDependencies) !== null && _d !== void 0 ? _d : []);
45
+ this.cdkTasks = new cdk_tasks_1.CdkTasks(this);
46
+ this.buildTask.spawn(this.cdkTasks.synth);
47
+ this.cdkConfig = new cdk_config_1.CdkConfig(this, {
48
+ app: `mvn exec:java --quiet -Dexec.mainClass=${this.mainClass}`,
49
+ ...options,
50
+ });
51
+ this.addSample();
52
+ }
53
+ /**
54
+ * (experimental) Adds an AWS CDK module dependencies.
55
+ *
56
+ * @param modules The list of modules to depend on (e.g. "core", "aws-lambda", etc).
57
+ * @experimental
58
+ */
59
+ addCdkDependency(...modules) {
60
+ for (const m of modules) {
61
+ this.addDependency(`software.amazon.awscdk/${m}@${this.cdkVersion}`);
62
+ }
63
+ }
64
+ addSample() {
65
+ const pkg = this.mainPackage.split('.');
66
+ const javaFile = `${this.mainClassName}.java`;
67
+ new __1.SampleDir(this, path_1.join('src', 'main', 'java', ...pkg), {
68
+ files: {
69
+ [javaFile]: [
70
+ `package ${pkg.join('.')};`,
71
+ '',
72
+ 'import software.amazon.awscdk.core.App;',
73
+ 'import software.amazon.awscdk.core.Stack;',
74
+ '',
75
+ `public class ${this.mainClassName} {`,
76
+ ' public static void main(final String[] args) {',
77
+ ' App app = new App();',
78
+ ' new Stack(app, "MyStack");',
79
+ ' app.synth();',
80
+ ' }',
81
+ '}',
82
+ ].join('\n'),
83
+ },
84
+ });
85
+ }
86
+ }
87
+ exports.AwsCdkJavaApp = AwsCdkJavaApp;
88
+ _a = JSII_RTTI_SYMBOL_1;
89
+ AwsCdkJavaApp[_a] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.32.2" };
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1hcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2phdmEtYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLGlDQUFpQztBQUNqQywwQkFBK0I7QUFDL0Isa0NBQTBEO0FBQzFELDZDQUFpRTtBQUNqRSwyQ0FBdUM7Ozs7Ozs7QUFjdkMsTUFBYSxhQUFjLFNBQVEsa0JBQVc7Ozs7SUFtQjVDLFlBQVksT0FBNkI7O1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxRSxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsS0FBSztZQUNiLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUVELE1BQU0sZUFBZSxlQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQztRQUN2RSxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFHLE9BQU8sQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFO1lBQ25DLEdBQUcsRUFBRSwwQ0FBMEMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMvRCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7OztJQUdNLGdCQUFnQixDQUFDLEdBQUcsT0FBaUI7UUFDMUMsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLE9BQU8sQ0FBQztRQUM5QyxJQUFJLGFBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdkQsS0FBSyxFQUFFO2dCQUNMLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ1YsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO29CQUMzQixFQUFFO29CQUNGLHlDQUF5QztvQkFDekMsMkNBQTJDO29CQUMzQyxFQUFFO29CQUNGLGdCQUFnQixJQUFJLENBQUMsYUFBYSxJQUFJO29CQUN0QyxrREFBa0Q7b0JBQ2xELDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyxrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsR0FBRztpQkFDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDYjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEZILHNDQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgSmF2YVByb2plY3QsIEphdmFQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL2phdmEnO1xuaW1wb3J0IHsgQ2RrQ29uZmlnLCBDZGtDb25maWdDb21tb25PcHRpb25zIH0gZnJvbSAnLi9jZGstY29uZmlnJztcbmltcG9ydCB7IENka1Rhc2tzIH0gZnJvbSAnLi9jZGstdGFza3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0phdmFBcHBPcHRpb25zIGV4dGVuZHMgSmF2YVByb2plY3RPcHRpb25zLCBDZGtDb25maWdDb21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka1ZlcnNpb246IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWFpbkNsYXNzOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXdzQ2RrSmF2YUFwcCBleHRlbmRzIEphdmFQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtDb25maWc6IENka0NvbmZpZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBtYWluQ2xhc3M6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjZGtUYXNrczogQ2RrVGFza3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgbWFpblBhY2thZ2U6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgbWFpbkNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0phdmFBcHBPcHRpb25zKSB7XG4gICAgY29uc3QgbWFpbkNsYXNzQ29tcG9uZW50cyA9IG9wdGlvbnMubWFpbkNsYXNzLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgbWFpblBhY2thZ2UgPSBtYWluQ2xhc3NDb21wb25lbnRzLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCBtYWluQ2xhc3NOYW1lID0gbWFpbkNsYXNzQ29tcG9uZW50c1ttYWluQ2xhc3NDb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNhbXBsZTogZmFsc2UsXG4gICAgICBzYW1wbGVKYXZhUGFja2FnZTogbWFpblBhY2thZ2Uuam9pbignLicpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tYWluQ2xhc3MgPSBvcHRpb25zLm1haW5DbGFzcztcbiAgICB0aGlzLm1haW5QYWNrYWdlID0gbWFpblBhY2thZ2Uuam9pbignLicpO1xuICAgIHRoaXMubWFpbkNsYXNzTmFtZSA9IG1haW5DbGFzc05hbWU7XG4gICAgdGhpcy5jZGtWZXJzaW9uID0gb3B0aW9ucy5jZGtWZXJzaW9uO1xuXG4gICAgaWYgKCF0aGlzLmNka1ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgZmllbGQgY2RrVmVyc2lvbiBpcyBub3Qgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNka01ham9yVmVyc2lvbiA9IHNlbXZlci5taW5WZXJzaW9uKHRoaXMuY2RrVmVyc2lvbik/Lm1ham9yID8/IDE7XG4gICAgaWYgKGNka01ham9yVmVyc2lvbiA+PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NES3YyIGlzIHN0aWxsIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koJ2NvcmUnKTtcbiAgICB0aGlzLmFkZENka0RlcGVuZGVuY3koLi4ub3B0aW9ucy5jZGtEZXBlbmRlbmNpZXMgPz8gW10pO1xuXG4gICAgdGhpcy5jZGtUYXNrcyA9IG5ldyBDZGtUYXNrcyh0aGlzKTtcbiAgICB0aGlzLmJ1aWxkVGFzay5zcGF3bih0aGlzLmNka1Rhc2tzLnN5bnRoKTtcblxuICAgIHRoaXMuY2RrQ29uZmlnID0gbmV3IENka0NvbmZpZyh0aGlzLCB7XG4gICAgICBhcHA6IGBtdm4gZXhlYzpqYXZhIC0tcXVpZXQgLURleGVjLm1haW5DbGFzcz0ke3RoaXMubWFpbkNsYXNzfWAsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRTYW1wbGUoKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkQ2RrRGVwZW5kZW5jeSguLi5tb2R1bGVzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3QgbSBvZiBtb2R1bGVzKSB7XG4gICAgICB0aGlzLmFkZERlcGVuZGVuY3koYHNvZnR3YXJlLmFtYXpvbi5hd3NjZGsvJHttfUAke3RoaXMuY2RrVmVyc2lvbn1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFNhbXBsZSgpIHtcbiAgICBjb25zdCBwa2cgPSB0aGlzLm1haW5QYWNrYWdlLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgamF2YUZpbGUgPSBgJHt0aGlzLm1haW5DbGFzc05hbWV9LmphdmFgO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgam9pbignc3JjJywgJ21haW4nLCAnamF2YScsIC4uLnBrZyksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFtqYXZhRmlsZV06IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZy5qb2luKCcuJyl9O2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2ltcG9ydCBzb2Z0d2FyZS5hbWF6b24uYXdzY2RrLmNvcmUuQXBwOycsXG4gICAgICAgICAgJ2ltcG9ydCBzb2Z0d2FyZS5hbWF6b24uYXdzY2RrLmNvcmUuU3RhY2s7JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgcHVibGljIGNsYXNzICR7dGhpcy5tYWluQ2xhc3NOYW1lfSB7YCxcbiAgICAgICAgICAnICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7JyxcbiAgICAgICAgICAnICAgIEFwcCBhcHAgPSBuZXcgQXBwKCk7JyxcbiAgICAgICAgICAnICAgIG5ldyBTdGFjayhhcHAsIFwiTXlTdGFja1wiKTsnLFxuICAgICAgICAgICcgICAgYXBwLnN5bnRoKCk7JyxcbiAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,146 @@
1
+ import { Project } from '..';
2
+ import { Component } from '../component';
3
+ import { Task } from '../tasks';
4
+ /**
5
+ * (experimental) Common options for `LambdaFunction`.
6
+ *
7
+ * Applies to all functions in
8
+ * auto-discovery.
9
+ *
10
+ * @experimental
11
+ */
12
+ export interface LambdaFunctionCommonOptions {
13
+ /**
14
+ * (experimental) The node.js version to target.
15
+ *
16
+ * @default Runtime.NODEJS_14_X
17
+ * @experimental
18
+ */
19
+ readonly runtime?: LambdaRuntime;
20
+ /**
21
+ * (experimental) Names of modules which should not be included in the bundle.
22
+ *
23
+ * @default - by default, the "aws-sdk" module will be excluded from the
24
+ * bundle. Note that if you use this option you will need to add "aws-sdk"
25
+ * explicitly.
26
+ * @experimental
27
+ */
28
+ readonly externals?: string[];
29
+ }
30
+ /**
31
+ * (experimental) Options for `Function`.
32
+ *
33
+ * @experimental
34
+ */
35
+ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
36
+ /**
37
+ * (experimental) A path from the project root directory to a TypeScript file which contains the AWS Lambda handler entrypoint (exports a `handler` function).
38
+ *
39
+ * @experimental
40
+ */
41
+ readonly entrypoint: string;
42
+ /**
43
+ * (experimental) The name of the generated TypeScript source file.
44
+ *
45
+ * @default - The name of the entrypoint file, with the `-function.ts` suffix
46
+ * instead of `.lambda.ts`.
47
+ * @experimental
48
+ */
49
+ readonly constructFile?: string;
50
+ /**
51
+ * (experimental) The name of the generated `lambda.Function` subclass.
52
+ *
53
+ * @default - A pascal cased version of the name of the entrypoint file, with
54
+ * the extension `Function` (e.g. `ResizeImageFunction`).
55
+ * @experimental
56
+ */
57
+ readonly constructName?: string;
58
+ /**
59
+ * (experimental) Project source directory tree (where .ts files live).
60
+ *
61
+ * @experimental
62
+ */
63
+ readonly srcdir: string;
64
+ /**
65
+ * (experimental) JavaScript output directory (where .js files go).
66
+ *
67
+ * @experimental
68
+ */
69
+ readonly libdir: string;
70
+ }
71
+ /**
72
+ * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
73
+ *
74
+ * To use this, create an AWS Lambda handler file under your source tree with
75
+ * the `.lambda.ts` extension and add a `LambdaFunction` component to your
76
+ * typescript project pointing to this entrypoint.
77
+ *
78
+ * This will add a task to your "compile" step which will use `esbuild` to
79
+ * bundle the handler code into the build directory. It will also generate a
80
+ * file `src/foo-function.ts` with a custom AWS construct called `FooFunction`
81
+ * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
82
+ * handle through an asset.
83
+ *
84
+ * @experimental
85
+ * @example
86
+ *
87
+ * new LambdaFunction(myProject, {
88
+ * entrypoint: 'src/foo.lambda.ts',
89
+ * srcdir: myProject.srcdir,
90
+ * libdir: myProject.libdir,
91
+ * });
92
+ */
93
+ export declare class LambdaFunction extends Component {
94
+ /**
95
+ * (experimental) The bundle task for this function.
96
+ *
97
+ * @experimental
98
+ */
99
+ readonly bundleTask: Task;
100
+ /**
101
+ * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
102
+ *
103
+ * @param project The project to use.
104
+ * @param options Options.
105
+ * @experimental
106
+ */
107
+ constructor(project: Project, options: LambdaFunctionOptions);
108
+ }
109
+ /**
110
+ * (experimental) The runtime for the AWS Lambda function.
111
+ *
112
+ * @experimental
113
+ */
114
+ export declare class LambdaRuntime {
115
+ /**
116
+ * The aws-lambda.Runtime member name to use.
117
+ */
118
+ readonly functionRuntime: string;
119
+ /**
120
+ * The esbuild setting to use.
121
+ */
122
+ readonly esbuildTarget: string;
123
+ /**
124
+ * (experimental) Node.js 10.x.
125
+ *
126
+ * @experimental
127
+ */
128
+ static readonly NODEJS_10_X: LambdaRuntime;
129
+ /**
130
+ * (experimental) Node.js 12.x.
131
+ *
132
+ * @experimental
133
+ */
134
+ static readonly NODEJS_12_X: LambdaRuntime;
135
+ /**
136
+ * (experimental) Node.js 14.x.
137
+ *
138
+ * @experimental
139
+ */
140
+ static readonly NODEJS_14_X: LambdaRuntime;
141
+ /**
142
+ * @experimental
143
+ */
144
+ readonly esbuildPlatform = "node";
145
+ private constructor();
146
+ }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LambdaRuntime = exports.LambdaFunction = 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 __1 = require("..");
9
+ const component_1 = require("../component");
10
+ const file_1 = require("../file");
11
+ const bundler_1 = require("../javascript/bundler");
12
+ const source_code_1 = require("../source-code");
13
+ const internal_1 = require("./internal");
14
+ /**
15
+ * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
16
+ *
17
+ * To use this, create an AWS Lambda handler file under your source tree with
18
+ * the `.lambda.ts` extension and add a `LambdaFunction` component to your
19
+ * typescript project pointing to this entrypoint.
20
+ *
21
+ * This will add a task to your "compile" step which will use `esbuild` to
22
+ * bundle the handler code into the build directory. It will also generate a
23
+ * file `src/foo-function.ts` with a custom AWS construct called `FooFunction`
24
+ * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
25
+ * handle through an asset.
26
+ *
27
+ * @experimental
28
+ * @example
29
+ *
30
+ * new LambdaFunction(myProject, {
31
+ * entrypoint: 'src/foo.lambda.ts',
32
+ * srcdir: myProject.srcdir,
33
+ * libdir: myProject.libdir,
34
+ * });
35
+ */
36
+ class LambdaFunction extends component_1.Component {
37
+ /**
38
+ * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
39
+ *
40
+ * @param project The project to use.
41
+ * @param options Options.
42
+ * @experimental
43
+ */
44
+ constructor(project, options) {
45
+ var _c, _d, _e, _f;
46
+ super(project);
47
+ const bundler = bundler_1.Bundler.of(project);
48
+ if (!bundler) {
49
+ throw new Error('No bundler found. Please add a Bundler component to your project.');
50
+ }
51
+ const runtime = (_c = options.runtime) !== null && _c !== void 0 ? _c : LambdaRuntime.NODEJS_14_X;
52
+ // make sure entrypoint is within the source directory
53
+ if (!options.entrypoint.startsWith(options.srcdir)) {
54
+ throw new Error(`${options.entrypoint} must be under ${options.srcdir}`);
55
+ }
56
+ // allow Lambda handler code to import dev-deps since they are only needed
57
+ // during bundling
58
+ const eslint = __1.Eslint.of(project);
59
+ eslint === null || eslint === void 0 ? void 0 : eslint.allowDevDeps(options.entrypoint);
60
+ const entrypoint = path_1.relative(options.srcdir, options.entrypoint);
61
+ if (!entrypoint.endsWith(internal_1.TYPESCRIPT_LAMBDA_EXT)) {
62
+ throw new Error(`${entrypoint} must have a ${internal_1.TYPESCRIPT_LAMBDA_EXT} extension`);
63
+ }
64
+ const basePath = path_1.join(path_1.dirname(entrypoint), path_1.basename(entrypoint, internal_1.TYPESCRIPT_LAMBDA_EXT));
65
+ const constructFile = (_d = options.constructFile) !== null && _d !== void 0 ? _d : `${basePath}-function.ts`;
66
+ const constructFilePath = path_1.join(options.srcdir, constructFile);
67
+ if (path_1.extname(constructFilePath) !== '.ts') {
68
+ throw new Error(`Construct file name "${constructFile}" must have a .ts extension`);
69
+ }
70
+ const bundledirName = `${basePath}.lambda.bundle`;
71
+ // type names
72
+ const constructName = (_e = options.constructName) !== null && _e !== void 0 ? _e : case_1.pascal(path_1.basename(basePath)) + 'Function';
73
+ const propsType = `${constructName}Props`;
74
+ const src = new source_code_1.SourceCode(project, constructFilePath);
75
+ src.line(`// ${file_1.FileBase.PROJEN_MARKER}`);
76
+ src.line('import * as path from \'path\';');
77
+ src.line('import * as lambda from \'@aws-cdk/aws-lambda\';');
78
+ src.line('import { Construct } from \'@aws-cdk/core\';');
79
+ src.line();
80
+ src.line('/**');
81
+ src.line(` * Props for ${constructName}`);
82
+ src.line(' */');
83
+ src.open(`export interface ${propsType} extends lambda.FunctionOptions {`);
84
+ src.close('}');
85
+ src.line();
86
+ src.line('/**');
87
+ src.line(` * An AWS Lambda function which executes ${basePath}.`);
88
+ src.line(' */');
89
+ src.open(`export class ${constructName} extends lambda.Function {`);
90
+ src.open(`constructor(scope: Construct, id: string, props?: ${propsType}) {`);
91
+ src.open('super(scope, id, {');
92
+ src.line(`description: '${entrypoint}',`);
93
+ src.line('...props,');
94
+ src.line(`runtime: lambda.Runtime.${runtime.functionRuntime},`);
95
+ src.line('handler: \'index.handler\',');
96
+ src.line(`code: lambda.Code.fromAsset(path.join(__dirname, '${path_1.basename(bundledirName)}')),`);
97
+ src.close('});');
98
+ src.close('}');
99
+ src.close('}');
100
+ const entry = path_1.join(options.srcdir, entrypoint);
101
+ const outfile = path_1.join(options.libdir, bundledirName, 'index.js');
102
+ this.bundleTask = bundler.addBundle(basePath, {
103
+ entrypoint: entry,
104
+ outfile: outfile,
105
+ target: runtime.esbuildTarget,
106
+ platform: runtime.esbuildPlatform,
107
+ externals: (_f = options.externals) !== null && _f !== void 0 ? _f : ['aws-sdk'],
108
+ });
109
+ this.project.logger.info(`${basePath}: construct "${constructName}" generated under "${constructFilePath}"`);
110
+ this.project.logger.info(`${basePath}: bundle task "${this.bundleTask.name}"`);
111
+ }
112
+ }
113
+ exports.LambdaFunction = LambdaFunction;
114
+ _a = JSII_RTTI_SYMBOL_1;
115
+ LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.32.2" };
116
+ /**
117
+ * (experimental) The runtime for the AWS Lambda function.
118
+ *
119
+ * @experimental
120
+ */
121
+ class LambdaRuntime {
122
+ constructor(
123
+ /**
124
+ * The aws-lambda.Runtime member name to use.
125
+ */
126
+ functionRuntime,
127
+ /**
128
+ * The esbuild setting to use.
129
+ */
130
+ esbuildTarget) {
131
+ this.functionRuntime = functionRuntime;
132
+ this.esbuildTarget = esbuildTarget;
133
+ /**
134
+ * @experimental
135
+ */
136
+ this.esbuildPlatform = 'node';
137
+ }
138
+ }
139
+ exports.LambdaRuntime = LambdaRuntime;
140
+ _b = JSII_RTTI_SYMBOL_1;
141
+ LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.32.2" };
142
+ /**
143
+ * (experimental) Node.js 10.x.
144
+ *
145
+ * @experimental
146
+ */
147
+ LambdaRuntime.NODEJS_10_X = new LambdaRuntime('NODEJS_10_X', 'node10');
148
+ /**
149
+ * (experimental) Node.js 12.x.
150
+ *
151
+ * @experimental
152
+ */
153
+ LambdaRuntime.NODEJS_12_X = new LambdaRuntime('NODEJS_12_X', 'node12');
154
+ /**
155
+ * (experimental) Node.js 14.x.
156
+ *
157
+ * @experimental
158
+ */
159
+ LambdaRuntime.NODEJS_14_X = new LambdaRuntime('NODEJS_14_X', 'node14');
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9sYW1iZGEtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBa0U7QUFDbEUsK0JBQThCO0FBQzlCLDBCQUFxQztBQUNyQyw0Q0FBeUM7QUFDekMsa0NBQW1DO0FBQ25DLG1EQUFnRDtBQUNoRCxnREFBNEM7QUFFNUMseUNBQW1EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCbkQsTUFBYSxjQUFlLFNBQVEscUJBQVM7Ozs7Ozs7O0lBSzNDLFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsaUJBQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztTQUN0RjtRQUVELE1BQU0sT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFFN0Qsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLGtCQUFrQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUMxRTtRQUVELDBFQUEwRTtRQUMxRSxrQkFBa0I7UUFDbEIsTUFBTSxNQUFNLEdBQUcsVUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFFekMsTUFBTSxVQUFVLEdBQUcsZUFBUSxDQUFDLE9B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QVcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7OztBQUd6RCx5QkFBVyxHQUFHLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQzs7Ozs7O0FBR3pELHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXNjYWwgfSBmcm9tICdjYXNlJztcbmltcG9ydCB7IEVzbGludCwgUHJvamVjdCB9IGZyb20gJy4uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlQmFzZSB9IGZyb20gJy4uL2ZpbGUnO1xuaW1wb3J0IHsgQnVuZGxlciB9IGZyb20gJy4uL2phdmFzY3JpcHQvYnVuZGxlcic7XG5pbXBvcnQgeyBTb3VyY2VDb2RlIH0gZnJvbSAnLi4vc291cmNlLWNvZGUnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzJztcbmltcG9ydCB7IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCB9IGZyb20gJy4vaW50ZXJuYWwnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBydW50aW1lPzogTGFtYmRhUnVudGltZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZXh0ZXJuYWxzPzogc3RyaW5nW107XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25PcHRpb25zIGV4dGVuZHMgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGliZGlyOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBMYW1iZGFGdW5jdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsZVRhc2s6IFRhc2s7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFGdW5jdGlvbk9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IGJ1bmRsZXIgPSBCdW5kbGVyLm9mKHByb2plY3QpO1xuICAgIGlmICghYnVuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBidW5kbGVyIGZvdW5kLiBQbGVhc2UgYWRkIGEgQnVuZGxlciBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBvcHRpb25zLnJ1bnRpbWUgPz8gTGFtYmRhUnVudGltZS5OT0RFSlNfMTRfWDtcblxuICAgIC8vIG1ha2Ugc3VyZSBlbnRyeXBvaW50IGlzIHdpdGhpbiB0aGUgc291cmNlIGRpcmVjdG9yeVxuICAgIGlmICghb3B0aW9ucy5lbnRyeXBvaW50LnN0YXJ0c1dpdGgob3B0aW9ucy5zcmNkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7b3B0aW9ucy5lbnRyeXBvaW50fSBtdXN0IGJlIHVuZGVyICR7b3B0aW9ucy5zcmNkaXJ9YCk7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgTGFtYmRhIGhhbmRsZXIgY29kZSB0byBpbXBvcnQgZGV2LWRlcHMgc2luY2UgdGhleSBhcmUgb25seSBuZWVkZWRcbiAgICAvLyBkdXJpbmcgYnVuZGxpbmdcbiAgICBjb25zdCBlc2xpbnQgPSBFc2xpbnQub2YocHJvamVjdCk7XG4gICAgZXNsaW50Py5hbGxvd0RldkRlcHMob3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSByZWxhdGl2ZShvcHRpb25zLnNyY2Rpciwgb3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgIGlmICghZW50cnlwb2ludC5lbmRzV2l0aChUWVBFU0NSSVBUX0xBTUJEQV9FWFQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZW50cnlwb2ludH0gbXVzdCBoYXZlIGEgJHtUWVBFU0NSSVBUX0xBTUJEQV9FWFR9IGV4dGVuc2lvbmApO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VQYXRoID0gam9pbihkaXJuYW1lKGVudHJ5cG9pbnQpLCBiYXNlbmFtZShlbnRyeXBvaW50LCBUWVBFU0NSSVBUX0xBTUJEQV9FWFQpKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID0gb3B0aW9ucy5jb25zdHJ1Y3RGaWxlID8/IGAke2Jhc2VQYXRofS1mdW5jdGlvbi50c2A7XG4gICAgY29uc3QgY29uc3RydWN0RmlsZVBhdGggPSBqb2luKG9wdGlvbnMuc3JjZGlyLCBjb25zdHJ1Y3RGaWxlKTtcblxuICAgIGlmIChleHRuYW1lKGNvbnN0cnVjdEZpbGVQYXRoKSAhPT0gJy50cycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uc3RydWN0IGZpbGUgbmFtZSBcIiR7Y29uc3RydWN0RmlsZX1cIiBtdXN0IGhhdmUgYSAudHMgZXh0ZW5zaW9uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVuZGxlZGlyTmFtZSA9IGAke2Jhc2VQYXRofS5sYW1iZGEuYnVuZGxlYDtcblxuICAgIC8vIHR5cGUgbmFtZXNcbiAgICBjb25zdCBjb25zdHJ1Y3ROYW1lID0gb3B0aW9ucy5jb25zdHJ1Y3ROYW1lID8/IHBhc2NhbChiYXNlbmFtZShiYXNlUGF0aCkpICsgJ0Z1bmN0aW9uJztcbiAgICBjb25zdCBwcm9wc1R5cGUgPSBgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYDtcblxuICAgIGNvbnN0IHNyYyA9IG5ldyBTb3VyY2VDb2RlKHByb2plY3QsIGNvbnN0cnVjdEZpbGVQYXRoKTtcbiAgICBzcmMubGluZShgLy8gJHtGaWxlQmFzZS5QUk9KRU5fTUFSS0VSfWApO1xuICAgIHNyYy5saW5lKCdpbXBvcnQgKiBhcyBwYXRoIGZyb20gXFwncGF0aFxcJzsnKTtcbiAgICBzcmMubGluZSgnaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXFwnQGF3cy1jZGsvYXdzLWxhbWJkYVxcJzsnKTtcbiAgICBzcmMubGluZSgnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdAYXdzLWNkay9jb3JlXFwnOycpO1xuICAgIHNyYy5saW5lKCk7XG4gICAgc3JjLmxpbmUoJy8qKicpO1xuICAgIHNyYy5saW5lKGAgKiBQcm9wcyBmb3IgJHtjb25zdHJ1Y3ROYW1lfWApO1xuICAgIHNyYy5saW5lKCcgKi8nKTtcbiAgICBzcmMub3BlbihgZXhwb3J0IGludGVyZmFjZSAke3Byb3BzVHlwZX0gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtgKTtcbiAgICBzcmMuY2xvc2UoJ30nKTtcbiAgICBzcmMubGluZSgpO1xuICAgIHNyYy5saW5lKCcvKionKTtcbiAgICBzcmMubGluZShgICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyAke2Jhc2VQYXRofS5gKTtcbiAgICBzcmMubGluZSgnICovJyk7XG4gICAgc3JjLm9wZW4oYGV4cG9ydCBjbGFzcyAke2NvbnN0cnVjdE5hbWV9IGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtgKTtcbiAgICBzcmMub3BlbihgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiAke3Byb3BzVHlwZX0pIHtgKTtcbiAgICBzcmMub3Blbignc3VwZXIoc2NvcGUsIGlkLCB7Jyk7XG4gICAgc3JjLmxpbmUoYGRlc2NyaXB0aW9uOiAnJHtlbnRyeXBvaW50fScsYCk7XG4gICAgc3JjLmxpbmUoJy4uLnByb3BzLCcpO1xuICAgIHNyYy5saW5lKGBydW50aW1lOiBsYW1iZGEuUnVudGltZS4ke3J1bnRpbWUuZnVuY3Rpb25SdW50aW1lfSxgKTtcbiAgICBzcmMubGluZSgnaGFuZGxlcjogXFwnaW5kZXguaGFuZGxlclxcJywnKTtcbiAgICBzcmMubGluZShgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcke2Jhc2VuYW1lKGJ1bmRsZWRpck5hbWUpfScpKSxgKTtcbiAgICBzcmMuY2xvc2UoJ30pOycpO1xuICAgIHNyYy5jbG9zZSgnfScpO1xuICAgIHNyYy5jbG9zZSgnfScpO1xuXG4gICAgY29uc3QgZW50cnkgPSBqb2luKG9wdGlvbnMuc3JjZGlyLCBlbnRyeXBvaW50KTtcbiAgICBjb25zdCBvdXRmaWxlID0gam9pbihvcHRpb25zLmxpYmRpciwgYnVuZGxlZGlyTmFtZSwgJ2luZGV4LmpzJyk7XG5cbiAgICB0aGlzLmJ1bmRsZVRhc2sgPSBidW5kbGVyLmFkZEJ1bmRsZShiYXNlUGF0aCwge1xuICAgICAgZW50cnlwb2ludDogZW50cnksXG4gICAgICBvdXRmaWxlOiBvdXRmaWxlLFxuICAgICAgdGFyZ2V0OiBydW50aW1lLmVzYnVpbGRUYXJnZXQsXG4gICAgICBwbGF0Zm9ybTogcnVudGltZS5lc2J1aWxkUGxhdGZvcm0sXG4gICAgICBleHRlcm5hbHM6IG9wdGlvbnMuZXh0ZXJuYWxzID8/IFsnYXdzLXNkayddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKGAke2Jhc2VQYXRofTogY29uc3RydWN0IFwiJHtjb25zdHJ1Y3ROYW1lfVwiIGdlbmVyYXRlZCB1bmRlciBcIiR7Y29uc3RydWN0RmlsZVBhdGh9XCJgKTtcbiAgICB0aGlzLnByb2plY3QubG9nZ2VyLmluZm8oYCR7YmFzZVBhdGh9OiBidW5kbGUgdGFzayBcIiR7dGhpcy5idW5kbGVUYXNrLm5hbWV9XCJgKTtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBMYW1iZGFSdW50aW1lIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEwX1ggPSBuZXcgTGFtYmRhUnVudGltZSgnTk9ERUpTXzEwX1gnLCAnbm9kZTEwJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEyX1ggPSBuZXcgTGFtYmRhUnVudGltZSgnTk9ERUpTXzEyX1gnLCAnbm9kZTEyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzE0X1ggPSBuZXcgTGFtYmRhUnVudGltZSgnTk9ERUpTXzE0X1gnLCAnbm9kZTE0Jyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRQbGF0Zm9ybSA9ICdub2RlJztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBhd3MtbGFtYmRhLlJ1bnRpbWUgbWVtYmVyIG5hbWUgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblJ1bnRpbWU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBlc2J1aWxkIHNldHRpbmcgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVGFyZ2V0OiBzdHJpbmcpIHtcbiAgfVxufVxuIl19
@@ -1,33 +1,10 @@
1
+ import { CdkTasks, LambdaFunctionCommonOptions } from './awscdk';
2
+ import { CdkConfig, CdkConfigCommonOptions } from './awscdk/cdk-config';
1
3
  import { TypeScriptAppProject, TypeScriptProjectOptions } from './typescript';
2
4
  /**
3
5
  * @experimental
4
6
  */
5
- export declare enum CdkApprovalLevel {
6
- /**
7
- * (experimental) Approval is never required.
8
- *
9
- * @experimental
10
- */
11
- NEVER = "never",
12
- /**
13
- * (experimental) Requires approval on any IAM or security-group-related change.
14
- *
15
- * @experimental
16
- */
17
- ANY_CHANGE = "any-change",
18
- /**
19
- * (experimental) Requires approval when IAM statements or traffic rules are added;
20
- *
21
- * removals don't require approval
22
- *
23
- * @experimental
24
- */
25
- BROADENING = "broadening"
26
- }
27
- /**
28
- * @experimental
29
- */
30
- export interface AwsCdkTypeScriptAppOptions extends TypeScriptProjectOptions {
7
+ export interface AwsCdkTypeScriptAppOptions extends TypeScriptProjectOptions, CdkConfigCommonOptions {
31
8
  /**
32
9
  * (experimental) AWS CDK version to use.
33
10
  *
@@ -54,27 +31,26 @@ export interface AwsCdkTypeScriptAppOptions extends TypeScriptProjectOptions {
54
31
  */
55
32
  readonly cdkDependencies?: string[];
56
33
  /**
57
- * (experimental) Additional context to include in `cdk.json`.
34
+ * (experimental) The CDK app's entrypoint (relative to the source directory, which is "src" by default).
58
35
  *
36
+ * @default "main.ts"
59
37
  * @experimental
60
38
  */
61
- readonly context?: {
62
- [key: string]: string;
63
- };
39
+ readonly appEntrypoint?: string;
64
40
  /**
65
- * (experimental) The CDK app's entrypoint (relative to the source directory, which is "src" by default).
41
+ * (experimental) Automatically adds an `awscdk.LambdaFunction` for each `.lambda.ts` handler in your source tree. If this is disabled, you can manually add an `awscdk.AutoDiscover` component to your project.
66
42
  *
67
- * @default "main.ts"
43
+ * @default true
68
44
  * @experimental
69
45
  */
70
- readonly appEntrypoint?: string;
46
+ readonly lambdaAutoDiscover?: boolean;
71
47
  /**
72
- * (experimental) To protect you against unintended changes that affect your security posture, the AWS CDK Toolkit prompts you to approve security-related changes before deploying them.
48
+ * (experimental) Common options for all AWS Lambda functions.
73
49
  *
74
- * @default CdkApprovalLevel.BROADENING
50
+ * @default - default options
75
51
  * @experimental
76
52
  */
77
- readonly requireApproval?: CdkApprovalLevel;
53
+ readonly lambdaOptions?: LambdaFunctionCommonOptions;
78
54
  }
79
55
  /**
80
56
  * (experimental) AWS CDK app in TypeScript.
@@ -90,17 +66,23 @@ export declare class AwsCdkTypeScriptApp extends TypeScriptAppProject {
90
66
  */
91
67
  readonly cdkVersion: string;
92
68
  /**
93
- * (experimental) Contents of `cdk.json`.
69
+ * (experimental) The CDK app entrypoint.
94
70
  *
95
71
  * @experimental
96
72
  */
97
- readonly cdkConfig: any;
73
+ readonly appEntrypoint: string;
98
74
  /**
99
- * (experimental) The CDK app entrypoint.
75
+ * (experimental) Common CDK tasks.
100
76
  *
101
77
  * @experimental
102
78
  */
103
- readonly appEntrypoint: string;
79
+ readonly cdkTasks: CdkTasks;
80
+ /**
81
+ * (experimental) cdk.json configuration.
82
+ *
83
+ * @experimental
84
+ */
85
+ readonly cdkConfig: CdkConfig;
104
86
  /**
105
87
  * @experimental
106
88
  */