projen 0.31.16 → 0.32.0

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 (116) hide show
  1. package/.jsii +988 -242
  2. package/API.md +387 -18
  3. package/README.md +1 -0
  4. package/docs/programmatic-api.md +56 -0
  5. package/lib/awscdk/cdk-config.d.ts +103 -0
  6. package/lib/awscdk/cdk-config.js +56 -0
  7. package/lib/awscdk/cdk-tasks.d.ts +38 -0
  8. package/lib/awscdk/cdk-tasks.js +39 -0
  9. package/lib/awscdk/index.d.ts +3 -0
  10. package/lib/awscdk/index.js +16 -0
  11. package/lib/awscdk/internal.d.ts +4 -0
  12. package/lib/awscdk/internal.js +22 -0
  13. package/lib/awscdk/java-app.d.ts +92 -0
  14. package/lib/awscdk/java-app.js +90 -0
  15. package/lib/awscdk-app-ts.d.ts +13 -45
  16. package/lib/awscdk-app-ts.js +12 -45
  17. package/lib/awscdk-construct.js +2 -2
  18. package/lib/cdk8s-app-ts.js +1 -1
  19. package/lib/cdk8s-construct.js +1 -1
  20. package/lib/cdktf-construct.js +1 -1
  21. package/lib/cli/cmds/new.js +23 -65
  22. package/lib/cli/util.d.ts +19 -0
  23. package/lib/cli/util.js +52 -0
  24. package/lib/common.js +6 -2
  25. package/lib/component.js +1 -1
  26. package/lib/construct-lib.js +1 -1
  27. package/lib/deps/dependencies.js +1 -1
  28. package/lib/dev-env.js +1 -1
  29. package/lib/docker-compose.js +2 -2
  30. package/lib/eslint.d.ts +9 -0
  31. package/lib/eslint.js +3 -2
  32. package/lib/file.js +1 -1
  33. package/lib/git/gitattributes.js +1 -1
  34. package/lib/github/auto-approve.js +1 -1
  35. package/lib/github/auto-merge.js +1 -1
  36. package/lib/github/dependabot.js +1 -1
  37. package/lib/github/github.js +1 -1
  38. package/lib/github/mergify.js +1 -1
  39. package/lib/github/pr-template.js +1 -1
  40. package/lib/github/stale.js +1 -1
  41. package/lib/github/task-workflow.js +1 -1
  42. package/lib/github/workflows.js +1 -1
  43. package/lib/gitpod.js +1 -1
  44. package/lib/ignore-file.js +1 -1
  45. package/lib/index.d.ts +2 -0
  46. package/lib/index.js +3 -1
  47. package/lib/ini.js +1 -1
  48. package/lib/inventory.d.ts +15 -3
  49. package/lib/inventory.js +50 -25
  50. package/lib/java/java-project.d.ts +28 -14
  51. package/lib/java/java-project.js +3 -2
  52. package/lib/java/junit.js +1 -1
  53. package/lib/java/maven-compile.js +1 -1
  54. package/lib/java/maven-packaging.js +1 -1
  55. package/lib/java/maven-sample.js +1 -1
  56. package/lib/java/pom.js +1 -1
  57. package/lib/java/projenrc.js +1 -1
  58. package/lib/javascript/npm-config.js +1 -1
  59. package/lib/javascript/projenrc.js +3 -3
  60. package/lib/javascript/render-options.d.ts +5 -0
  61. package/lib/javascript/render-options.js +24 -21
  62. package/lib/jest.js +1 -1
  63. package/lib/jsii-project.js +1 -1
  64. package/lib/json/projenrc.js +1 -1
  65. package/lib/json/run-projenrc.task.js +6 -11
  66. package/lib/json.js +1 -1
  67. package/lib/license.js +1 -1
  68. package/lib/logger.js +1 -1
  69. package/lib/makefile.js +1 -1
  70. package/lib/node-package.js +1 -1
  71. package/lib/node-project.js +1 -1
  72. package/lib/object-file.js +1 -1
  73. package/lib/project.js +2 -2
  74. package/lib/projects.d.ts +80 -0
  75. package/lib/projects.js +81 -0
  76. package/lib/python/pip.js +1 -1
  77. package/lib/python/poetry.js +2 -2
  78. package/lib/python/projenrc.js +1 -1
  79. package/lib/python/pytest.js +1 -1
  80. package/lib/python/python-project.js +1 -1
  81. package/lib/python/python-sample.js +1 -1
  82. package/lib/python/requirements-file.js +1 -1
  83. package/lib/python/setuppy.js +1 -1
  84. package/lib/python/setuptools.js +1 -1
  85. package/lib/python/venv.js +1 -1
  86. package/lib/readme.js +1 -1
  87. package/lib/release/publisher.js +1 -1
  88. package/lib/release/release-trigger.js +1 -1
  89. package/lib/release/release.js +1 -1
  90. package/lib/sample-file.js +2 -2
  91. package/lib/semver.js +1 -1
  92. package/lib/source-code.js +1 -1
  93. package/lib/tasks/runtime.js +1 -1
  94. package/lib/tasks/task.js +1 -1
  95. package/lib/tasks/tasks.js +1 -1
  96. package/lib/textfile.js +1 -1
  97. package/lib/toml.js +1 -1
  98. package/lib/typescript/projenrc.js +3 -3
  99. package/lib/typescript-config.js +1 -1
  100. package/lib/typescript.js +3 -3
  101. package/lib/upgrade-dependencies.js +2 -2
  102. package/lib/util/synth.d.ts +4 -0
  103. package/lib/util/synth.js +35 -2
  104. package/lib/version.js +1 -1
  105. package/lib/vscode/devcontainer.js +1 -1
  106. package/lib/vscode/launch-config.js +1 -1
  107. package/lib/vscode/vscode.js +1 -1
  108. package/lib/web/next.js +3 -3
  109. package/lib/web/postcss.js +1 -1
  110. package/lib/web/react.js +4 -4
  111. package/lib/web/tailwind.js +1 -1
  112. package/lib/xmlfile.js +1 -1
  113. package/lib/yaml.js +1 -1
  114. package/package.json +2 -2
  115. package/lib/cli/create.d.ts +0 -41
  116. package/lib/cli/create.js +0 -48
package/API.md CHANGED
@@ -31,6 +31,7 @@ Name|Description
31
31
  [NodeProject](#projen-nodeproject)|Node.js project.
32
32
  [ObjectFile](#projen-objectfile)|Represents an Object file.
33
33
  [Project](#projen-project)|Base project.
34
+ [Projects](#projen-projects)|Programmatic API for projen.
34
35
  [SampleDir](#projen-sampledir)|Renders the given files into the directory if the directory does not exist.
35
36
  [SampleFile](#projen-samplefile)|Produces a file with the given contents but only once, if the file doesn't already exist.
36
37
  [SampleReadme](#projen-samplereadme)|Represents a README.md sample file. You are expected to manage this file after creation.
@@ -47,6 +48,9 @@ Name|Description
47
48
  [Version](#projen-version)|*No description*
48
49
  [XmlFile](#projen-xmlfile)|Represents an XML file.
49
50
  [YamlFile](#projen-yamlfile)|Represents a YAML file.
51
+ [awscdk.AwsCdkJavaApp](#projen-awscdk-awscdkjavaapp)|AWS CDK app in Java.
52
+ [awscdk.CdkConfig](#projen-awscdk-cdkconfig)|Represents cdk.json file.
53
+ [awscdk.CdkTasks](#projen-awscdk-cdktasks)|Adds standard AWS CDK tasks to your project.
50
54
  [deps.Dependencies](#projen-deps-dependencies)|The `Dependencies` component is responsible to track the list of dependencies a project has, and then used by project types as the model for rendering project-specific dependency manifests such as the dependencies section `package.json` files.
51
55
  [git.GitAttributesFile](#projen-git-gitattributesfile)|Assign attributes to file names in a git repository.
52
56
  [github.AutoApprove](#projen-github-autoapprove)|Auto approve pull requests that meet a criteria.
@@ -113,6 +117,7 @@ Name|Description
113
117
  [ConstructLibraryCdktfOptions](#projen-constructlibrarycdktfoptions)|*No description*
114
118
  [ConstructLibraryOptions](#projen-constructlibraryoptions)|*No description*
115
119
  [CoverageThreshold](#projen-coveragethreshold)|*No description*
120
+ [CreateProjectOptions](#projen-createprojectoptions)|*No description*
116
121
  [DevEnvironmentOptions](#projen-devenvironmentoptions)|Base options for configuring a container-based development environment.
117
122
  [DockerComposeBuild](#projen-dockercomposebuild)|Build arguments for creating a docker image.
118
123
  [DockerComposePortMappingOptions](#projen-dockercomposeportmappingoptions)|Options for port mappings.
@@ -166,6 +171,9 @@ Name|Description
166
171
  [VersionOptions](#projen-versionoptions)|Options for `Version`.
167
172
  [XmlFileOptions](#projen-xmlfileoptions)|Options for `XmlFile`.
168
173
  [YamlFileOptions](#projen-yamlfileoptions)|Options for `JsonFile`.
174
+ [awscdk.AwsCdkJavaAppOptions](#projen-awscdk-awscdkjavaappoptions)|*No description*
175
+ [awscdk.CdkConfigCommonOptions](#projen-awscdk-cdkconfigcommonoptions)|Common options for `cdk.json`.
176
+ [awscdk.CdkConfigOptions](#projen-awscdk-cdkconfigoptions)|Options for `CdkJson`.
169
177
  [deps.Dependency](#projen-deps-dependency)|Represents a project dependency.
170
178
  [deps.DependencyCoordinates](#projen-deps-dependencycoordinates)|Coordinates of the dependency (name and version).
171
179
  [deps.DepsManifest](#projen-deps-depsmanifest)|*No description*
@@ -184,6 +192,7 @@ Name|Description
184
192
  [github.StaleBehavior](#projen-github-stalebehavior)|Stale behavior.
185
193
  [github.StaleOptions](#projen-github-staleoptions)|Options for `Stale`.
186
194
  [github.TaskWorkflowOptions](#projen-github-taskworkflowoptions)|*No description*
195
+ [java.JavaProjectCommonOptions](#projen-java-javaprojectcommonoptions)|Options for `JavaProject`.
187
196
  [java.JavaProjectOptions](#projen-java-javaprojectoptions)|Options for `JavaProject`.
188
197
  [java.JunitOptions](#projen-java-junitoptions)|Options for `Junit`.
189
198
  [java.MavenCompileOptions](#projen-java-mavencompileoptions)|Options for `MavenCompile`.
@@ -269,7 +278,6 @@ Name|Description
269
278
  Name|Description
270
279
  ----|-----------
271
280
  [AutoRelease](#projen-autorelease)|Automatic bump modes.
272
- [CdkApprovalLevel](#projen-cdkapprovallevel)|*No description*
273
281
  [DockerComposeProtocol](#projen-dockercomposeprotocol)|Network protocol for port mapping.
274
282
  [GitpodOnOpen](#projen-gitpodonopen)|What to do when a service on a port is detected.
275
283
  [GitpodOpenIn](#projen-gitpodopenin)|Configure where in the IDE the terminal should be opened.
@@ -283,6 +291,7 @@ Name|Description
283
291
  [Stability](#projen-stability)|*No description*
284
292
  [TypeScriptJsxMode](#projen-typescriptjsxmode)|Determines how JSX should get transformed into valid JavaScript.
285
293
  [TypeScriptModuleResolution](#projen-typescriptmoduleresolution)|Determines how modules get resolved.
294
+ [awscdk.ApprovalLevel](#projen-awscdk-approvallevel)|Which approval is required when deploying CDK apps.
286
295
  [deps.DependencyType](#projen-deps-dependencytype)|Type of dependency.
287
296
  [github.DependabotRegistryType](#projen-github-dependabotregistrytype)|Each configuration type requires you to provide particular settings.
288
297
  [github.DependabotScheduleInterval](#projen-github-dependabotscheduleinterval)|How often to check for new versions and raise pull requests for version updates.
@@ -697,12 +706,14 @@ new AwsCdkTypeScriptApp(options: AwsCdkTypeScriptAppOptions)
697
706
  * **tsconfigDev** (<code>[TypescriptConfigOptions](#projen-typescriptconfigoptions)</code>) Custom tsconfig options for the development tsconfig.json file (used for testing). __*Default*__: use the production tsconfig options
698
707
  * **tsconfigDevFile** (<code>string</code>) The name of the development tsconfig.json file. __*Default*__: "tsconfig.dev.json"
699
708
  * **typescriptVersion** (<code>string</code>) TypeScript version to use. __*Default*__: "latest"
709
+ * **cdkout** (<code>string</code>) cdk.out directory. __*Default*__: "cdk.out"
710
+ * **context** (<code>Map<string, string></code>) Additional context to include in `cdk.json`. __*Default*__: no additional context
711
+ * **featureFlags** (<code>boolean</code>) Include all feature flags in cdk.json. __*Default*__: true
712
+ * **requireApproval** (<code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code>) 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. __*Default*__: ApprovalLevel.BROADENING
700
713
  * **cdkVersion** (<code>string</code>) AWS CDK version to use.
701
714
  * **appEntrypoint** (<code>string</code>) The CDK app's entrypoint (relative to the source directory, which is "src" by default). __*Default*__: "main.ts"
702
715
  * **cdkDependencies** (<code>Array<string></code>) Which AWS CDK modules (those that start with "@aws-cdk/") this app uses. __*Optional*__
703
716
  * **cdkVersionPinning** (<code>boolean</code>) Use pinned version instead of caret version for CDK. __*Default*__: false
704
- * **context** (<code>Map<string, string></code>) Additional context to include in `cdk.json`. __*Optional*__
705
- * **requireApproval** (<code>[CdkApprovalLevel](#projen-cdkapprovallevel)</code>) 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. __*Default*__: CdkApprovalLevel.BROADENING
706
717
 
707
718
 
708
719
 
@@ -712,7 +723,8 @@ new AwsCdkTypeScriptApp(options: AwsCdkTypeScriptAppOptions)
712
723
  Name | Type | Description
713
724
  -----|------|-------------
714
725
  **appEntrypoint**🔹 | <code>string</code> | The CDK app entrypoint.
715
- **cdkConfig**🔹 | <code>any</code> | Contents of `cdk.json`.
726
+ **cdkConfig**🔹 | <code>[awscdk.CdkConfig](#projen-awscdk-cdkconfig)</code> | cdk.json configuration.
727
+ **cdkTasks**🔹 | <code>[awscdk.CdkTasks](#projen-awscdk-cdktasks)</code> | Common CDK tasks.
716
728
  **cdkVersion**🔹 | <code>string</code> | The CDK version this app is using.
717
729
 
718
730
  ### Methods
@@ -1897,6 +1909,7 @@ new Eslint(project: NodeProject, options: EslintOptions)
1897
1909
  * **ignorePatterns** (<code>Array<string></code>) List of file patterns that should not be linted, using the same syntax as .gitignore patterns. __*Default*__: [ '*.js', '*.d.ts', 'node_modules/', '*.generated.ts', 'coverage' ]
1898
1910
  * **lintProjenRc** (<code>boolean</code>) Should we lint .projenrc.js. __*Default*__: true
1899
1911
  * **prettier** (<code>boolean</code>) Enable prettier for code formatting. __*Default*__: false
1912
+ * **tsAlwaysTryTypes** (<code>boolean</code>) Always try to resolve types under `<root>@types` directory even it doesn't contain any source code. __*Default*__: true
1900
1913
  * **tsconfigPath** (<code>string</code>) Path to `tsconfig.json` which should be used by eslint. __*Default*__: "./tsconfig.json"
1901
1914
 
1902
1915
 
@@ -3995,6 +4008,42 @@ __Returns__:
3995
4008
 
3996
4009
 
3997
4010
 
4011
+ ## class Projects 🔹 <a id="projen-projects"></a>
4012
+
4013
+ Programmatic API for projen.
4014
+
4015
+
4016
+ ### Methods
4017
+
4018
+
4019
+ #### *static* createProject(options)🔹 <a id="projen-projects-createproject"></a>
4020
+
4021
+ Creates a new project with defaults.
4022
+
4023
+ This function creates the project type in-process (with in VM) and calls
4024
+ `.synth()` on it (if `options.synth` is not `false`).
4025
+
4026
+ At the moment, it also generates a `.projenrc.js` file with the same code
4027
+ that was just executed. In the future, this will also be done by the project
4028
+ type, so we can easily support multiple languages of projenrc.
4029
+
4030
+ ```ts
4031
+ static createProject(options: CreateProjectOptions): void
4032
+ ```
4033
+
4034
+ * **options** (<code>[CreateProjectOptions](#projen-createprojectoptions)</code>) *No description*
4035
+ * **dir** (<code>string</code>) Directory that the project will be generated in.
4036
+ * **projectFqn** (<code>string</code>) Fully-qualified name of the project type (usually formatted as `module.ProjectType`).
4037
+ * **projectOptions** (<code>Map<string, any></code>) Project options.
4038
+ * **optionHints** (<code>[NewProjectOptionHints](#projen-newprojectoptionhints)</code>) Should we render commented-out default options in the projenrc file? __*Default*__: NewProjectOptionHints.FEATURED
4039
+ * **post** (<code>boolean</code>) Should we execute post synthesis hooks? __*Default*__: true
4040
+ * **synth** (<code>boolean</code>) Should we call `project.synth()` or instantiate the project (could still have side-effects) and render the .projenrc file. __*Default*__: true
4041
+
4042
+
4043
+
4044
+
4045
+
4046
+
3998
4047
  ## class SampleDir 🔹 <a id="projen-sampledir"></a>
3999
4048
 
4000
4049
  Renders the given files into the directory if the directory does not exist.
@@ -5076,6 +5125,170 @@ __Returns__:
5076
5125
 
5077
5126
 
5078
5127
 
5128
+ ## class AwsCdkJavaApp 🔹 <a id="projen-awscdk-awscdkjavaapp"></a>
5129
+
5130
+ AWS CDK app in Java.
5131
+
5132
+ __Submodule__: awscdk
5133
+
5134
+ __Extends__: [java.JavaProject](#projen-java-javaproject)
5135
+
5136
+ ### Initializer
5137
+
5138
+
5139
+
5140
+
5141
+ ```ts
5142
+ new awscdk.AwsCdkJavaApp(options: AwsCdkJavaAppOptions)
5143
+ ```
5144
+
5145
+ * **options** (<code>[awscdk.AwsCdkJavaAppOptions](#projen-awscdk-awscdkjavaappoptions)</code>) *No description*
5146
+ * **name** (<code>string</code>) This is the name of your project.
5147
+ * **logging** (<code>[LoggerOptions](#projen-loggeroptions)</code>) Configure logging options such as verbosity. __*Default*__: {}
5148
+ * **outdir** (<code>string</code>) The root directory of the project. __*Default*__: "."
5149
+ * **parent** (<code>[Project](#projen-project)</code>) The parent project, if this project is part of a bigger project. __*Optional*__
5150
+ * **projenrcJson** (<code>boolean</code>) Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation. __*Default*__: false
5151
+ * **projenrcJsonOptions** (<code>[json.ProjenrcOptions](#projen-json-projenrcoptions)</code>) Options for .projenrc.json. __*Default*__: default options
5152
+ * **autoApproveOptions** (<code>[github.AutoApproveOptions](#projen-github-autoapproveoptions)</code>) Enable and configure the 'auto approve' workflow. __*Default*__: auto approve is disabled
5153
+ * **autoMergeOptions** (<code>[github.AutoMergeOptions](#projen-github-automergeoptions)</code>) Configure options for automatic merging on GitHub. __*Default*__: see defaults in `AutoMergeOptions`
5154
+ * **clobber** (<code>boolean</code>) Add a `clobber` task which resets the repo to origin. __*Default*__: true
5155
+ * **devContainer** (<code>boolean</code>) Add a VSCode development environment (used for GitHub Codespaces). __*Default*__: false
5156
+ * **github** (<code>boolean</code>) Enable GitHub integration. __*Default*__: true
5157
+ * **githubOptions** (<code>[github.GitHubOptions](#projen-github-githuboptions)</code>) Options for GitHub integration. __*Default*__: see GitHubOptions
5158
+ * **gitpod** (<code>boolean</code>) Add a Gitpod development environment. __*Default*__: false
5159
+ * **mergify** (<code>boolean</code>) Whether mergify should be enabled on this repository or not. __*Default*__: true
5160
+ * **projectType** (<code>[ProjectType](#projen-projecttype)</code>) Which type of project this is (library/app). __*Default*__: ProjectType.UNKNOWN
5161
+ * **readme** (<code>[SampleReadmeProps](#projen-samplereadmeprops)</code>) The README setup. __*Default*__: { filename: 'README.md', contents: '# replace this' }
5162
+ * **stale** (<code>boolean</code>) Auto-close of stale issues and pull request. __*Default*__: true
5163
+ * **staleOptions** (<code>[github.StaleOptions](#projen-github-staleoptions)</code>) Auto-close stale issues and pull requests. __*Default*__: see defaults in `StaleOptions`
5164
+ * **vscode** (<code>boolean</code>) Enable VSCode integration. __*Default*__: true
5165
+ * **artifactId** (<code>string</code>) The artifactId is generally the name that the project is known by.
5166
+ * **groupId** (<code>string</code>) This is generally unique amongst an organization or a project.
5167
+ * **version** (<code>string</code>) This is the last piece of the naming puzzle.
5168
+ * **description** (<code>string</code>) Description of a project is always good. __*Default*__: undefined
5169
+ * **packaging** (<code>string</code>) Project packaging format. __*Default*__: "jar"
5170
+ * **url** (<code>string</code>) The URL, like the name, is not required. __*Default*__: undefined
5171
+ * **compileOptions** (<code>[java.MavenCompileOptions](#projen-java-mavencompileoptions)</code>) Compile options. __*Default*__: defaults
5172
+ * **deps** (<code>Array<string></code>) List of runtime dependencies for this project. __*Default*__: []
5173
+ * **distdir** (<code>string</code>) Final artifact output directory. __*Default*__: "dist/java"
5174
+ * **junit** (<code>boolean</code>) Include junit tests. __*Default*__: true
5175
+ * **junitOptions** (<code>[java.JunitOptions](#projen-java-junitoptions)</code>) junit options. __*Default*__: defaults
5176
+ * **packagingOptions** (<code>[java.MavenPackagingOptions](#projen-java-mavenpackagingoptions)</code>) Packaging options. __*Default*__: defaults
5177
+ * **projenrcJava** (<code>boolean</code>) Use projenrc in java. __*Default*__: true
5178
+ * **projenrcJavaOptions** (<code>[java.ProjenrcOptions](#projen-java-projenrcoptions)</code>) Options related to projenrc in java. __*Default*__: default options
5179
+ * **testDeps** (<code>Array<string></code>) List of test dependencies for this project. __*Default*__: []
5180
+ * **sample** (<code>boolean</code>) Include sample code and test if the relevant directories don't exist. __*Optional*__
5181
+ * **sampleJavaPackage** (<code>string</code>) The java package to use for the code sample. __*Default*__: "org.acme"
5182
+ * **cdkout** (<code>string</code>) cdk.out directory. __*Default*__: "cdk.out"
5183
+ * **context** (<code>Map<string, string></code>) Additional context to include in `cdk.json`. __*Default*__: no additional context
5184
+ * **featureFlags** (<code>boolean</code>) Include all feature flags in cdk.json. __*Default*__: true
5185
+ * **requireApproval** (<code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code>) 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. __*Default*__: ApprovalLevel.BROADENING
5186
+ * **cdkVersion** (<code>string</code>) AWS CDK version to use (you can use semantic versioning).
5187
+ * **mainClass** (<code>string</code>) The name of the Java class with the static `main()` method.
5188
+ * **cdkDependencies** (<code>Array<string></code>) Which AWS CDK modules this app uses. __*Optional*__
5189
+
5190
+
5191
+
5192
+ ### Properties
5193
+
5194
+
5195
+ Name | Type | Description
5196
+ -----|------|-------------
5197
+ **cdkConfig**🔹 | <code>[awscdk.CdkConfig](#projen-awscdk-cdkconfig)</code> | The `cdk.json` file.
5198
+ **cdkTasks**🔹 | <code>[awscdk.CdkTasks](#projen-awscdk-cdktasks)</code> | CDK tasks.
5199
+ **cdkVersion**🔹 | <code>string</code> | The CDK version this app is using.
5200
+ **mainClass**🔹 | <code>string</code> | The full name of the main class of the java app (package.Class).
5201
+ **mainClassName**🔹 | <code>string</code> | The name of the Java class with the static `main()` method.
5202
+ **mainPackage**🔹 | <code>string</code> | The name of the Java package that includes the main class.
5203
+
5204
+ ### Methods
5205
+
5206
+
5207
+ #### addCdkDependency(...modules)🔹 <a id="projen-awscdk-awscdkjavaapp-addcdkdependency"></a>
5208
+
5209
+ Adds an AWS CDK module dependencies.
5210
+
5211
+ ```ts
5212
+ addCdkDependency(...modules: string[]): void
5213
+ ```
5214
+
5215
+ * **modules** (<code>string</code>) The list of modules to depend on (e.g. "core", "aws-lambda", etc).
5216
+
5217
+
5218
+
5219
+
5220
+
5221
+
5222
+ ## class CdkConfig 🔹 <a id="projen-awscdk-cdkconfig"></a>
5223
+
5224
+ Represents cdk.json file.
5225
+
5226
+ __Submodule__: awscdk
5227
+
5228
+ __Extends__: [Component](#projen-component)
5229
+
5230
+ ### Initializer
5231
+
5232
+
5233
+
5234
+
5235
+ ```ts
5236
+ new awscdk.CdkConfig(project: Project, options: CdkConfigOptions)
5237
+ ```
5238
+
5239
+ * **project** (<code>[Project](#projen-project)</code>) *No description*
5240
+ * **options** (<code>[awscdk.CdkConfigOptions](#projen-awscdk-cdkconfigoptions)</code>) *No description*
5241
+ * **cdkout** (<code>string</code>) cdk.out directory. __*Default*__: "cdk.out"
5242
+ * **context** (<code>Map<string, string></code>) Additional context to include in `cdk.json`. __*Default*__: no additional context
5243
+ * **featureFlags** (<code>boolean</code>) Include all feature flags in cdk.json. __*Default*__: true
5244
+ * **requireApproval** (<code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code>) 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. __*Default*__: ApprovalLevel.BROADENING
5245
+ * **app** (<code>string</code>) The command line to execute in order to synthesize the CDK application (language specific).
5246
+
5247
+
5248
+
5249
+ ### Properties
5250
+
5251
+
5252
+ Name | Type | Description
5253
+ -----|------|-------------
5254
+ **cdkout**🔹 | <code>string</code> | Name of the cdk.out directory.
5255
+ **json**🔹 | <code>[JsonFile](#projen-jsonfile)</code> | Represents the JSON file.
5256
+
5257
+
5258
+
5259
+ ## class CdkTasks 🔹 <a id="projen-awscdk-cdktasks"></a>
5260
+
5261
+ Adds standard AWS CDK tasks to your project.
5262
+
5263
+ __Submodule__: awscdk
5264
+
5265
+ __Extends__: [Component](#projen-component)
5266
+
5267
+ ### Initializer
5268
+
5269
+
5270
+
5271
+
5272
+ ```ts
5273
+ new awscdk.CdkTasks(project: Project)
5274
+ ```
5275
+
5276
+ * **project** (<code>[Project](#projen-project)</code>) *No description*
5277
+
5278
+
5279
+
5280
+ ### Properties
5281
+
5282
+
5283
+ Name | Type | Description
5284
+ -----|------|-------------
5285
+ **deploy**🔹 | <code>[tasks.Task](#projen-tasks-task)</code> | Deploys your app.
5286
+ **destroy**🔹 | <code>[tasks.Task](#projen-tasks-task)</code> | Destroys all the stacks.
5287
+ **diff**🔹 | <code>[tasks.Task](#projen-tasks-task)</code> | Diff against production.
5288
+ **synth**🔹 | <code>[tasks.Task](#projen-tasks-task)</code> | Synthesizes your app.
5289
+
5290
+
5291
+
5079
5292
  ## class Dependencies 🔹 <a id="projen-deps-dependencies"></a>
5080
5293
 
5081
5294
  The `Dependencies` component is responsible to track the list of dependencies a project has, and then used by project types as the model for rendering project-specific dependency manifests such as the dependencies section `package.json` files.
@@ -5742,9 +5955,9 @@ new java.JavaProject(options: JavaProjectOptions)
5742
5955
  * **packagingOptions** (<code>[java.MavenPackagingOptions](#projen-java-mavenpackagingoptions)</code>) Packaging options. __*Default*__: defaults
5743
5956
  * **projenrcJava** (<code>boolean</code>) Use projenrc in java. __*Default*__: true
5744
5957
  * **projenrcJavaOptions** (<code>[java.ProjenrcOptions](#projen-java-projenrcoptions)</code>) Options related to projenrc in java. __*Default*__: default options
5958
+ * **testDeps** (<code>Array<string></code>) List of test dependencies for this project. __*Default*__: []
5745
5959
  * **sample** (<code>boolean</code>) Include sample code and test if the relevant directories don't exist. __*Optional*__
5746
5960
  * **sampleJavaPackage** (<code>string</code>) The java package to use for the code sample. __*Default*__: "org.acme"
5747
- * **testDeps** (<code>Array<string></code>) List of test dependencies for this project. __*Default*__: []
5748
5961
 
5749
5962
 
5750
5963
 
@@ -5753,6 +5966,7 @@ new java.JavaProject(options: JavaProjectOptions)
5753
5966
 
5754
5967
  Name | Type | Description
5755
5968
  -----|------|-------------
5969
+ **buildTask**🔹 | <code>[tasks.Task](#projen-tasks-task)</code> | The primary build task.
5756
5970
  **compile**🔹 | <code>[java.MavenCompile](#projen-java-mavencompile)</code> | Compile component.
5757
5971
  **distdir**🔹 | <code>string</code> | Maven artifact output directory.
5758
5972
  **packaging**🔹 | <code>[java.MavenPackaging](#projen-java-mavenpackaging)</code> | Packaging component.
@@ -8656,11 +8870,12 @@ Name | Type | Description
8656
8870
  **bundledDeps**?🔹 | <code>Array<string></code> | List of dependencies to bundle into this module.<br/>__*Optional*__
8657
8871
  **cdkDependencies**?🔹 | <code>Array<string></code> | Which AWS CDK modules (those that start with "@aws-cdk/") this app uses.<br/>__*Optional*__
8658
8872
  **cdkVersionPinning**?🔹 | <code>boolean</code> | Use pinned version instead of caret version for CDK.<br/>__*Default*__: false
8873
+ **cdkout**?🔹 | <code>string</code> | cdk.out directory.<br/>__*Default*__: "cdk.out"
8659
8874
  **clobber**?🔹 | <code>boolean</code> | Add a `clobber` task which resets the repo to origin.<br/>__*Default*__: true
8660
8875
  **codeCov**?🔹 | <code>boolean</code> | Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v1 A secret is required for private repos. Configured with @codeCovTokenSecret.<br/>__*Default*__: false
8661
8876
  **codeCovTokenSecret**?🔹 | <code>string</code> | Define the secret name for a specified https://codecov.io/ token A secret is required to send coverage for private repositories.<br/>__*Default*__: if this option is not specified, only public repositories are supported
8662
8877
  **compileBeforeTest**?🔹 | <code>boolean</code> | Compile the code before running tests.<br/>__*Default*__: if `testdir` is under `src/**`, the default is `true`, otherwise the default is `false`.
8663
- **context**?🔹 | <code>Map<string, string></code> | Additional context to include in `cdk.json`.<br/>__*Optional*__
8878
+ **context**?🔹 | <code>Map<string, string></code> | Additional context to include in `cdk.json`.<br/>__*Default*__: no additional context
8664
8879
  **copyrightOwner**?🔹 | <code>string</code> | License copyright owner.<br/>__*Default*__: defaults to the value of authorName or "" if `authorName` is undefined.
8665
8880
  **copyrightPeriod**?🔹 | <code>string</code> | The copyright years to put in the LICENSE file.<br/>__*Default*__: current year
8666
8881
  **dependabot**?🔹 | <code>boolean</code> | Use dependabot to handle dependency upgrades.<br/>__*Default*__: false
@@ -8678,6 +8893,7 @@ Name | Type | Description
8678
8893
  **entrypointTypes**?🔹 | <code>string</code> | The .d.ts file that includes the type declarations for this module.<br/>__*Default*__: .d.ts file derived from the project's entrypoint (usually lib/index.d.ts)
8679
8894
  **eslint**?🔹 | <code>boolean</code> | Setup eslint.<br/>__*Default*__: true
8680
8895
  **eslintOptions**?🔹 | <code>[EslintOptions](#projen-eslintoptions)</code> | Eslint options.<br/>__*Default*__: opinionated default options
8896
+ **featureFlags**?🔹 | <code>boolean</code> | Include all feature flags in cdk.json.<br/>__*Default*__: true
8681
8897
  **github**?🔹 | <code>boolean</code> | Enable GitHub integration.<br/>__*Default*__: true
8682
8898
  **githubOptions**?🔹 | <code>[github.GitHubOptions](#projen-github-githuboptions)</code> | Options for GitHub integration.<br/>__*Default*__: see GitHubOptions
8683
8899
  **gitignore**?🔹 | <code>Array<string></code> | Additional entries to .gitignore.<br/>__*Optional*__
@@ -8744,7 +8960,7 @@ Name | Type | Description
8744
8960
  **releaseWorkflowSetupSteps**?🔹 | <code>Array<[github.workflows.JobStep](#projen-github-workflows-jobstep)></code> | A set of workflow steps to execute in order to setup the workflow container.<br/>__*Optional*__
8745
8961
  **repository**?🔹 | <code>string</code> | The repository is the location where the actual code for your package lives.<br/>__*Optional*__
8746
8962
  **repositoryDirectory**?🔹 | <code>string</code> | If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives.<br/>__*Optional*__
8747
- **requireApproval**?🔹 | <code>[CdkApprovalLevel](#projen-cdkapprovallevel)</code> | 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.<br/>__*Default*__: CdkApprovalLevel.BROADENING
8963
+ **requireApproval**?🔹 | <code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code> | 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.<br/>__*Default*__: ApprovalLevel.BROADENING
8748
8964
  **sampleCode**?🔹 | <code>boolean</code> | Generate one-time sample in `src/` and `test/` if there are no files there.<br/>__*Default*__: true
8749
8965
  **scripts**?🔹 | <code>Map<string, string></code> | npm scripts to include.<br/>__*Default*__: {}
8750
8966
  **srcdir**?🔹 | <code>string</code> | Typescript sources directory.<br/>__*Default*__: "src"
@@ -9533,6 +9749,24 @@ Name | Type | Description
9533
9749
 
9534
9750
 
9535
9751
 
9752
+ ## struct CreateProjectOptions 🔹 <a id="projen-createprojectoptions"></a>
9753
+
9754
+
9755
+
9756
+
9757
+
9758
+
9759
+ Name | Type | Description
9760
+ -----|------|-------------
9761
+ **dir**🔹 | <code>string</code> | Directory that the project will be generated in.
9762
+ **projectFqn**🔹 | <code>string</code> | Fully-qualified name of the project type (usually formatted as `module.ProjectType`).
9763
+ **projectOptions**🔹 | <code>Map<string, any></code> | Project options.
9764
+ **optionHints**?🔹 | <code>[NewProjectOptionHints](#projen-newprojectoptionhints)</code> | Should we render commented-out default options in the projenrc file?<br/>__*Default*__: NewProjectOptionHints.FEATURED
9765
+ **post**?🔹 | <code>boolean</code> | Should we execute post synthesis hooks?<br/>__*Default*__: true
9766
+ **synth**?🔹 | <code>boolean</code> | Should we call `project.synth()` or instantiate the project (could still have side-effects) and render the .projenrc file.<br/>__*Default*__: true
9767
+
9768
+
9769
+
9536
9770
  ## struct DevEnvironmentOptions 🔹 <a id="projen-devenvironmentoptions"></a>
9537
9771
 
9538
9772
 
@@ -9676,6 +9910,7 @@ Name | Type | Description
9676
9910
  **ignorePatterns**?🔹 | <code>Array<string></code> | List of file patterns that should not be linted, using the same syntax as .gitignore patterns.<br/>__*Default*__: [ '*.js', '*.d.ts', 'node_modules/', '*.generated.ts', 'coverage' ]
9677
9911
  **lintProjenRc**?🔹 | <code>boolean</code> | Should we lint .projenrc.js.<br/>__*Default*__: true
9678
9912
  **prettier**?🔹 | <code>boolean</code> | Enable prettier for code formatting.<br/>__*Default*__: false
9913
+ **tsAlwaysTryTypes**?🔹 | <code>boolean</code> | Always try to resolve types under `<root>@types` directory even it doesn't contain any source code.<br/>__*Default*__: true
9679
9914
  **tsconfigPath**?🔹 | <code>string</code> | Path to `tsconfig.json` which should be used by eslint.<br/>__*Default*__: "./tsconfig.json"
9680
9915
 
9681
9916
 
@@ -11194,6 +11429,94 @@ Name | Type | Description
11194
11429
 
11195
11430
 
11196
11431
 
11432
+ ## struct AwsCdkJavaAppOptions 🔹 <a id="projen-awscdk-awscdkjavaappoptions"></a>
11433
+
11434
+
11435
+
11436
+
11437
+
11438
+
11439
+ Name | Type | Description
11440
+ -----|------|-------------
11441
+ **artifactId**🔹 | <code>string</code> | The artifactId is generally the name that the project is known by.
11442
+ **cdkVersion**🔹 | <code>string</code> | AWS CDK version to use (you can use semantic versioning).
11443
+ **groupId**🔹 | <code>string</code> | This is generally unique amongst an organization or a project.
11444
+ **mainClass**🔹 | <code>string</code> | The name of the Java class with the static `main()` method.
11445
+ **name**🔹 | <code>string</code> | This is the name of your project.
11446
+ **version**🔹 | <code>string</code> | This is the last piece of the naming puzzle.
11447
+ **autoApproveOptions**?🔹 | <code>[github.AutoApproveOptions](#projen-github-autoapproveoptions)</code> | Enable and configure the 'auto approve' workflow.<br/>__*Default*__: auto approve is disabled
11448
+ **autoMergeOptions**?🔹 | <code>[github.AutoMergeOptions](#projen-github-automergeoptions)</code> | Configure options for automatic merging on GitHub.<br/>__*Default*__: see defaults in `AutoMergeOptions`
11449
+ **cdkDependencies**?🔹 | <code>Array<string></code> | Which AWS CDK modules this app uses.<br/>__*Optional*__
11450
+ **cdkout**?🔹 | <code>string</code> | cdk.out directory.<br/>__*Default*__: "cdk.out"
11451
+ **clobber**?🔹 | <code>boolean</code> | Add a `clobber` task which resets the repo to origin.<br/>__*Default*__: true
11452
+ **compileOptions**?🔹 | <code>[java.MavenCompileOptions](#projen-java-mavencompileoptions)</code> | Compile options.<br/>__*Default*__: defaults
11453
+ **context**?🔹 | <code>Map<string, string></code> | Additional context to include in `cdk.json`.<br/>__*Default*__: no additional context
11454
+ **deps**?🔹 | <code>Array<string></code> | List of runtime dependencies for this project.<br/>__*Default*__: []
11455
+ **description**?🔹 | <code>string</code> | Description of a project is always good.<br/>__*Default*__: undefined
11456
+ **devContainer**?🔹 | <code>boolean</code> | Add a VSCode development environment (used for GitHub Codespaces).<br/>__*Default*__: false
11457
+ **distdir**?🔹 | <code>string</code> | Final artifact output directory.<br/>__*Default*__: "dist/java"
11458
+ **featureFlags**?🔹 | <code>boolean</code> | Include all feature flags in cdk.json.<br/>__*Default*__: true
11459
+ **github**?🔹 | <code>boolean</code> | Enable GitHub integration.<br/>__*Default*__: true
11460
+ **githubOptions**?🔹 | <code>[github.GitHubOptions](#projen-github-githuboptions)</code> | Options for GitHub integration.<br/>__*Default*__: see GitHubOptions
11461
+ **gitpod**?🔹 | <code>boolean</code> | Add a Gitpod development environment.<br/>__*Default*__: false
11462
+ **junit**?🔹 | <code>boolean</code> | Include junit tests.<br/>__*Default*__: true
11463
+ **junitOptions**?🔹 | <code>[java.JunitOptions](#projen-java-junitoptions)</code> | junit options.<br/>__*Default*__: defaults
11464
+ **logging**?🔹 | <code>[LoggerOptions](#projen-loggeroptions)</code> | Configure logging options such as verbosity.<br/>__*Default*__: {}
11465
+ **mergify**?⚠️ | <code>boolean</code> | Whether mergify should be enabled on this repository or not.<br/>__*Default*__: true
11466
+ **outdir**?🔹 | <code>string</code> | The root directory of the project.<br/>__*Default*__: "."
11467
+ **packaging**?🔹 | <code>string</code> | Project packaging format.<br/>__*Default*__: "jar"
11468
+ **packagingOptions**?🔹 | <code>[java.MavenPackagingOptions](#projen-java-mavenpackagingoptions)</code> | Packaging options.<br/>__*Default*__: defaults
11469
+ **parent**?🔹 | <code>[Project](#projen-project)</code> | The parent project, if this project is part of a bigger project.<br/>__*Optional*__
11470
+ **projectType**?⚠️ | <code>[ProjectType](#projen-projecttype)</code> | Which type of project this is (library/app).<br/>__*Default*__: ProjectType.UNKNOWN
11471
+ **projenrcJava**?🔹 | <code>boolean</code> | Use projenrc in java.<br/>__*Default*__: true
11472
+ **projenrcJavaOptions**?🔹 | <code>[java.ProjenrcOptions](#projen-java-projenrcoptions)</code> | Options related to projenrc in java.<br/>__*Default*__: default options
11473
+ **projenrcJson**?🔹 | <code>boolean</code> | Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation.<br/>__*Default*__: false
11474
+ **projenrcJsonOptions**?🔹 | <code>[json.ProjenrcOptions](#projen-json-projenrcoptions)</code> | Options for .projenrc.json.<br/>__*Default*__: default options
11475
+ **readme**?🔹 | <code>[SampleReadmeProps](#projen-samplereadmeprops)</code> | The README setup.<br/>__*Default*__: { filename: 'README.md', contents: '# replace this' }
11476
+ **requireApproval**?🔹 | <code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code> | 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.<br/>__*Default*__: ApprovalLevel.BROADENING
11477
+ **sample**?🔹 | <code>boolean</code> | Include sample code and test if the relevant directories don't exist.<br/>__*Optional*__
11478
+ **sampleJavaPackage**?🔹 | <code>string</code> | The java package to use for the code sample.<br/>__*Default*__: "org.acme"
11479
+ **stale**?🔹 | <code>boolean</code> | Auto-close of stale issues and pull request.<br/>__*Default*__: true
11480
+ **staleOptions**?🔹 | <code>[github.StaleOptions](#projen-github-staleoptions)</code> | Auto-close stale issues and pull requests.<br/>__*Default*__: see defaults in `StaleOptions`
11481
+ **testDeps**?🔹 | <code>Array<string></code> | List of test dependencies for this project.<br/>__*Default*__: []
11482
+ **url**?🔹 | <code>string</code> | The URL, like the name, is not required.<br/>__*Default*__: undefined
11483
+ **vscode**?🔹 | <code>boolean</code> | Enable VSCode integration.<br/>__*Default*__: true
11484
+
11485
+
11486
+
11487
+ ## struct CdkConfigCommonOptions 🔹 <a id="projen-awscdk-cdkconfigcommonoptions"></a>
11488
+
11489
+
11490
+ Common options for `cdk.json`.
11491
+
11492
+
11493
+
11494
+ Name | Type | Description
11495
+ -----|------|-------------
11496
+ **cdkout**?🔹 | <code>string</code> | cdk.out directory.<br/>__*Default*__: "cdk.out"
11497
+ **context**?🔹 | <code>Map<string, string></code> | Additional context to include in `cdk.json`.<br/>__*Default*__: no additional context
11498
+ **featureFlags**?🔹 | <code>boolean</code> | Include all feature flags in cdk.json.<br/>__*Default*__: true
11499
+ **requireApproval**?🔹 | <code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code> | 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.<br/>__*Default*__: ApprovalLevel.BROADENING
11500
+
11501
+
11502
+
11503
+ ## struct CdkConfigOptions 🔹 <a id="projen-awscdk-cdkconfigoptions"></a>
11504
+
11505
+
11506
+ Options for `CdkJson`.
11507
+
11508
+
11509
+
11510
+ Name | Type | Description
11511
+ -----|------|-------------
11512
+ **app**🔹 | <code>string</code> | The command line to execute in order to synthesize the CDK application (language specific).
11513
+ **cdkout**?🔹 | <code>string</code> | cdk.out directory.<br/>__*Default*__: "cdk.out"
11514
+ **context**?🔹 | <code>Map<string, string></code> | Additional context to include in `cdk.json`.<br/>__*Default*__: no additional context
11515
+ **featureFlags**?🔹 | <code>boolean</code> | Include all feature flags in cdk.json.<br/>__*Default*__: true
11516
+ **requireApproval**?🔹 | <code>[awscdk.ApprovalLevel](#projen-awscdk-approvallevel)</code> | 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.<br/>__*Default*__: ApprovalLevel.BROADENING
11517
+
11518
+
11519
+
11197
11520
  ## struct Dependency 🔹 <a id="projen-deps-dependency"></a>
11198
11521
 
11199
11522
  __Obtainable from__: [Dependencies](#projen-deps-dependencies).[addDependency](#projen-deps-dependencies#projen-deps-dependencies-adddependency)(), [Dependencies](#projen-deps-dependencies).[getDependency](#projen-deps-dependencies#projen-deps-dependencies-getdependency)(), [JavaProject](#projen-java-javaproject).[addPlugin](#projen-java-javaproject#projen-java-javaproject-addplugin)(), [Pom](#projen-java-pom).[addPlugin](#projen-java-pom#projen-java-pom-addplugin)()
@@ -11481,6 +11804,52 @@ Name | Type | Description
11481
11804
 
11482
11805
 
11483
11806
 
11807
+ ## struct JavaProjectCommonOptions 🔹 <a id="projen-java-javaprojectcommonoptions"></a>
11808
+
11809
+
11810
+ Options for `JavaProject`.
11811
+
11812
+
11813
+
11814
+ Name | Type | Description
11815
+ -----|------|-------------
11816
+ **artifactId**🔹 | <code>string</code> | The artifactId is generally the name that the project is known by.
11817
+ **groupId**🔹 | <code>string</code> | This is generally unique amongst an organization or a project.
11818
+ **name**🔹 | <code>string</code> | This is the name of your project.
11819
+ **version**🔹 | <code>string</code> | This is the last piece of the naming puzzle.
11820
+ **autoApproveOptions**?🔹 | <code>[github.AutoApproveOptions](#projen-github-autoapproveoptions)</code> | Enable and configure the 'auto approve' workflow.<br/>__*Default*__: auto approve is disabled
11821
+ **autoMergeOptions**?🔹 | <code>[github.AutoMergeOptions](#projen-github-automergeoptions)</code> | Configure options for automatic merging on GitHub.<br/>__*Default*__: see defaults in `AutoMergeOptions`
11822
+ **clobber**?🔹 | <code>boolean</code> | Add a `clobber` task which resets the repo to origin.<br/>__*Default*__: true
11823
+ **compileOptions**?🔹 | <code>[java.MavenCompileOptions](#projen-java-mavencompileoptions)</code> | Compile options.<br/>__*Default*__: defaults
11824
+ **deps**?🔹 | <code>Array<string></code> | List of runtime dependencies for this project.<br/>__*Default*__: []
11825
+ **description**?🔹 | <code>string</code> | Description of a project is always good.<br/>__*Default*__: undefined
11826
+ **devContainer**?🔹 | <code>boolean</code> | Add a VSCode development environment (used for GitHub Codespaces).<br/>__*Default*__: false
11827
+ **distdir**?🔹 | <code>string</code> | Final artifact output directory.<br/>__*Default*__: "dist/java"
11828
+ **github**?🔹 | <code>boolean</code> | Enable GitHub integration.<br/>__*Default*__: true
11829
+ **githubOptions**?🔹 | <code>[github.GitHubOptions](#projen-github-githuboptions)</code> | Options for GitHub integration.<br/>__*Default*__: see GitHubOptions
11830
+ **gitpod**?🔹 | <code>boolean</code> | Add a Gitpod development environment.<br/>__*Default*__: false
11831
+ **junit**?🔹 | <code>boolean</code> | Include junit tests.<br/>__*Default*__: true
11832
+ **junitOptions**?🔹 | <code>[java.JunitOptions](#projen-java-junitoptions)</code> | junit options.<br/>__*Default*__: defaults
11833
+ **logging**?🔹 | <code>[LoggerOptions](#projen-loggeroptions)</code> | Configure logging options such as verbosity.<br/>__*Default*__: {}
11834
+ **mergify**?⚠️ | <code>boolean</code> | Whether mergify should be enabled on this repository or not.<br/>__*Default*__: true
11835
+ **outdir**?🔹 | <code>string</code> | The root directory of the project.<br/>__*Default*__: "."
11836
+ **packaging**?🔹 | <code>string</code> | Project packaging format.<br/>__*Default*__: "jar"
11837
+ **packagingOptions**?🔹 | <code>[java.MavenPackagingOptions](#projen-java-mavenpackagingoptions)</code> | Packaging options.<br/>__*Default*__: defaults
11838
+ **parent**?🔹 | <code>[Project](#projen-project)</code> | The parent project, if this project is part of a bigger project.<br/>__*Optional*__
11839
+ **projectType**?⚠️ | <code>[ProjectType](#projen-projecttype)</code> | Which type of project this is (library/app).<br/>__*Default*__: ProjectType.UNKNOWN
11840
+ **projenrcJava**?🔹 | <code>boolean</code> | Use projenrc in java.<br/>__*Default*__: true
11841
+ **projenrcJavaOptions**?🔹 | <code>[java.ProjenrcOptions](#projen-java-projenrcoptions)</code> | Options related to projenrc in java.<br/>__*Default*__: default options
11842
+ **projenrcJson**?🔹 | <code>boolean</code> | Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation.<br/>__*Default*__: false
11843
+ **projenrcJsonOptions**?🔹 | <code>[json.ProjenrcOptions](#projen-json-projenrcoptions)</code> | Options for .projenrc.json.<br/>__*Default*__: default options
11844
+ **readme**?🔹 | <code>[SampleReadmeProps](#projen-samplereadmeprops)</code> | The README setup.<br/>__*Default*__: { filename: 'README.md', contents: '# replace this' }
11845
+ **stale**?🔹 | <code>boolean</code> | Auto-close of stale issues and pull request.<br/>__*Default*__: true
11846
+ **staleOptions**?🔹 | <code>[github.StaleOptions](#projen-github-staleoptions)</code> | Auto-close stale issues and pull requests.<br/>__*Default*__: see defaults in `StaleOptions`
11847
+ **testDeps**?🔹 | <code>Array<string></code> | List of test dependencies for this project.<br/>__*Default*__: []
11848
+ **url**?🔹 | <code>string</code> | The URL, like the name, is not required.<br/>__*Default*__: undefined
11849
+ **vscode**?🔹 | <code>boolean</code> | Enable VSCode integration.<br/>__*Default*__: true
11850
+
11851
+
11852
+
11484
11853
  ## struct JavaProjectOptions 🔹 <a id="projen-java-javaprojectoptions"></a>
11485
11854
 
11486
11855
 
@@ -13126,17 +13495,6 @@ Name | Description
13126
13495
  **DAILY** 🔹|Automatically bump & release a new version on a daily basis.
13127
13496
 
13128
13497
 
13129
- ## enum CdkApprovalLevel 🔹 <a id="projen-cdkapprovallevel"></a>
13130
-
13131
-
13132
-
13133
- Name | Description
13134
- -----|-----
13135
- **NEVER** 🔹|Approval is never required.
13136
- **ANY_CHANGE** 🔹|Requires approval on any IAM or security-group-related change.
13137
- **BROADENING** 🔹|Requires approval when IAM statements or traffic rules are added;
13138
-
13139
-
13140
13498
  ## enum DockerComposeProtocol 🔹 <a id="projen-dockercomposeprotocol"></a>
13141
13499
 
13142
13500
  Network protocol for port mapping.
@@ -13288,6 +13646,17 @@ Name | Description
13288
13646
  **NODE** 🔹|Resolution strategy which attempts to mimic the Node.js module resolution strategy at runtime.
13289
13647
 
13290
13648
 
13649
+ ## enum ApprovalLevel 🔹 <a id="projen-awscdk-approvallevel"></a>
13650
+
13651
+ Which approval is required when deploying CDK apps.
13652
+
13653
+ Name | Description
13654
+ -----|-----
13655
+ **NEVER** 🔹|Approval is never required.
13656
+ **ANY_CHANGE** 🔹|Requires approval on any IAM or security-group-related change.
13657
+ **BROADENING** 🔹|Requires approval when IAM statements or traffic rules are added;
13658
+
13659
+
13291
13660
  ## enum DependencyType 🔹 <a id="projen-deps-dependencytype"></a>
13292
13661
 
13293
13662
  Type of dependency.
package/README.md CHANGED
@@ -46,6 +46,7 @@ Currently supported project types (use `npx projen new` without a type for a
46
46
  list):
47
47
 
48
48
  <!-- <macro exec="node ./scripts/readme-projects.js"> -->
49
+ * [awscdk-app-java](https://github.com/projen/projen/blob/main/API.md#projen-awscdk-awscdkjavaapp) - AWS CDK app in Java.
49
50
  * [awscdk-app-ts](https://github.com/projen/projen/blob/main/API.md#projen-awscdktypescriptapp) - AWS CDK app in TypeScript.
50
51
  * [awscdk-construct](https://github.com/projen/projen/blob/main/API.md#projen-awscdkconstructlibrary) - AWS CDK construct library project.
51
52
  * [cdk8s-app-ts](https://github.com/projen/projen/blob/main/API.md#projen-cdk8stypescriptapp) - CDK8s app in TypeScript.
@@ -0,0 +1,56 @@
1
+ # Programmatic API
2
+
3
+ Projen exposes a programmatic API that allows you to create new projects through
4
+ code instead of the regular CLI command `npx projen new`. This allows projen to
5
+ be used to create new projects within scripts and other contexts.
6
+
7
+ ## Example
8
+
9
+ ```js
10
+ const { Projects } = require('projen');
11
+
12
+ Projects.createProject({
13
+ dir: '/path/to/mydir',
14
+ projectFqn: 'projen.TypeScriptProject',
15
+ projectOptions: {
16
+ name: 'my-test-project',
17
+ defaultReleaseBranch: 'main',
18
+ projenrcTs: true,
19
+ eslintOptions: {
20
+ dirs: ['src', 'test'],
21
+ prettier: true,
22
+ aliasMap: {
23
+ '@src': './src',
24
+ '@components': './src/components',
25
+ },
26
+ },
27
+ },
28
+ post: false,
29
+ // synth: true (default)
30
+ // optionHints: 'featured' (default)
31
+ });
32
+ ```
33
+
34
+ This script creates a new TypeScript project at `/path/to/mydir` in my file
35
+ system. The `.projenrc.ts` file it generates comes pre-included with options
36
+ specified, including complex values for fields that cannot normally be provided
37
+ through the CLI, like `eslintOptions` (because the field requires an object
38
+ value).
39
+
40
+ In the above example, the provided option `post: false` was also added to
41
+ disable post-installation steps such as installing NPM dependencies.
42
+
43
+ > **Note:** It is important that you provide all fields that are required by the
44
+ project type, otherwise the project may not synthesize properly.
45
+
46
+ It is also possible to use this for installing external project types.
47
+ Currently, this requires you to install the package so that it can be used by
48
+ projen.
49
+
50
+ ```js
51
+ Projects.createProject({
52
+ // ...
53
+ projectFqn: '@myorg/my-package.MyJsiiProject',
54
+ });
55
+ ```
56
+