projen 0.102.0 → 0.103.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.jsii +1173 -1104
  2. package/README.md +23 -0
  3. package/lib/ai-instructions.js +2 -2
  4. package/lib/awscdk/auto-discover.js +6 -6
  5. package/lib/awscdk/awscdk-app-java.js +1 -1
  6. package/lib/awscdk/awscdk-app-py.js +1 -1
  7. package/lib/awscdk/awscdk-app-ts.js +1 -1
  8. package/lib/awscdk/awscdk-construct.js +1 -1
  9. package/lib/awscdk/awscdk-deps-java.js +1 -1
  10. package/lib/awscdk/awscdk-deps-js.js +1 -1
  11. package/lib/awscdk/awscdk-deps-py.js +1 -1
  12. package/lib/awscdk/awscdk-deps.js +1 -1
  13. package/lib/awscdk/cdk-config.d.ts +4 -0
  14. package/lib/awscdk/cdk-config.js +4 -4
  15. package/lib/awscdk/cdk-tasks.js +1 -1
  16. package/lib/awscdk/integration-test.d.ts +1 -0
  17. package/lib/awscdk/integration-test.js +38 -10
  18. package/lib/awscdk/lambda-extension.js +1 -1
  19. package/lib/awscdk/lambda-function.js +2 -2
  20. package/lib/build/build-workflow.js +4 -3
  21. package/lib/cdk/auto-discover-base.js +2 -2
  22. package/lib/cdk/construct-lib.js +1 -1
  23. package/lib/cdk/integration-test-base.js +17 -3
  24. package/lib/cdk/jsii-build.js +10 -4
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.d.ts +2 -4
  27. package/lib/cdk/jsii-project.js +10 -11
  28. package/lib/cdk8s/auto-discover.js +2 -2
  29. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  30. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  31. package/lib/cdk8s/cdk8s-construct.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  33. package/lib/cdk8s/cdk8s-deps.js +1 -1
  34. package/lib/cdk8s/integration-test.js +3 -3
  35. package/lib/cdktf/cdktf-construct.js +1 -1
  36. package/lib/cdktn/cdktn-app-ts.js +1 -1
  37. package/lib/cdktn/cdktn-config.js +1 -1
  38. package/lib/cdktn/cdktn-construct.js +1 -1
  39. package/lib/cdktn/cdktn-deps.js +1 -1
  40. package/lib/cdktn/cdktn-tasks.js +1 -1
  41. package/lib/circleci/circleci.js +1 -1
  42. package/lib/cleanup.js +6 -33
  43. package/lib/cli/task-runtime.js +30 -8
  44. package/lib/clobber.js +11 -6
  45. package/lib/component.js +2 -2
  46. package/lib/dependencies.js +1 -1
  47. package/lib/dev-env.js +1 -1
  48. package/lib/docker-compose/docker-compose-service.js +1 -1
  49. package/lib/docker-compose/docker-compose.js +1 -1
  50. package/lib/file.js +1 -1
  51. package/lib/gitattributes.js +1 -1
  52. package/lib/github/actions-provider.js +1 -1
  53. package/lib/github/auto-approve.d.ts +2 -15
  54. package/lib/github/auto-approve.js +3 -4
  55. package/lib/github/auto-merge.js +1 -1
  56. package/lib/github/auto-queue.d.ts +2 -6
  57. package/lib/github/auto-queue.js +3 -3
  58. package/lib/github/dependabot.js +1 -1
  59. package/lib/github/dependency-review.d.ts +2 -12
  60. package/lib/github/dependency-review.js +3 -4
  61. package/lib/github/github-credentials.js +1 -1
  62. package/lib/github/github-project.js +1 -1
  63. package/lib/github/github.d.ts +26 -0
  64. package/lib/github/github.js +17 -2
  65. package/lib/github/merge-queue.js +1 -1
  66. package/lib/github/mergify.js +1 -1
  67. package/lib/github/pr-template.js +1 -1
  68. package/lib/github/private/util.d.ts +0 -2
  69. package/lib/github/private/util.js +1 -13
  70. package/lib/github/pull-request-backport.d.ts +2 -1
  71. package/lib/github/pull-request-backport.js +3 -3
  72. package/lib/github/pull-request-lint.d.ts +2 -15
  73. package/lib/github/pull-request-lint.js +4 -5
  74. package/lib/github/stale.d.ts +2 -15
  75. package/lib/github/stale.js +3 -4
  76. package/lib/github/task-workflow-job.js +4 -4
  77. package/lib/github/task-workflow.js +1 -1
  78. package/lib/github/workflow-actions.js +4 -3
  79. package/lib/github/workflow-jobs.js +1 -1
  80. package/lib/github/workflow-steps.js +1 -1
  81. package/lib/github/workflows.js +1 -1
  82. package/lib/gitlab/configuration.js +1 -1
  83. package/lib/gitlab/gitlab-configuration.js +1 -1
  84. package/lib/gitlab/nested-configuration.js +1 -1
  85. package/lib/gitpod.d.ts +6 -0
  86. package/lib/gitpod.js +2 -2
  87. package/lib/ignore-file.js +1 -1
  88. package/lib/ini.js +1 -1
  89. package/lib/java/java-project.js +1 -1
  90. package/lib/java/junit.js +1 -1
  91. package/lib/java/maven-compile.js +1 -1
  92. package/lib/java/maven-packaging.js +8 -3
  93. package/lib/java/maven-sample.js +1 -1
  94. package/lib/java/pom.js +2 -2
  95. package/lib/java/projenrc.js +13 -4
  96. package/lib/javascript/biome/biome.js +9 -4
  97. package/lib/javascript/bundler.d.ts +8 -0
  98. package/lib/javascript/bundler.js +13 -13
  99. package/lib/javascript/eslint.d.ts +7 -0
  100. package/lib/javascript/eslint.js +14 -11
  101. package/lib/javascript/jest.d.ts +8 -0
  102. package/lib/javascript/jest.js +17 -11
  103. package/lib/javascript/license-checker.js +1 -1
  104. package/lib/javascript/node-package.d.ts +1 -1
  105. package/lib/javascript/node-package.js +32 -15
  106. package/lib/javascript/node-project.js +38 -25
  107. package/lib/javascript/npm-config.js +1 -1
  108. package/lib/javascript/pnpm-workspace-config.js +2 -2
  109. package/lib/javascript/pnpm-workspace.js +1 -1
  110. package/lib/javascript/prettier.js +1 -1
  111. package/lib/javascript/projenrc.js +1 -1
  112. package/lib/javascript/typescript-config.js +2 -2
  113. package/lib/javascript/upgrade-dependencies.js +9 -6
  114. package/lib/javascript/yarnrc.js +1 -1
  115. package/lib/json-patch.js +1 -1
  116. package/lib/json.js +1 -1
  117. package/lib/license.js +1 -1
  118. package/lib/logger.js +1 -1
  119. package/lib/makefile.d.ts +2 -0
  120. package/lib/makefile.js +2 -2
  121. package/lib/object-file.js +1 -1
  122. package/lib/project-build.js +1 -1
  123. package/lib/project-tree.js +1 -1
  124. package/lib/project.d.ts +4 -0
  125. package/lib/project.js +2 -2
  126. package/lib/projects.js +1 -1
  127. package/lib/projenrc-json.js +1 -1
  128. package/lib/projenrc.js +1 -1
  129. package/lib/python/pip.js +1 -1
  130. package/lib/python/poetry.js +7 -4
  131. package/lib/python/projenrc.js +1 -1
  132. package/lib/python/pyproject-toml-file.js +1 -1
  133. package/lib/python/pytest-sample.js +1 -1
  134. package/lib/python/pytest.d.ts +5 -2
  135. package/lib/python/pytest.js +9 -8
  136. package/lib/python/python-project.js +1 -1
  137. package/lib/python/python-sample.js +1 -1
  138. package/lib/python/requirements-file.js +1 -1
  139. package/lib/python/setuppy.js +1 -1
  140. package/lib/python/setuptools.js +10 -4
  141. package/lib/python/uv-config.js +1 -1
  142. package/lib/python/uv.js +3 -3
  143. package/lib/python/venv.js +1 -1
  144. package/lib/readme.js +1 -1
  145. package/lib/release/publisher.d.ts +5 -0
  146. package/lib/release/publisher.js +90 -37
  147. package/lib/release/release-trigger.d.ts +10 -0
  148. package/lib/release/release-trigger.js +7 -2
  149. package/lib/release/release.d.ts +17 -2
  150. package/lib/release/release.js +16 -10
  151. package/lib/renovatebot.js +1 -1
  152. package/lib/run-task.cjs +13 -4
  153. package/lib/runner-options.d.ts +34 -0
  154. package/lib/runner-options.js +1 -1
  155. package/lib/sample-file.js +2 -2
  156. package/lib/script-runner.js +1 -1
  157. package/lib/source-code.js +1 -1
  158. package/lib/task-model.d.ts +3 -3
  159. package/lib/task-model.js +1 -1
  160. package/lib/task-shell.d.ts +3 -0
  161. package/lib/task-shell.js +5 -2
  162. package/lib/task.d.ts +4 -0
  163. package/lib/task.js +2 -2
  164. package/lib/tasks.js +1 -1
  165. package/lib/testing.js +1 -1
  166. package/lib/textfile.js +1 -1
  167. package/lib/toml.js +1 -1
  168. package/lib/typescript/projenrc-ts.js +1 -1
  169. package/lib/typescript/projenrc.js +1 -1
  170. package/lib/typescript/typescript-runner.js +1 -1
  171. package/lib/typescript/typescript-typedoc.js +1 -1
  172. package/lib/typescript/typescript.js +5 -5
  173. package/lib/util/dax.d.ts +12 -1
  174. package/lib/util/dax.js +17 -4
  175. package/lib/util/path.d.ts +39 -0
  176. package/lib/util/path.js +90 -1
  177. package/lib/version.js +2 -2
  178. package/lib/vscode/devcontainer.js +1 -1
  179. package/lib/vscode/extensions.js +1 -1
  180. package/lib/vscode/launch-config.js +1 -1
  181. package/lib/vscode/settings.js +1 -1
  182. package/lib/vscode/vscode.js +1 -1
  183. package/lib/web/next.js +3 -3
  184. package/lib/web/postcss.js +1 -1
  185. package/lib/web/react.js +3 -3
  186. package/lib/web/tailwind.js +1 -1
  187. package/lib/xmlfile.js +1 -1
  188. package/lib/yaml.js +1 -1
  189. package/package.json +1 -1
  190. package/BREAKING_CHANGES.md +0 -855
package/lib/util/path.js CHANGED
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensureRelativePathStartsWithDot = ensureRelativePathStartsWithDot;
4
+ exports.isHiddenPath = isHiddenPath;
5
+ exports.ensureNotHiddenPath = ensureNotHiddenPath;
6
+ exports.isPathInside = isPathInside;
7
+ exports.realpathOfClosestExisting = realpathOfClosestExisting;
8
+ exports.ensurePathInsideProject = ensurePathInsideProject;
9
+ const node_fs_1 = require("node:fs");
10
+ const node_path_1 = require("node:path");
4
11
  /**
5
12
  * Helper function to format a path as dot notation regardless of how it
6
13
  * was handed in.
@@ -17,4 +24,86 @@ function ensureRelativePathStartsWithDot(path) {
17
24
  }
18
25
  return `./${path}`;
19
26
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSwwRUFVQztBQWpCRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FBQyxJQUFZO0lBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLG1CQUFtQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZm9ybWF0IGEgcGF0aCBhcyBkb3Qgbm90YXRpb24gcmVnYXJkbGVzcyBvZiBob3cgaXRcbiAqIHdhcyBoYW5kZWQgaW4uXG4gKlxuICogQHBhcmFtIHBhdGggLSBjYW4gYmUgZm9ybWF0dGVkIGFzIFwicGF0aFwiLCBcIi4vcGF0aFwiIChidXQgbm90IFwiL3BhdGhcIiwgYXMgaXQgaXMgYWJzb2x1dGUpXG4gKiBAcmV0dXJucyBcIi4vcGF0aFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVSZWxhdGl2ZVBhdGhTdGFydHNXaXRoRG90KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAke3BhdGh9IG11c3QgYmUgcmVsYXRpdmVgKTtcbiAgfVxuXG4gIHJldHVybiBgLi8ke3BhdGh9YDtcbn1cbiJdfQ==
27
+ /**
28
+ * Checks if part of the file path is hidden
29
+ */
30
+ function isHiddenPath(path) {
31
+ return /(^|\/)\.[^\/\.]/g.test(path);
32
+ }
33
+ /**
34
+ * Helper to assert a path is not hidden
35
+ */
36
+ function ensureNotHiddenPath(value, name) {
37
+ if (isHiddenPath(value)) {
38
+ throw Error(`${name} cannot be a hidden path, got: ${value}`);
39
+ }
40
+ }
41
+ /**
42
+ * Checks if `file` is strictly inside `dir` (the directory itself does not count).
43
+ *
44
+ * Purely lexical: does not consult the filesystem, so symlinks are not
45
+ * resolved. Relative paths are resolved against the current working directory.
46
+ */
47
+ function isPathInside(dir, file) {
48
+ const rel = (0, node_path_1.relative)(dir, file);
49
+ return (rel !== "" &&
50
+ !rel.startsWith(`..${node_path_1.sep}`) &&
51
+ rel !== ".." &&
52
+ !(0, node_path_1.isAbsolute)(rel));
53
+ }
54
+ /**
55
+ * Resolves symlinks in `p`, falling back to the closest existing ancestor for
56
+ * paths that do not exist (yet).
57
+ */
58
+ function realpathOfClosestExisting(p) {
59
+ const missing = new Array();
60
+ let current = (0, node_path_1.resolve)(p);
61
+ while (true) {
62
+ try {
63
+ return (0, node_path_1.join)((0, node_fs_1.realpathSync)(current), ...missing);
64
+ }
65
+ catch {
66
+ const parent = (0, node_path_1.dirname)(current);
67
+ if (parent === current) {
68
+ return (0, node_path_1.resolve)(p);
69
+ }
70
+ missing.unshift((0, node_path_1.basename)(current));
71
+ current = parent;
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Asserts that a path stays strictly inside a project directory.
77
+ *
78
+ * Use this before passing a user-configurable path to a destructive command
79
+ * (e.g. `rm -fr`): an absolute path or a path traversing outside of the
80
+ * project directory (via `..` or a symlink) could otherwise delete files
81
+ * anywhere on the machine. The project directory itself (`.`) is also
82
+ * rejected.
83
+ *
84
+ * The check resolves both paths on the filesystem (symlinks in existing path
85
+ * segments are followed). The last segment of the path is intentionally kept
86
+ * as-is: a symlink inside the project only affects the link itself.
87
+ *
88
+ * @param value the path to check, relative to the project directory
89
+ * @param name name of the option, used in the error message
90
+ * @param projectDir the project directory the path must stay inside of
91
+ * @throws if the path is absolute or does not stay inside the project directory
92
+ */
93
+ function ensurePathInsideProject(value, name, projectDir) {
94
+ if ((0, node_path_1.isAbsolute)(value)) {
95
+ throw new Error(`${name} must be a relative path within the project directory, got absolute path: ${value}`);
96
+ }
97
+ const baseDir = realpathOfClosestExisting(projectDir);
98
+ const resolved = (0, node_path_1.resolve)(baseDir, value);
99
+ if (!isPathInside(baseDir, resolved)) {
100
+ throw new Error(`${name} must be inside the project directory, got: ${value}`);
101
+ }
102
+ // the path might traverse outside of the project through a symlinked
103
+ // directory, which a lexical `resolve` cannot detect
104
+ const realParent = realpathOfClosestExisting((0, node_path_1.dirname)(resolved));
105
+ if (!isPathInside(baseDir, (0, node_path_1.join)(realParent, (0, node_path_1.basename)(resolved)))) {
106
+ throw new Error(`${name} must be inside the project directory, but points outside of it through a symlink, got: ${value}`);
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsMEVBVUM7QUFLRCxvQ0FFQztBQUtELGtEQUlDO0FBUUQsb0NBUUM7QUFNRCw4REFnQkM7QUFvQkQsMERBNEJDO0FBbElELHFDQUF1QztBQUN2Qyx5Q0FRbUI7QUFFbkI7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsSUFBWTtJQUMxRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDckIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDN0QsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksa0NBQWtDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFlBQVksQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFBLG9CQUFRLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FDTCxHQUFHLEtBQUssRUFBRTtRQUNWLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLGVBQUcsRUFBRSxDQUFDO1FBQzNCLEdBQUcsS0FBSyxJQUFJO1FBQ1osQ0FBQyxJQUFBLHNCQUFVLEVBQUMsR0FBRyxDQUFDLENBQ2pCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsQ0FBUztJQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ3BDLElBQUksT0FBTyxHQUFHLElBQUEsbUJBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztJQUV6QixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFBLGdCQUFJLEVBQUMsSUFBQSxzQkFBWSxFQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sTUFBTSxHQUFHLElBQUEsbUJBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxJQUFBLG1CQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBQSxvQkFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsS0FBYSxFQUNiLElBQVksRUFDWixVQUFrQjtJQUVsQixJQUFJLElBQUEsc0JBQVUsRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxJQUFJLDZFQUE2RSxLQUFLLEVBQUUsQ0FDNUYsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLG1CQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXpDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksK0NBQStDLEtBQUssRUFBRSxDQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxxREFBcUQ7SUFDckQsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsSUFBQSxtQkFBTyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBQSxnQkFBSSxFQUFDLFVBQVUsRUFBRSxJQUFBLG9CQUFRLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksMkZBQTJGLEtBQUssRUFBRSxDQUMxRyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGlzQWJzb2x1dGUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlLFxuICByZXNvbHZlLFxuICBzZXAsXG59IGZyb20gXCJub2RlOnBhdGhcIjtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZm9ybWF0IGEgcGF0aCBhcyBkb3Qgbm90YXRpb24gcmVnYXJkbGVzcyBvZiBob3cgaXRcbiAqIHdhcyBoYW5kZWQgaW4uXG4gKlxuICogQHBhcmFtIHBhdGggLSBjYW4gYmUgZm9ybWF0dGVkIGFzIFwicGF0aFwiLCBcIi4vcGF0aFwiIChidXQgbm90IFwiL3BhdGhcIiwgYXMgaXQgaXMgYWJzb2x1dGUpXG4gKiBAcmV0dXJucyBcIi4vcGF0aFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVSZWxhdGl2ZVBhdGhTdGFydHNXaXRoRG90KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAke3BhdGh9IG11c3QgYmUgcmVsYXRpdmVgKTtcbiAgfVxuXG4gIHJldHVybiBgLi8ke3BhdGh9YDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgcGFydCBvZiB0aGUgZmlsZSBwYXRoIGlzIGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIaWRkZW5QYXRoKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gLyhefFxcLylcXC5bXlxcL1xcLl0vZy50ZXN0KHBhdGgpO1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBhc3NlcnQgYSBwYXRoIGlzIG5vdCBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdEhpZGRlblBhdGgodmFsdWU6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0hpZGRlblBhdGgodmFsdWUpKSB7XG4gICAgdGhyb3cgRXJyb3IoYCR7bmFtZX0gY2Fubm90IGJlIGEgaGlkZGVuIHBhdGgsIGdvdDogJHt2YWx1ZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgZmlsZWAgaXMgc3RyaWN0bHkgaW5zaWRlIGBkaXJgICh0aGUgZGlyZWN0b3J5IGl0c2VsZiBkb2VzIG5vdCBjb3VudCkuXG4gKlxuICogUHVyZWx5IGxleGljYWw6IGRvZXMgbm90IGNvbnN1bHQgdGhlIGZpbGVzeXN0ZW0sIHNvIHN5bWxpbmtzIGFyZSBub3RcbiAqIHJlc29sdmVkLiBSZWxhdGl2ZSBwYXRocyBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGF0aEluc2lkZShkaXI6IHN0cmluZywgZmlsZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlbCA9IHJlbGF0aXZlKGRpciwgZmlsZSk7XG4gIHJldHVybiAoXG4gICAgcmVsICE9PSBcIlwiICYmXG4gICAgIXJlbC5zdGFydHNXaXRoKGAuLiR7c2VwfWApICYmXG4gICAgcmVsICE9PSBcIi4uXCIgJiZcbiAgICAhaXNBYnNvbHV0ZShyZWwpXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgc3ltbGlua3MgaW4gYHBgLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNsb3Nlc3QgZXhpc3RpbmcgYW5jZXN0b3IgZm9yXG4gKiBwYXRocyB0aGF0IGRvIG5vdCBleGlzdCAoeWV0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWxwYXRoT2ZDbG9zZXN0RXhpc3RpbmcocDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWlzc2luZyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCBjdXJyZW50ID0gcmVzb2x2ZShwKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gam9pbihyZWFscGF0aFN5bmMoY3VycmVudCksIC4uLm1pc3NpbmcpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTtcbiAgICAgIGlmIChwYXJlbnQgPT09IGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUocCk7XG4gICAgICB9XG4gICAgICBtaXNzaW5nLnVuc2hpZnQoYmFzZW5hbWUoY3VycmVudCkpO1xuICAgICAgY3VycmVudCA9IHBhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBwYXRoIHN0YXlzIHN0cmljdGx5IGluc2lkZSBhIHByb2plY3QgZGlyZWN0b3J5LlxuICpcbiAqIFVzZSB0aGlzIGJlZm9yZSBwYXNzaW5nIGEgdXNlci1jb25maWd1cmFibGUgcGF0aCB0byBhIGRlc3RydWN0aXZlIGNvbW1hbmRcbiAqIChlLmcuIGBybSAtZnJgKTogYW4gYWJzb2x1dGUgcGF0aCBvciBhIHBhdGggdHJhdmVyc2luZyBvdXRzaWRlIG9mIHRoZVxuICogcHJvamVjdCBkaXJlY3RvcnkgKHZpYSBgLi5gIG9yIGEgc3ltbGluaykgY291bGQgb3RoZXJ3aXNlIGRlbGV0ZSBmaWxlc1xuICogYW55d2hlcmUgb24gdGhlIG1hY2hpbmUuIFRoZSBwcm9qZWN0IGRpcmVjdG9yeSBpdHNlbGYgKGAuYCkgaXMgYWxzb1xuICogcmVqZWN0ZWQuXG4gKlxuICogVGhlIGNoZWNrIHJlc29sdmVzIGJvdGggcGF0aHMgb24gdGhlIGZpbGVzeXN0ZW0gKHN5bWxpbmtzIGluIGV4aXN0aW5nIHBhdGhcbiAqIHNlZ21lbnRzIGFyZSBmb2xsb3dlZCkuIFRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIHBhdGggaXMgaW50ZW50aW9uYWxseSBrZXB0XG4gKiBhcy1pczogYSBzeW1saW5rIGluc2lkZSB0aGUgcHJvamVjdCBvbmx5IGFmZmVjdHMgdGhlIGxpbmsgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgcGF0aCB0byBjaGVjaywgcmVsYXRpdmUgdG8gdGhlIHByb2plY3QgZGlyZWN0b3J5XG4gKiBAcGFyYW0gbmFtZSBuYW1lIG9mIHRoZSBvcHRpb24sIHVzZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSBwcm9qZWN0RGlyIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSB0aGUgcGF0aCBtdXN0IHN0YXkgaW5zaWRlIG9mXG4gKiBAdGhyb3dzIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlIG9yIGRvZXMgbm90IHN0YXkgaW5zaWRlIHRoZSBwcm9qZWN0IGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlUGF0aEluc2lkZVByb2plY3QoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgcHJvamVjdERpcjogc3RyaW5nLFxuKSB7XG4gIGlmIChpc0Fic29sdXRlKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke25hbWV9IG11c3QgYmUgYSByZWxhdGl2ZSBwYXRoIHdpdGhpbiB0aGUgcHJvamVjdCBkaXJlY3RvcnksIGdvdCBhYnNvbHV0ZSBwYXRoOiAke3ZhbHVlfWAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGJhc2VEaXIgPSByZWFscGF0aE9mQ2xvc2VzdEV4aXN0aW5nKHByb2plY3REaXIpO1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmUoYmFzZURpciwgdmFsdWUpO1xuXG4gIGlmICghaXNQYXRoSW5zaWRlKGJhc2VEaXIsIHJlc29sdmVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke25hbWV9IG11c3QgYmUgaW5zaWRlIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgZ290OiAke3ZhbHVlfWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIHRoZSBwYXRoIG1pZ2h0IHRyYXZlcnNlIG91dHNpZGUgb2YgdGhlIHByb2plY3QgdGhyb3VnaCBhIHN5bWxpbmtlZFxuICAvLyBkaXJlY3RvcnksIHdoaWNoIGEgbGV4aWNhbCBgcmVzb2x2ZWAgY2Fubm90IGRldGVjdFxuICBjb25zdCByZWFsUGFyZW50ID0gcmVhbHBhdGhPZkNsb3Nlc3RFeGlzdGluZyhkaXJuYW1lKHJlc29sdmVkKSk7XG4gIGlmICghaXNQYXRoSW5zaWRlKGJhc2VEaXIsIGpvaW4ocmVhbFBhcmVudCwgYmFzZW5hbWUocmVzb2x2ZWQpKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtuYW1lfSBtdXN0IGJlIGluc2lkZSB0aGUgcHJvamVjdCBkaXJlY3RvcnksIGJ1dCBwb2ludHMgb3V0c2lkZSBvZiBpdCB0aHJvdWdoIGEgc3ltbGluaywgZ290OiAke3ZhbHVlfWAsXG4gICAgKTtcbiAgfVxufVxuIl19
package/lib/version.js CHANGED
@@ -40,7 +40,7 @@ exports.CHANGES_SINCE_LAST_RELEASE = 'git log --oneline -1 | grep -v "chore(rele
40
40
  */
41
41
  const COMMIT_AND_TAG_VERSION_DEFAULT = "commit-and-tag-version@^12";
42
42
  class Version extends component_1.Component {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.102.0" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Version", version: "0.103.1" };
44
44
  bumpTask;
45
45
  unbumpTask;
46
46
  /**
@@ -195,7 +195,7 @@ exports.Version = Version;
195
195
  */
196
196
  class ReleasableCommits {
197
197
  cmd;
198
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.102.0" };
198
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ReleasableCommits", version: "0.103.1" };
199
199
  /**
200
200
  * Release every commit
201
201
  *
@@ -13,7 +13,7 @@ const DEVCONTAINER_FILE = ".devcontainer.json";
13
13
  * codespaces.
14
14
  */
15
15
  class DevContainer extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.102.0" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.DevContainer", version: "0.103.1" };
17
17
  dockerImage;
18
18
  postCreateTasks;
19
19
  ports;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/editor/extension-marketplace#_workspace-recommended-extensions
10
10
  */
11
11
  class VsCodeRecommendedExtensions extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.102.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.103.1" };
13
13
  /**
14
14
  * List of extensions which should be recommended for users of this workspace.
15
15
  * The identifier of an extension is always '${publisher}.${name}'. For example: 'ms-python.python'.
@@ -28,7 +28,7 @@ var InternalConsoleOptions;
28
28
  * VSCode launch configuration file (launch.json), useful for enabling in-editor debugger
29
29
  */
30
30
  class VsCodeLaunchConfig extends component_1.Component {
31
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.102.0" };
31
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.103.1" };
32
32
  static renderLaunchConfig(cfg) {
33
33
  if (!cfg.env) {
34
34
  return cfg;
@@ -9,7 +9,7 @@ const json_1 = require("../json");
9
9
  * Source: https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings
10
10
  */
11
11
  class VsCodeSettings extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.102.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCodeSettings", version: "0.103.1" };
13
13
  content;
14
14
  file;
15
15
  constructor(vscode) {
@@ -7,7 +7,7 @@ const launch_config_1 = require("./launch-config");
7
7
  const settings_1 = require("./settings");
8
8
  const component_1 = require("../component");
9
9
  class VsCode extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.102.0" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.vscode.VsCode", version: "0.103.1" };
11
11
  _launchConfig;
12
12
  _settings;
13
13
  _extensions;
package/lib/web/next.js CHANGED
@@ -15,7 +15,7 @@ const MINIMUM_NEXT_JS_NODE_VERSION = "16.14.0"; // https://nextjs.org/docs/pages
15
15
  * @pjid nextjs
16
16
  */
17
17
  class NextJsProject extends javascript_1.NodeProject {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.102.0" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsProject", version: "0.103.1" };
19
19
  /**
20
20
  * The directory in which source files reside.
21
21
  */
@@ -59,7 +59,7 @@ exports.NextJsProject = NextJsProject;
59
59
  * @pjid nextjs-ts
60
60
  */
61
61
  class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
62
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.102.0" };
62
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.103.1" };
63
63
  /**
64
64
  * The directory in which source files reside.
65
65
  */
@@ -150,7 +150,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
150
150
  }
151
151
  exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
152
152
  class NextComponent extends component_1.Component {
153
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.102.0" };
153
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.NextComponent", version: "0.103.1" };
154
154
  typescript;
155
155
  tailwind;
156
156
  constructor(project, options) {
@@ -8,7 +8,7 @@ const json_1 = require("../json");
8
8
  * Declares a PostCSS dependency with a default config file.
9
9
  */
10
10
  class PostCss {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.102.0" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.PostCss", version: "0.103.1" };
12
12
  fileName;
13
13
  file;
14
14
  tailwind;
package/lib/web/react.js CHANGED
@@ -48,7 +48,7 @@ const util_1 = require("../util");
48
48
  * @pjid react
49
49
  */
50
50
  class ReactProject extends javascript_1.NodeProject {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactProject", version: "0.102.0" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactProject", version: "0.103.1" };
52
52
  /**
53
53
  * The directory in which source files reside.
54
54
  * @default "src"
@@ -80,7 +80,7 @@ exports.ReactProject = ReactProject;
80
80
  * @pjid react-ts
81
81
  */
82
82
  class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
83
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.102.0" };
83
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.103.1" };
84
84
  /**
85
85
  * The directory in which source files reside.
86
86
  */
@@ -147,7 +147,7 @@ class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
147
147
  }
148
148
  exports.ReactTypeScriptProject = ReactTypeScriptProject;
149
149
  class ReactComponent extends component_1.Component {
150
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactComponent", version: "0.102.0" };
150
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.ReactComponent", version: "0.103.1" };
151
151
  typescript;
152
152
  constructor(project, options) {
153
153
  super(project);
@@ -12,7 +12,7 @@ const json_1 = require("../json");
12
12
  * @see PostCss
13
13
  */
14
14
  class TailwindConfig {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.TailwindConfig", version: "0.102.0" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.web.TailwindConfig", version: "0.103.1" };
16
16
  fileName;
17
17
  file;
18
18
  constructor(project, options) {
package/lib/xmlfile.js CHANGED
@@ -11,7 +11,7 @@ const object_file_1 = require("./object-file");
11
11
  * @see https://www.npmjs.com/package/xml
12
12
  */
13
13
  class XmlFile extends object_file_1.ObjectFile {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.XmlFile", version: "0.102.0" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.XmlFile", version: "0.103.1" };
15
15
  constructor(project, filePath, options = {}) {
16
16
  super(project, filePath, options);
17
17
  }
package/lib/yaml.js CHANGED
@@ -41,7 +41,7 @@ const object_file_1 = require("./object-file");
41
41
  * Represents a YAML file.
42
42
  */
43
43
  class YamlFile extends object_file_1.ObjectFile {
44
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.YamlFile", version: "0.102.0" };
44
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.YamlFile", version: "0.103.1" };
45
45
  /**
46
46
  * Maximum line width (set to 0 to disable folding).
47
47
  */
package/package.json CHANGED
@@ -155,7 +155,7 @@
155
155
  "fsevents": true,
156
156
  "unrs-resolver": true
157
157
  },
158
- "version": "0.102.0",
158
+ "version": "0.103.1",
159
159
  "jest": {
160
160
  "coverageProvider": "v8",
161
161
  "coverageReporters": [