projen 0.101.26 → 0.101.28

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 (165) hide show
  1. package/.jsii +1065 -735
  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/circleci/circleci.js +1 -1
  33. package/lib/cli/task-runtime.js +2 -2
  34. package/lib/component.js +2 -2
  35. package/lib/dependencies.js +1 -1
  36. package/lib/dev-env.js +1 -1
  37. package/lib/docker-compose/docker-compose-service.js +1 -1
  38. package/lib/docker-compose/docker-compose.js +1 -1
  39. package/lib/file.js +1 -1
  40. package/lib/gitattributes.js +1 -1
  41. package/lib/github/actions-provider.js +1 -1
  42. package/lib/github/auto-approve.js +1 -1
  43. package/lib/github/auto-merge.js +1 -1
  44. package/lib/github/auto-queue.js +1 -1
  45. package/lib/github/dependabot.js +1 -1
  46. package/lib/github/dependency-review.js +1 -1
  47. package/lib/github/github-credentials.js +1 -1
  48. package/lib/github/github-project.js +1 -1
  49. package/lib/github/github.js +1 -1
  50. package/lib/github/merge-queue.js +1 -1
  51. package/lib/github/mergify.js +1 -1
  52. package/lib/github/pr-template.js +1 -1
  53. package/lib/github/pull-request-backport.js +1 -1
  54. package/lib/github/pull-request-lint.js +1 -1
  55. package/lib/github/stale.js +1 -1
  56. package/lib/github/task-workflow-job.js +1 -1
  57. package/lib/github/task-workflow.js +1 -1
  58. package/lib/github/workflow-actions.js +1 -1
  59. package/lib/github/workflow-jobs.js +1 -1
  60. package/lib/github/workflow-steps.js +1 -1
  61. package/lib/github/workflows.js +1 -1
  62. package/lib/gitlab/configuration.js +1 -1
  63. package/lib/gitlab/gitlab-configuration.js +1 -1
  64. package/lib/gitlab/nested-configuration.js +1 -1
  65. package/lib/gitpod.js +1 -1
  66. package/lib/ignore-file.js +1 -1
  67. package/lib/ini.js +1 -1
  68. package/lib/java/java-project.js +1 -1
  69. package/lib/java/junit.js +1 -1
  70. package/lib/java/maven-compile.js +1 -1
  71. package/lib/java/maven-packaging.js +1 -1
  72. package/lib/java/maven-sample.js +1 -1
  73. package/lib/java/pom.js +2 -2
  74. package/lib/java/projenrc.js +1 -1
  75. package/lib/javascript/biome/biome-config.d.ts +292 -322
  76. package/lib/javascript/biome/biome-config.js +5 -5
  77. package/lib/javascript/biome/biome.js +1 -1
  78. package/lib/javascript/bundler.js +1 -1
  79. package/lib/javascript/eslint.js +1 -1
  80. package/lib/javascript/jest.js +4 -4
  81. package/lib/javascript/license-checker.js +1 -1
  82. package/lib/javascript/node-package.d.ts +57 -4
  83. package/lib/javascript/node-package.js +46 -6
  84. package/lib/javascript/node-project.js +1 -1
  85. package/lib/javascript/npm-config.js +1 -1
  86. package/lib/javascript/pnpm-workspace-config.js +2 -2
  87. package/lib/javascript/pnpm-workspace.js +1 -1
  88. package/lib/javascript/prettier.js +1 -1
  89. package/lib/javascript/projenrc.js +1 -1
  90. package/lib/javascript/typescript-config.js +2 -2
  91. package/lib/javascript/upgrade-dependencies.js +7 -3
  92. package/lib/javascript/yarnrc.d.ts +51 -3
  93. package/lib/javascript/yarnrc.js +22 -4
  94. package/lib/json-patch.js +1 -1
  95. package/lib/json.js +1 -1
  96. package/lib/license.js +1 -1
  97. package/lib/logger.js +1 -1
  98. package/lib/makefile.js +1 -1
  99. package/lib/object-file.js +1 -1
  100. package/lib/project-build.js +1 -1
  101. package/lib/project-tree.js +1 -1
  102. package/lib/project.js +1 -1
  103. package/lib/projects.js +1 -1
  104. package/lib/projenrc-json.js +1 -1
  105. package/lib/projenrc.js +1 -1
  106. package/lib/python/pip.js +1 -1
  107. package/lib/python/poetry.js +2 -2
  108. package/lib/python/projenrc.js +1 -1
  109. package/lib/python/pyproject-toml-file.js +1 -1
  110. package/lib/python/pytest-sample.js +1 -1
  111. package/lib/python/pytest.js +1 -1
  112. package/lib/python/python-project.js +1 -1
  113. package/lib/python/python-sample.js +1 -1
  114. package/lib/python/requirements-file.js +1 -1
  115. package/lib/python/setuppy.js +1 -1
  116. package/lib/python/setuptools.js +1 -1
  117. package/lib/python/uv-config.js +1 -1
  118. package/lib/python/uv.js +1 -1
  119. package/lib/python/venv.js +1 -1
  120. package/lib/readme.js +1 -1
  121. package/lib/release/publisher.js +1 -1
  122. package/lib/release/release-trigger.js +1 -1
  123. package/lib/release/release.js +1 -1
  124. package/lib/renovatebot.js +1 -1
  125. package/lib/run-task.cjs +61 -42
  126. package/lib/sample-file.js +2 -2
  127. package/lib/script-runner.js +1 -1
  128. package/lib/source-code.js +1 -1
  129. package/lib/task-shell.js +1 -1
  130. package/lib/task.js +1 -1
  131. package/lib/tasks.js +1 -1
  132. package/lib/testing.js +1 -1
  133. package/lib/textfile.js +1 -1
  134. package/lib/toml.js +1 -1
  135. package/lib/typescript/projenrc-ts.js +1 -1
  136. package/lib/typescript/projenrc.js +1 -1
  137. package/lib/typescript/typescript-runner.js +1 -1
  138. package/lib/typescript/typescript-typedoc.js +1 -1
  139. package/lib/typescript/typescript.js +5 -5
  140. package/lib/util/dax.d.ts +1 -0
  141. package/lib/util/dax.js +21 -0
  142. package/lib/util/exec.js +2 -2
  143. package/lib/util/node-compat.d.ts +23 -0
  144. package/lib/util/node-compat.js +40 -0
  145. package/lib/version.js +2 -2
  146. package/lib/vscode/devcontainer.js +1 -1
  147. package/lib/vscode/extensions.js +1 -1
  148. package/lib/vscode/launch-config.js +1 -1
  149. package/lib/vscode/settings.js +1 -1
  150. package/lib/vscode/vscode.js +1 -1
  151. package/lib/web/next.js +3 -3
  152. package/lib/web/postcss.js +1 -1
  153. package/lib/web/react.js +3 -3
  154. package/lib/web/tailwind.js +1 -1
  155. package/lib/xmlfile.js +1 -1
  156. package/lib/yaml.js +1 -1
  157. package/node_modules/js-yaml/dist/js-yaml.js +5 -2
  158. package/node_modules/js-yaml/dist/js-yaml.js.map +1 -1
  159. package/node_modules/js-yaml/dist/js-yaml.min.js +1 -1
  160. package/node_modules/js-yaml/dist/js-yaml.min.js.map +1 -1
  161. package/node_modules/js-yaml/dist/js-yaml.mjs +3 -3
  162. package/node_modules/js-yaml/dist/js-yaml.mjs.map +1 -1
  163. package/node_modules/js-yaml/lib/type/omap.js +3 -3
  164. package/node_modules/js-yaml/package.json +1 -1
  165. package/package.json +3 -2
@@ -100,7 +100,7 @@ const DEFAULT_ASSIST = {
100
100
  */
101
101
  class Biome extends component_1.Component {
102
102
  options;
103
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.101.26" };
103
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.101.28" };
104
104
  static of(project) {
105
105
  const isBiome = (c) => c instanceof Biome;
106
106
  return project.components.find(isBiome);
@@ -45,7 +45,7 @@ const dependencies_1 = require("../dependencies");
45
45
  * single file. In the future, this will also supports bundling websites.
46
46
  */
47
47
  class Bundler extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.101.26" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.101.28" };
49
49
  /**
50
50
  * Returns the `Bundler` instance associated with a project or `undefined` if
51
51
  * there is no Bundler.
@@ -10,7 +10,7 @@ const yaml_1 = require("../yaml");
10
10
  * Represents eslint configuration.
11
11
  */
12
12
  class Eslint extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.101.26" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.101.28" };
14
14
  /**
15
15
  * Returns the singleton Eslint component of a project or undefined if there is none.
16
16
  */
@@ -45,7 +45,7 @@ const DEFAULT_TEST_REPORTS_DIR = "test-reports";
45
45
  class Transform {
46
46
  name;
47
47
  options;
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.101.26" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.101.28" };
49
49
  constructor(name, options) {
50
50
  this.name = name;
51
51
  this.options = options;
@@ -65,7 +65,7 @@ exports.Transform = Transform;
65
65
  class WatchPlugin {
66
66
  name;
67
67
  options;
68
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.101.26" };
68
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.101.28" };
69
69
  constructor(name, options) {
70
70
  this.name = name;
71
71
  this.options = options;
@@ -96,7 +96,7 @@ var UpdateSnapshot;
96
96
  class JestReporter {
97
97
  name;
98
98
  options;
99
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.101.26" };
99
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.101.28" };
100
100
  constructor(name, options) {
101
101
  this.name = name;
102
102
  this.options = options;
@@ -122,7 +122,7 @@ exports.JestReporter = JestReporter;
122
122
  *
123
123
  */
124
124
  class Jest extends component_1.Component {
125
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.101.26" };
125
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.101.28" };
126
126
  /**
127
127
  * Returns the singleton Jest component of a project or undefined if there is none.
128
128
  */
@@ -8,7 +8,7 @@ const dependencies_1 = require("../dependencies");
8
8
  * Enforces allowed licenses used by dependencies.
9
9
  */
10
10
  class LicenseChecker extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.101.26" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.101.28" };
12
12
  task;
13
13
  constructor(scope, options) {
14
14
  const taskName = options.taskName ?? "check-licenses";
@@ -127,6 +127,27 @@ export interface NodePackageOptions {
127
127
  * @pjnew $PACKAGE_MANAGER
128
128
  */
129
129
  readonly packageManager?: NodePackageManager;
130
+ /**
131
+ * Add a `dedupe` task that deduplicates project dependencies.
132
+ *
133
+ * Deduplication prevents multiple versions of the same package from being
134
+ * installed, if a single version can satisfy all requested version ranges.
135
+ * This prevents version proliferation and reduces the size of the dependency
136
+ * tree.
137
+ *
138
+ * The behavior depends on the package manager:
139
+ * - npm: runs `npm dedupe` after every mutating install.
140
+ * - pnpm: runs `pnpm dedupe` after every mutating install.
141
+ * - Yarn Berry: runs `yarn dedupe` after every mutating install. If
142
+ * `yarnBerryOptions.dedupePackages` is set, only the listed packages are
143
+ * deduplicated.
144
+ * - Yarn Classic: `yarn install` already deduplicates, so the task only
145
+ * prints an informational message.
146
+ * - Bun: not supported, enabling this option throws an error.
147
+ *
148
+ * @default - false, unless `yarnBerryOptions.dedupePackages` is set
149
+ */
150
+ readonly dedupeDeps?: boolean;
130
151
  /**
131
152
  * The repository is the location where the actual code for your package lives.
132
153
  * See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
@@ -581,13 +602,17 @@ export declare class NodePackage extends Component {
581
602
  */
582
603
  readonly lockFile: string;
583
604
  /**
584
- * The task for installing project dependencies (non-frozen)
605
+ * The task for installing project dependencies (non-frozen).
585
606
  */
586
607
  readonly installTask: Task;
587
608
  /**
588
- * The task for installing project dependencies (frozen)
609
+ * The task for installing project dependencies (frozen).
589
610
  */
590
611
  readonly installCiTask: Task;
612
+ /**
613
+ * The task for deduplicating project dependencies, if configured.
614
+ */
615
+ readonly dedupeTask?: Task;
591
616
  /**
592
617
  * The package.json file.
593
618
  */
@@ -603,6 +628,13 @@ export declare class NodePackage extends Component {
603
628
  private _renderedDeps?;
604
629
  private readonly _packageManagerExplicit;
605
630
  constructor(project: Project, options?: NodePackageOptions);
631
+ /**
632
+ * Adds a `dedupe` task if enabled via `dedupeDeps` or implied by
633
+ * `yarnBerryOptions.dedupePackages`.
634
+ *
635
+ * @returns the dedupe task, or `undefined` if not enabled.
636
+ */
637
+ private maybeAddDedupeTask;
606
638
  /**
607
639
  * Defines normal dependencies.
608
640
  *
@@ -718,11 +750,15 @@ export declare class NodePackage extends Component {
718
750
  */
719
751
  addPackageResolutions(...resolutions: string[]): void;
720
752
  /**
721
- * Returns the command to execute in order to install all dependencies (always frozen).
753
+ * Returns the package manager's immutable install command with a frozen lockfile, e.g. `npm ci` or `pnpm ci`.
754
+ *
755
+ * Prefer using `NodePackage.installCiTask`. The raw command string is intended for bootstrapping.
722
756
  */
723
757
  get installCommand(): string;
724
758
  /**
725
- * Renders `pnpm install` or `npm install` with lockfile update (not frozen)
759
+ * Returns the package manager's mutable install command with lockfile update, e.g. `npm install` or `pnpm install`.
760
+ *
761
+ * Prefer using `NodePackage.installTask`. The raw command string is intended for bootstrapping.
726
762
  */
727
763
  get installAndUpdateLockfileCommand(): string;
728
764
  /**
@@ -942,6 +978,23 @@ export interface YarnBerryOptions {
942
978
  * @default false
943
979
  */
944
980
  readonly zeroInstalls?: boolean;
981
+ /**
982
+ * Packages to deduplicate when the `dedupe` task runs.
983
+ *
984
+ * This will prevent multiple versions of the same package from being
985
+ * installed in the lock file, if a single version could satisfy all requested
986
+ * version ranges. This will prevent version proliferation and reduce the size
987
+ * of the dependency tree.
988
+ *
989
+ * Setting this implies `dedupeDeps: true` on the project, which will run
990
+ * `yarn dedupe` after every mutating install. Set `dedupeDeps: false`
991
+ * explicitly to disable the task.
992
+ *
993
+ * Supports glob patterns, e.g. `@aws-sdk/*`.
994
+ *
995
+ * @default - all packages are deduplicated
996
+ */
997
+ readonly dedupePackages?: string[];
945
998
  }
946
999
  /**
947
1000
  * Configure pnpm