projen 0.103.4 → 0.103.5

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 (231) hide show
  1. package/.jsii +1547 -18
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/cdktn/cdktn-app-ts.js +1 -1
  33. package/lib/cdktn/cdktn-config.js +1 -1
  34. package/lib/cdktn/cdktn-construct.js +1 -1
  35. package/lib/cdktn/cdktn-deps.js +1 -1
  36. package/lib/cdktn/cdktn-tasks.js +1 -1
  37. package/lib/circleci/circleci.js +1 -1
  38. package/lib/component.js +2 -2
  39. package/lib/dependencies.js +1 -1
  40. package/lib/dev-env.js +1 -1
  41. package/lib/docker-compose/docker-compose-service.js +1 -1
  42. package/lib/docker-compose/docker-compose.js +1 -1
  43. package/lib/file.js +1 -1
  44. package/lib/gitattributes.js +1 -1
  45. package/lib/github/actions-provider.js +1 -1
  46. package/lib/github/auto-approve.js +1 -1
  47. package/lib/github/auto-merge.js +1 -1
  48. package/lib/github/auto-queue.js +1 -1
  49. package/lib/github/dependabot.js +1 -1
  50. package/lib/github/dependency-review.js +1 -1
  51. package/lib/github/github-credentials.js +1 -1
  52. package/lib/github/github-project.js +1 -1
  53. package/lib/github/github.js +1 -1
  54. package/lib/github/merge-queue.js +1 -1
  55. package/lib/github/mergify.js +1 -1
  56. package/lib/github/pr-template.js +1 -1
  57. package/lib/github/pull-request-backport.js +1 -1
  58. package/lib/github/pull-request-lint.js +1 -1
  59. package/lib/github/stale.js +1 -1
  60. package/lib/github/task-workflow-job.js +1 -1
  61. package/lib/github/task-workflow.js +1 -1
  62. package/lib/github/workflow-actions.js +1 -1
  63. package/lib/github/workflow-jobs.js +1 -1
  64. package/lib/github/workflow-steps.js +1 -1
  65. package/lib/github/workflows.js +1 -1
  66. package/lib/gitlab/configuration.js +1 -1
  67. package/lib/gitlab/gitlab-configuration.js +1 -1
  68. package/lib/gitlab/nested-configuration.js +1 -1
  69. package/lib/gitpod.js +1 -1
  70. package/lib/ignore-file.js +1 -1
  71. package/lib/index.d.ts +2 -0
  72. package/lib/index.js +4 -2
  73. package/lib/ini.js +1 -1
  74. package/lib/java/java-project.js +1 -1
  75. package/lib/java/junit.js +1 -1
  76. package/lib/java/maven-compile.js +1 -1
  77. package/lib/java/maven-packaging.js +1 -1
  78. package/lib/java/maven-sample.js +1 -1
  79. package/lib/java/pom.js +2 -2
  80. package/lib/java/projenrc.js +1 -1
  81. package/lib/javascript/biome/biome.js +1 -1
  82. package/lib/javascript/bundler.js +1 -1
  83. package/lib/javascript/eslint.js +1 -1
  84. package/lib/javascript/jest.js +4 -4
  85. package/lib/javascript/license-checker.js +1 -1
  86. package/lib/javascript/node-config-file.js +1 -1
  87. package/lib/javascript/node-package.js +1 -1
  88. package/lib/javascript/node-project.js +1 -1
  89. package/lib/javascript/npm-config.js +1 -1
  90. package/lib/javascript/pnpm-workspace-config.js +2 -2
  91. package/lib/javascript/pnpm-workspace.js +1 -1
  92. package/lib/javascript/prettier.js +1 -1
  93. package/lib/javascript/projenrc.js +1 -1
  94. package/lib/javascript/typescript-config.js +2 -2
  95. package/lib/javascript/upgrade-dependencies.js +2 -2
  96. package/lib/javascript/yarnrc.js +1 -1
  97. package/lib/json-patch.js +1 -1
  98. package/lib/json.js +1 -1
  99. package/lib/license.js +1 -1
  100. package/lib/logger.js +1 -1
  101. package/lib/makefile.js +1 -1
  102. package/lib/object-file.js +1 -1
  103. package/lib/project-build.js +1 -1
  104. package/lib/project-tree.js +1 -1
  105. package/lib/project.js +1 -1
  106. package/lib/projects.js +1 -1
  107. package/lib/projenrc-json.js +1 -1
  108. package/lib/projenrc.js +1 -1
  109. package/lib/properties-file.d.ts +50 -0
  110. package/lib/properties-file.js +77 -0
  111. package/lib/python/pip.js +1 -1
  112. package/lib/python/poetry.js +2 -2
  113. package/lib/python/projenrc.js +1 -1
  114. package/lib/python/pyproject-toml-file.js +1 -1
  115. package/lib/python/pytest-sample.js +1 -1
  116. package/lib/python/pytest.js +1 -1
  117. package/lib/python/python-project.js +1 -1
  118. package/lib/python/python-sample.js +1 -1
  119. package/lib/python/requirements-file.js +1 -1
  120. package/lib/python/setuppy.js +1 -1
  121. package/lib/python/setuptools.js +1 -1
  122. package/lib/python/uv-config.js +1 -1
  123. package/lib/python/uv.js +1 -1
  124. package/lib/python/venv.js +1 -1
  125. package/lib/readme.js +1 -1
  126. package/lib/release/publisher.js +1 -1
  127. package/lib/release/release-trigger.js +1 -1
  128. package/lib/release/release.js +1 -1
  129. package/lib/renovatebot.js +1 -1
  130. package/lib/run-task.cjs +4 -2
  131. package/lib/sample-file.js +2 -2
  132. package/lib/script-runner.js +1 -1
  133. package/lib/sonarqube/index.d.ts +4 -0
  134. package/lib/sonarqube/index.js +21 -0
  135. package/lib/sonarqube/javascript.d.ts +35 -0
  136. package/lib/sonarqube/javascript.js +57 -0
  137. package/lib/sonarqube/rust.d.ts +37 -0
  138. package/lib/sonarqube/rust.js +58 -0
  139. package/lib/sonarqube/sonarqube.d.ts +439 -0
  140. package/lib/sonarqube/sonarqube.js +184 -0
  141. package/lib/sonarqube/typescript.d.ts +36 -0
  142. package/lib/sonarqube/typescript.js +61 -0
  143. package/lib/source-code.js +1 -1
  144. package/lib/task-shell.js +1 -1
  145. package/lib/task.js +1 -1
  146. package/lib/tasks.js +1 -1
  147. package/lib/testing.js +1 -1
  148. package/lib/textfile.js +1 -1
  149. package/lib/toml.js +1 -1
  150. package/lib/typescript/projenrc-ts.js +1 -1
  151. package/lib/typescript/projenrc.js +1 -1
  152. package/lib/typescript/typescript-runner.js +1 -1
  153. package/lib/typescript/typescript-typedoc.js +1 -1
  154. package/lib/typescript/typescript.js +5 -5
  155. package/lib/util.d.ts +9 -0
  156. package/lib/util.js +39 -1
  157. package/lib/version.js +2 -2
  158. package/lib/vscode/devcontainer.js +1 -1
  159. package/lib/vscode/extensions.js +1 -1
  160. package/lib/vscode/launch-config.js +1 -1
  161. package/lib/vscode/settings.js +1 -1
  162. package/lib/vscode/vscode.js +1 -1
  163. package/lib/web/next.js +3 -3
  164. package/lib/web/postcss.js +1 -1
  165. package/lib/web/react.js +3 -3
  166. package/lib/web/tailwind.js +1 -1
  167. package/lib/xmlfile.js +1 -1
  168. package/lib/yaml.js +1 -1
  169. package/node_modules/properties-file/LICENSE +21 -0
  170. package/node_modules/properties-file/README.md +253 -0
  171. package/node_modules/properties-file/dist/cjs/bundler/bun.d.ts +10 -0
  172. package/node_modules/properties-file/dist/cjs/bundler/bun.js +1 -0
  173. package/node_modules/properties-file/dist/cjs/bundler/esbuild.d.ts +11 -0
  174. package/node_modules/properties-file/dist/cjs/bundler/esbuild.js +1 -0
  175. package/node_modules/properties-file/dist/cjs/bundler/rollup.d.ts +11 -0
  176. package/node_modules/properties-file/dist/cjs/bundler/rollup.js +1 -0
  177. package/node_modules/properties-file/dist/cjs/bundler/webpack.d.ts +12 -0
  178. package/node_modules/properties-file/dist/cjs/bundler/webpack.js +1 -0
  179. package/node_modules/properties-file/dist/cjs/characters.d.ts +32 -0
  180. package/node_modules/properties-file/dist/cjs/characters.js +1 -0
  181. package/node_modules/properties-file/dist/cjs/editor/index.d.ts +181 -0
  182. package/node_modules/properties-file/dist/cjs/editor/index.js +1 -0
  183. package/node_modules/properties-file/dist/cjs/escape/index.d.ts +18 -0
  184. package/node_modules/properties-file/dist/cjs/escape/index.js +1 -0
  185. package/node_modules/properties-file/dist/cjs/index.d.ts +25 -0
  186. package/node_modules/properties-file/dist/cjs/index.js +1 -0
  187. package/node_modules/properties-file/dist/cjs/package.json +1 -0
  188. package/node_modules/properties-file/dist/cjs/parser/index.d.ts +3 -0
  189. package/node_modules/properties-file/dist/cjs/parser/index.js +1 -0
  190. package/node_modules/properties-file/dist/cjs/parser/nodes.d.ts +154 -0
  191. package/node_modules/properties-file/dist/cjs/parser/nodes.js +1 -0
  192. package/node_modules/properties-file/dist/cjs/parser/normalize.d.ts +12 -0
  193. package/node_modules/properties-file/dist/cjs/parser/normalize.js +1 -0
  194. package/node_modules/properties-file/dist/cjs/parser/parse.d.ts +23 -0
  195. package/node_modules/properties-file/dist/cjs/parser/parse.js +1 -0
  196. package/node_modules/properties-file/dist/cjs/parser/properties.d.ts +93 -0
  197. package/node_modules/properties-file/dist/cjs/parser/properties.js +1 -0
  198. package/node_modules/properties-file/dist/cjs/properties-file.d.ts +8 -0
  199. package/node_modules/properties-file/dist/cjs/unescape/index.d.ts +14 -0
  200. package/node_modules/properties-file/dist/cjs/unescape/index.js +1 -0
  201. package/node_modules/properties-file/dist/esm/bundler/bun.d.ts +10 -0
  202. package/node_modules/properties-file/dist/esm/bundler/bun.js +1 -0
  203. package/node_modules/properties-file/dist/esm/bundler/esbuild.d.ts +11 -0
  204. package/node_modules/properties-file/dist/esm/bundler/esbuild.js +1 -0
  205. package/node_modules/properties-file/dist/esm/bundler/rollup.d.ts +11 -0
  206. package/node_modules/properties-file/dist/esm/bundler/rollup.js +1 -0
  207. package/node_modules/properties-file/dist/esm/bundler/webpack.d.ts +12 -0
  208. package/node_modules/properties-file/dist/esm/bundler/webpack.js +1 -0
  209. package/node_modules/properties-file/dist/esm/characters.d.ts +32 -0
  210. package/node_modules/properties-file/dist/esm/characters.js +1 -0
  211. package/node_modules/properties-file/dist/esm/editor/index.d.ts +181 -0
  212. package/node_modules/properties-file/dist/esm/editor/index.js +1 -0
  213. package/node_modules/properties-file/dist/esm/escape/index.d.ts +18 -0
  214. package/node_modules/properties-file/dist/esm/escape/index.js +1 -0
  215. package/node_modules/properties-file/dist/esm/index.d.ts +25 -0
  216. package/node_modules/properties-file/dist/esm/index.js +1 -0
  217. package/node_modules/properties-file/dist/esm/parser/index.d.ts +3 -0
  218. package/node_modules/properties-file/dist/esm/parser/index.js +1 -0
  219. package/node_modules/properties-file/dist/esm/parser/nodes.d.ts +154 -0
  220. package/node_modules/properties-file/dist/esm/parser/nodes.js +1 -0
  221. package/node_modules/properties-file/dist/esm/parser/normalize.d.ts +12 -0
  222. package/node_modules/properties-file/dist/esm/parser/normalize.js +1 -0
  223. package/node_modules/properties-file/dist/esm/parser/parse.d.ts +23 -0
  224. package/node_modules/properties-file/dist/esm/parser/parse.js +1 -0
  225. package/node_modules/properties-file/dist/esm/parser/properties.d.ts +93 -0
  226. package/node_modules/properties-file/dist/esm/parser/properties.js +1 -0
  227. package/node_modules/properties-file/dist/esm/properties-file.d.ts +8 -0
  228. package/node_modules/properties-file/dist/esm/unescape/index.d.ts +14 -0
  229. package/node_modules/properties-file/dist/esm/unescape/index.js +1 -0
  230. package/node_modules/properties-file/package.json +190 -0
  231. package/package.json +4 -2
@@ -0,0 +1,37 @@
1
+ import type { IConstruct } from "constructs";
2
+ import { SonarqubeProperties } from "./sonarqube";
3
+ import type { SonarqubePropertiesOptions } from "./sonarqube";
4
+ /**
5
+ * Options for `SonarqubeRustProperties`.
6
+ *
7
+ * Extends base options with Rust-specific defaults.
8
+ */
9
+ export interface SonarqubeRustPropertiesOptions extends SonarqubePropertiesOptions {
10
+ }
11
+ /**
12
+ * A SonarQube configuration preset for Rust projects.
13
+ *
14
+ * Provides sensible defaults for Rust analysis:
15
+ * - `sonar.language` = `rust`
16
+ * - `sonar.sources` = `src`
17
+ * - `sonar.tests` = `tests`
18
+ * - `sonar.sourceEncoding` = `UTF-8`
19
+ * - `sonar.profile` = `Sonar Way`
20
+ * - `sonar.scm.provider` = `git`
21
+ * - Typical exclusions for `coverage`, test, and `target` dirs
22
+ * - `sonar.rust.lcov.reportPaths` = `target/lcov.info`
23
+ * - `sonar.rust.clippy.enabled` = `false`
24
+ * - `sonar.rust.clippyReport.reportPaths` = `target/clippy.json`
25
+ *
26
+ * All defaults can be overridden via options. Nested options (e.g. `coverage`,
27
+ * `rust`) are deep-merged with the defaults, so overriding one nested field
28
+ * does not drop the other defaults in that subtree.
29
+ *
30
+ * @example
31
+ * new SonarqubeRustProperties(project, {
32
+ * projectKey: 'my-org_my-rust-project',
33
+ * });
34
+ */
35
+ export declare class SonarqubeRustProperties extends SonarqubeProperties {
36
+ constructor(scope: IConstruct, options: SonarqubeRustPropertiesOptions);
37
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SonarqubeRustProperties = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const sonarqube_1 = require("./sonarqube");
6
+ const util_1 = require("../util");
7
+ /**
8
+ * A SonarQube configuration preset for Rust projects.
9
+ *
10
+ * Provides sensible defaults for Rust analysis:
11
+ * - `sonar.language` = `rust`
12
+ * - `sonar.sources` = `src`
13
+ * - `sonar.tests` = `tests`
14
+ * - `sonar.sourceEncoding` = `UTF-8`
15
+ * - `sonar.profile` = `Sonar Way`
16
+ * - `sonar.scm.provider` = `git`
17
+ * - Typical exclusions for `coverage`, test, and `target` dirs
18
+ * - `sonar.rust.lcov.reportPaths` = `target/lcov.info`
19
+ * - `sonar.rust.clippy.enabled` = `false`
20
+ * - `sonar.rust.clippyReport.reportPaths` = `target/clippy.json`
21
+ *
22
+ * All defaults can be overridden via options. Nested options (e.g. `coverage`,
23
+ * `rust`) are deep-merged with the defaults, so overriding one nested field
24
+ * does not drop the other defaults in that subtree.
25
+ *
26
+ * @example
27
+ * new SonarqubeRustProperties(project, {
28
+ * projectKey: 'my-org_my-rust-project',
29
+ * });
30
+ */
31
+ class SonarqubeRustProperties extends sonarqube_1.SonarqubeProperties {
32
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.sonarqube.SonarqubeRustProperties", version: "0.103.5" };
33
+ constructor(scope, options) {
34
+ super(scope, (0, util_1.deepMerge)([
35
+ {
36
+ language: "rust",
37
+ sources: "src",
38
+ tests: "tests",
39
+ sourceEncoding: "UTF-8",
40
+ profile: "Sonar Way",
41
+ scm: { provider: "git" },
42
+ exclusions: ["**/coverage/**", "**/tests/**", "**/target/**"],
43
+ coverage: {
44
+ exclusions: ["**/tests/**", "**/target/**"],
45
+ },
46
+ cpd: { exclusions: ["**/tests/**/*.json"] },
47
+ rust: {
48
+ lcov: { reportPaths: ["target/lcov.info"] },
49
+ clippy: { enabled: false },
50
+ clippyReport: { reportPaths: ["target/clippy.json"] },
51
+ },
52
+ },
53
+ options,
54
+ ]));
55
+ }
56
+ }
57
+ exports.SonarqubeRustProperties = SonarqubeRustProperties;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb25hcnF1YmUvcnVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMkNBQWtEO0FBRWxELGtDQUFvQztBQVNwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLCtCQUFtQjs7SUFDOUQsWUFBWSxLQUFpQixFQUFFLE9BQXVDO1FBQ3BFLEtBQUssQ0FDSCxLQUFLLEVBQ0wsSUFBQSxnQkFBUyxFQUFDO1lBQ1I7Z0JBQ0UsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxPQUFPO2dCQUNkLGNBQWMsRUFBRSxPQUFPO2dCQUN2QixPQUFPLEVBQUUsV0FBVztnQkFDcEIsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDeEIsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQztnQkFDN0QsUUFBUSxFQUFFO29CQUNSLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUM7aUJBQzVDO2dCQUNELEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQzNDLElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUMzQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO29CQUMxQixZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO2lCQUN0RDthQUNGO1lBQ0QsT0FBTztTQUNSLENBQW1DLENBQ3JDLENBQUM7SUFDSixDQUFDOztBQTFCSCwwREEyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU29uYXJxdWJlUHJvcGVydGllcyB9IGZyb20gXCIuL3NvbmFycXViZVwiO1xuaW1wb3J0IHR5cGUgeyBTb25hcnF1YmVQcm9wZXJ0aWVzT3B0aW9ucyB9IGZyb20gXCIuL3NvbmFycXViZVwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgU29uYXJxdWJlUnVzdFByb3BlcnRpZXNgLlxuICpcbiAqIEV4dGVuZHMgYmFzZSBvcHRpb25zIHdpdGggUnVzdC1zcGVjaWZpYyBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb25hcnF1YmVSdXN0UHJvcGVydGllc09wdGlvbnMgZXh0ZW5kcyBTb25hcnF1YmVQcm9wZXJ0aWVzT3B0aW9ucyB7fVxuXG4vKipcbiAqIEEgU29uYXJRdWJlIGNvbmZpZ3VyYXRpb24gcHJlc2V0IGZvciBSdXN0IHByb2plY3RzLlxuICpcbiAqIFByb3ZpZGVzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciBSdXN0IGFuYWx5c2lzOlxuICogLSBgc29uYXIubGFuZ3VhZ2VgID0gYHJ1c3RgXG4gKiAtIGBzb25hci5zb3VyY2VzYCA9IGBzcmNgXG4gKiAtIGBzb25hci50ZXN0c2AgPSBgdGVzdHNgXG4gKiAtIGBzb25hci5zb3VyY2VFbmNvZGluZ2AgPSBgVVRGLThgXG4gKiAtIGBzb25hci5wcm9maWxlYCA9IGBTb25hciBXYXlgXG4gKiAtIGBzb25hci5zY20ucHJvdmlkZXJgID0gYGdpdGBcbiAqIC0gVHlwaWNhbCBleGNsdXNpb25zIGZvciBgY292ZXJhZ2VgLCB0ZXN0LCBhbmQgYHRhcmdldGAgZGlyc1xuICogLSBgc29uYXIucnVzdC5sY292LnJlcG9ydFBhdGhzYCA9IGB0YXJnZXQvbGNvdi5pbmZvYFxuICogLSBgc29uYXIucnVzdC5jbGlwcHkuZW5hYmxlZGAgPSBgZmFsc2VgXG4gKiAtIGBzb25hci5ydXN0LmNsaXBweVJlcG9ydC5yZXBvcnRQYXRoc2AgPSBgdGFyZ2V0L2NsaXBweS5qc29uYFxuICpcbiAqIEFsbCBkZWZhdWx0cyBjYW4gYmUgb3ZlcnJpZGRlbiB2aWEgb3B0aW9ucy4gTmVzdGVkIG9wdGlvbnMgKGUuZy4gYGNvdmVyYWdlYCxcbiAqIGBydXN0YCkgYXJlIGRlZXAtbWVyZ2VkIHdpdGggdGhlIGRlZmF1bHRzLCBzbyBvdmVycmlkaW5nIG9uZSBuZXN0ZWQgZmllbGRcbiAqIGRvZXMgbm90IGRyb3AgdGhlIG90aGVyIGRlZmF1bHRzIGluIHRoYXQgc3VidHJlZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3IFNvbmFycXViZVJ1c3RQcm9wZXJ0aWVzKHByb2plY3QsIHtcbiAqICAgcHJvamVjdEtleTogJ215LW9yZ19teS1ydXN0LXByb2plY3QnLFxuICogfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBTb25hcnF1YmVSdXN0UHJvcGVydGllcyBleHRlbmRzIFNvbmFycXViZVByb3BlcnRpZXMge1xuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogU29uYXJxdWJlUnVzdFByb3BlcnRpZXNPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGRlZXBNZXJnZShbXG4gICAgICAgIHtcbiAgICAgICAgICBsYW5ndWFnZTogXCJydXN0XCIsXG4gICAgICAgICAgc291cmNlczogXCJzcmNcIixcbiAgICAgICAgICB0ZXN0czogXCJ0ZXN0c1wiLFxuICAgICAgICAgIHNvdXJjZUVuY29kaW5nOiBcIlVURi04XCIsXG4gICAgICAgICAgcHJvZmlsZTogXCJTb25hciBXYXlcIixcbiAgICAgICAgICBzY206IHsgcHJvdmlkZXI6IFwiZ2l0XCIgfSxcbiAgICAgICAgICBleGNsdXNpb25zOiBbXCIqKi9jb3ZlcmFnZS8qKlwiLCBcIioqL3Rlc3RzLyoqXCIsIFwiKiovdGFyZ2V0LyoqXCJdLFxuICAgICAgICAgIGNvdmVyYWdlOiB7XG4gICAgICAgICAgICBleGNsdXNpb25zOiBbXCIqKi90ZXN0cy8qKlwiLCBcIioqL3RhcmdldC8qKlwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNwZDogeyBleGNsdXNpb25zOiBbXCIqKi90ZXN0cy8qKi8qLmpzb25cIl0gfSxcbiAgICAgICAgICBydXN0OiB7XG4gICAgICAgICAgICBsY292OiB7IHJlcG9ydFBhdGhzOiBbXCJ0YXJnZXQvbGNvdi5pbmZvXCJdIH0sXG4gICAgICAgICAgICBjbGlwcHk6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIGNsaXBweVJlcG9ydDogeyByZXBvcnRQYXRoczogW1widGFyZ2V0L2NsaXBweS5qc29uXCJdIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIF0pIGFzIFNvbmFycXViZVJ1c3RQcm9wZXJ0aWVzT3B0aW9ucyxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,439 @@
1
+ import type { IConstruct } from "constructs";
2
+ import { Component } from "../component";
3
+ import { PropertiesFile } from "../properties-file";
4
+ /**
5
+ * Log level for SonarQube analysis.
6
+ */
7
+ export declare enum SonarqubeLogLevel {
8
+ /** Standard logging (default) */
9
+ INFO = "INFO",
10
+ /** Verbose logging */
11
+ DEBUG = "DEBUG",
12
+ /** Most verbose, includes plugin/library output */
13
+ TRACE = "TRACE"
14
+ }
15
+ /**
16
+ * SonarQube Cloud region.
17
+ */
18
+ export declare enum SonarqubeRegion {
19
+ /** EU instance (default) */
20
+ EU = "eu",
21
+ /** US instance */
22
+ US = "us"
23
+ }
24
+ /**
25
+ * Options for `sonar.scm.*` properties.
26
+ */
27
+ export interface SonarqubeScmOptions {
28
+ /**
29
+ * The SCM provider to use.
30
+ *
31
+ * Maps to `sonar.scm.provider`.
32
+ *
33
+ * @default - auto-detected
34
+ */
35
+ readonly provider?: string;
36
+ /**
37
+ * Options for `sonar.scm.exclusions.*`.
38
+ *
39
+ * @default - no exclusion overrides
40
+ */
41
+ readonly exclusions?: SonarqubeScmExclusionsOptions;
42
+ }
43
+ /**
44
+ * Options for `sonar.scm.exclusions.*` properties.
45
+ */
46
+ export interface SonarqubeScmExclusionsOptions {
47
+ /**
48
+ * Whether to disable files ignored by the SCM (e.g., files in .gitignore)
49
+ * from being excluded from analysis.
50
+ *
51
+ * Maps to `sonar.scm.exclusions.disabled`.
52
+ *
53
+ * @default false
54
+ */
55
+ readonly disabled?: boolean;
56
+ }
57
+ /**
58
+ * Options for `sonar.coverage.*` properties.
59
+ */
60
+ export interface SonarqubeCoverageOptions {
61
+ /**
62
+ * Comma-separated file path patterns to exclude from test coverage
63
+ * calculations.
64
+ *
65
+ * Maps to `sonar.coverage.exclusions`.
66
+ *
67
+ * @default - no coverage exclusions
68
+ */
69
+ readonly exclusions?: string[];
70
+ }
71
+ /**
72
+ * Options for `sonar.cpd.*` properties.
73
+ */
74
+ export interface SonarqubeCpdOptions {
75
+ /**
76
+ * Comma-separated file path patterns to exclude from code
77
+ * duplication detection.
78
+ *
79
+ * Maps to `sonar.cpd.exclusions`.
80
+ *
81
+ * @default - no duplication exclusions
82
+ */
83
+ readonly exclusions?: string[];
84
+ }
85
+ /**
86
+ * Options for `sonar.javascript.*` properties.
87
+ */
88
+ export interface SonarqubeJavascriptOptions {
89
+ /**
90
+ * Options for `sonar.javascript.lcov.*`.
91
+ *
92
+ * @default - no LCOV configuration
93
+ */
94
+ readonly lcov?: SonarqubeLcovOptions;
95
+ }
96
+ /**
97
+ * Options for `sonar.typescript.*` properties.
98
+ */
99
+ export interface SonarqubeTypescriptOptions {
100
+ /**
101
+ * Path to the TypeScript configuration file.
102
+ *
103
+ * Maps to `sonar.typescript.tsconfigPath`.
104
+ *
105
+ * @default - not set
106
+ */
107
+ readonly tsconfigPath?: string;
108
+ }
109
+ /**
110
+ * Options for `sonar.rust.*` properties.
111
+ */
112
+ export interface SonarqubeRustOptions {
113
+ /**
114
+ * Options for `sonar.rust.lcov.*`.
115
+ *
116
+ * @default - no Rust LCOV configuration
117
+ */
118
+ readonly lcov?: SonarqubeLcovOptions;
119
+ /**
120
+ * Options for `sonar.rust.clippy.*`.
121
+ *
122
+ * @default - no clippy configuration
123
+ */
124
+ readonly clippy?: SonarqubeRustClippyOptions;
125
+ /**
126
+ * Options for `sonar.rust.clippyReport.*`.
127
+ *
128
+ * @default - no clippy report configuration
129
+ */
130
+ readonly clippyReport?: SonarqubeRustClippyReportOptions;
131
+ }
132
+ /**
133
+ * Options for lcov report paths (shared between languages).
134
+ */
135
+ export interface SonarqubeLcovOptions {
136
+ /**
137
+ * Comma-separated paths to LCOV coverage report files.
138
+ *
139
+ * Maps to `sonar.<language>.lcov.reportPaths`.
140
+ *
141
+ * @default - not set
142
+ */
143
+ readonly reportPaths?: string[];
144
+ }
145
+ /**
146
+ * Options for `sonar.rust.clippy.*` properties.
147
+ */
148
+ export interface SonarqubeRustClippyOptions {
149
+ /**
150
+ * Whether Clippy analysis is enabled.
151
+ *
152
+ * Maps to `sonar.rust.clippy.enabled`.
153
+ *
154
+ * @default true
155
+ */
156
+ readonly enabled?: boolean;
157
+ }
158
+ /**
159
+ * Options for `sonar.rust.clippyReport.*` properties.
160
+ */
161
+ export interface SonarqubeRustClippyReportOptions {
162
+ /**
163
+ * Paths to Clippy JSON report files.
164
+ *
165
+ * Maps to `sonar.rust.clippyReport.reportPaths`.
166
+ *
167
+ * @default - not set
168
+ */
169
+ readonly reportPaths?: string[];
170
+ }
171
+ /**
172
+ * Options for `sonar.log.*` properties.
173
+ */
174
+ export interface SonarqubeLogOptions {
175
+ /**
176
+ * Controls the quantity/level of logs produced during analysis.
177
+ *
178
+ * Maps to `sonar.log.level`.
179
+ *
180
+ * @default SonarqubeLogLevel.INFO
181
+ */
182
+ readonly level?: SonarqubeLogLevel;
183
+ }
184
+ /**
185
+ * Options for `sonar.qualitygate.*` properties.
186
+ */
187
+ export interface SonarqubeQualityGateOptions {
188
+ /**
189
+ * Forces the analysis step to poll the server and wait for the
190
+ * Quality Gate status. Will fail the pipeline if the quality gate fails.
191
+ *
192
+ * Maps to `sonar.qualitygate.wait`.
193
+ *
194
+ * @default false
195
+ */
196
+ readonly wait?: boolean;
197
+ /**
198
+ * The number of seconds that the scanner should wait for a report
199
+ * to be processed.
200
+ *
201
+ * Maps to `sonar.qualitygate.timeout`.
202
+ *
203
+ * @default 300
204
+ */
205
+ readonly timeout?: number;
206
+ }
207
+ /**
208
+ * Options for `SonarqubeProperties`.
209
+ *
210
+ * The interface structure mirrors the `sonar.*` dot-notation used in
211
+ * `sonar-project.properties`. Nested interfaces map to nested property
212
+ * namespaces. For example, `scm.provider` maps to `sonar.scm.provider`.
213
+ */
214
+ export interface SonarqubePropertiesOptions {
215
+ /**
216
+ * The project's unique key.
217
+ *
218
+ * Can include up to 400 characters. Allowed characters:
219
+ * letters, digits, dash, underscore, periods, and colons.
220
+ *
221
+ * Maps to `sonar.projectKey`. This parameter is mandatory.
222
+ */
223
+ readonly projectKey: string;
224
+ /**
225
+ * The key of the organization to which the project belongs.
226
+ *
227
+ * Maps to `sonar.organization`. Mandatory for SonarQube Cloud.
228
+ *
229
+ * @default - no organization
230
+ */
231
+ readonly organization?: string;
232
+ /**
233
+ * Name of the project displayed on the web interface.
234
+ *
235
+ * Maps to `sonar.projectName`.
236
+ *
237
+ * @default - not set
238
+ */
239
+ readonly projectName?: string;
240
+ /**
241
+ * The project version.
242
+ *
243
+ * Maps to `sonar.projectVersion`.
244
+ *
245
+ * @default - not set
246
+ */
247
+ readonly projectVersion?: string;
248
+ /**
249
+ * Comma-separated paths to directories containing main source code
250
+ * (non-test code).
251
+ *
252
+ * Maps to `sonar.sources`.
253
+ *
254
+ * @default - the project base directory
255
+ */
256
+ readonly sources?: string;
257
+ /**
258
+ * Comma-separated paths to directories containing test code.
259
+ *
260
+ * Maps to `sonar.tests`.
261
+ *
262
+ * @default - no test code analyzed
263
+ */
264
+ readonly tests?: string;
265
+ /**
266
+ * The project's base directory when the analysis needs to take place
267
+ * in a directory other than the one from which it was started.
268
+ *
269
+ * Maps to `sonar.projectBaseDir`.
270
+ *
271
+ * @default - the directory from which the analysis was started
272
+ */
273
+ readonly projectBaseDir?: string;
274
+ /**
275
+ * Encoding of the source files.
276
+ *
277
+ * Maps to `sonar.sourceEncoding`.
278
+ *
279
+ * @default - system encoding
280
+ */
281
+ readonly sourceEncoding?: string;
282
+ /**
283
+ * Comma-separated file path patterns to exclude from the analysis scope.
284
+ *
285
+ * Maps to `sonar.exclusions`.
286
+ *
287
+ * @default - no exclusions
288
+ */
289
+ readonly exclusions?: string[];
290
+ /**
291
+ * The language for analysis.
292
+ *
293
+ * Maps to `sonar.language`.
294
+ *
295
+ * @default - auto-detected
296
+ */
297
+ readonly language?: string;
298
+ /**
299
+ * The quality profile name.
300
+ *
301
+ * Maps to `sonar.profile`.
302
+ *
303
+ * @default - uses the default profile configured on the server
304
+ */
305
+ readonly profile?: string;
306
+ /**
307
+ * The SonarQube Cloud instance's region.
308
+ *
309
+ * Maps to `sonar.region`.
310
+ *
311
+ * @default SonarqubeRegion.EU
312
+ */
313
+ readonly region?: SonarqubeRegion;
314
+ /**
315
+ * SCM-related options (`sonar.scm.*`).
316
+ *
317
+ * @default - no SCM configuration
318
+ */
319
+ readonly scm?: SonarqubeScmOptions;
320
+ /**
321
+ * Coverage-related options (`sonar.coverage.*`).
322
+ *
323
+ * @default - no coverage configuration
324
+ */
325
+ readonly coverage?: SonarqubeCoverageOptions;
326
+ /**
327
+ * Duplication detection options (`sonar.cpd.*`).
328
+ *
329
+ * @default - no CPD configuration
330
+ */
331
+ readonly cpd?: SonarqubeCpdOptions;
332
+ /**
333
+ * JavaScript-specific options (`sonar.javascript.*`).
334
+ *
335
+ * @default - no JavaScript configuration
336
+ */
337
+ readonly javascript?: SonarqubeJavascriptOptions;
338
+ /**
339
+ * TypeScript-specific options (`sonar.typescript.*`).
340
+ *
341
+ * @default - no TypeScript configuration
342
+ */
343
+ readonly typescript?: SonarqubeTypescriptOptions;
344
+ /**
345
+ * Rust-specific options (`sonar.rust.*`).
346
+ *
347
+ * @default - no Rust configuration
348
+ */
349
+ readonly rust?: SonarqubeRustOptions;
350
+ /**
351
+ * Logging options (`sonar.log.*`).
352
+ *
353
+ * @default - INFO level
354
+ */
355
+ readonly log?: SonarqubeLogOptions;
356
+ /**
357
+ * Quality gate options (`sonar.qualitygate.*`).
358
+ *
359
+ * @default - quality gate not awaited
360
+ */
361
+ readonly qualitygate?: SonarqubeQualityGateOptions;
362
+ /**
363
+ * Additional arbitrary properties to include in the configuration.
364
+ *
365
+ * Use this for properties not covered by the typed options.
366
+ * Keys use dot-notation (e.g., `sonar.java.binaries`).
367
+ *
368
+ * These are applied as overrides after the typed options above, so a key
369
+ * that is a prefix of a typed option (e.g. `"sonar.coverage"`) replaces
370
+ * that entire subtree rather than merging with it.
371
+ *
372
+ * @default - no additional properties
373
+ */
374
+ readonly extraProperties?: Record<string, string>;
375
+ /**
376
+ * Options for the generated properties file.
377
+ *
378
+ * @default - default file options
379
+ */
380
+ readonly fileOptions?: SonarqubeFileOptions;
381
+ }
382
+ /**
383
+ * File options for the generated `sonar-project.properties` file.
384
+ */
385
+ export interface SonarqubeFileOptions {
386
+ /**
387
+ * Whether the generated file should be committed to git.
388
+ *
389
+ * @default true
390
+ */
391
+ readonly committed?: boolean;
392
+ /**
393
+ * Whether the generated file should be readonly.
394
+ *
395
+ * @default true
396
+ */
397
+ readonly readonly?: boolean;
398
+ /**
399
+ * Adds the projen marker to the file.
400
+ *
401
+ * @default - marker will be included as long as the project is not ejected
402
+ */
403
+ readonly marker?: boolean;
404
+ /**
405
+ * A comment to include at the top of the file.
406
+ *
407
+ * @default - no additional comment
408
+ */
409
+ readonly comment?: string[];
410
+ }
411
+ /**
412
+ * Manages the `sonar-project.properties` configuration file for SonarQube
413
+ * analysis.
414
+ *
415
+ * This component generates a `sonar-project.properties` file at the project
416
+ * root with the specified configuration parameters. It provides typed options
417
+ * whose structure mirrors the dot-notation property namespaces.
418
+ *
419
+ * @see https://docs.sonarsource.com/sonarqube-cloud/analyzing-source-code/analysis-parameters/parameters-not-settable-in-ui
420
+ *
421
+ * @example
422
+ * new SonarqubeProperties(project, {
423
+ * projectKey: 'my-org_my-project',
424
+ * organization: 'my-org',
425
+ * sources: 'src',
426
+ * tests: 'test',
427
+ * exclusions: ['*{@literal *}/node_modules/**'],
428
+ * coverage: { exclusions: ['*{@literal *}/test/**'] },
429
+ * javascript: { lcov: { reportPaths: ['coverage/lcov.info'] } },
430
+ * sourceEncoding: 'UTF-8',
431
+ * });
432
+ */
433
+ export declare class SonarqubeProperties extends Component {
434
+ /**
435
+ * The underlying properties file.
436
+ */
437
+ readonly file: PropertiesFile;
438
+ constructor(scope: IConstruct, options: SonarqubePropertiesOptions);
439
+ }