@ohos-ports/nx 23.3.0-beta.2 → 24.0.2-beta.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 (294) hide show
  1. package/README.md +3 -6
  2. package/dist/bin/nx.js +2 -2
  3. package/dist/bin/post-install.js +5 -3
  4. package/dist/nx-cloud-internals.d.ts +1 -0
  5. package/dist/nx-cloud-internals.js +7 -1
  6. package/dist/src/adapter/ngcli-adapter.js +2 -2
  7. package/dist/src/ai/clone-ai-config-repo.js +49 -12
  8. package/dist/src/command-line/add/add.d.ts +2 -0
  9. package/dist/src/command-line/add/add.js +23 -5
  10. package/dist/src/command-line/affected/affected.js +2 -2
  11. package/dist/src/command-line/configure-ai-agents/configure-ai-agents.js +0 -12
  12. package/dist/src/command-line/graph/graph.js +38 -10
  13. package/dist/src/command-line/init/command-object.js +0 -12
  14. package/dist/src/command-line/init/implementation/add-nx-to-nest.js +21 -62
  15. package/dist/src/command-line/init/init-v2.js +0 -2
  16. package/dist/src/command-line/migrate/agentic/close-agent-session.d.ts +1 -1
  17. package/dist/src/command-line/migrate/agentic/close-agent-session.js +4 -3
  18. package/dist/src/command-line/migrate/agentic/definitions.d.ts +1 -3
  19. package/dist/src/command-line/migrate/agentic/definitions.js +5 -97
  20. package/dist/src/command-line/migrate/agentic/handoff-gitignore.d.ts +7 -45
  21. package/dist/src/command-line/migrate/agentic/handoff-gitignore.js +9 -51
  22. package/dist/src/command-line/migrate/agentic/handoff.d.ts +1 -43
  23. package/dist/src/command-line/migrate/agentic/handoff.js +3 -119
  24. package/dist/src/command-line/migrate/agentic/instruction-files.d.ts +0 -21
  25. package/dist/src/command-line/migrate/agentic/instruction-files.js +6 -27
  26. package/dist/src/command-line/migrate/agentic/master/run-master-session.d.ts +19 -1
  27. package/dist/src/command-line/migrate/agentic/master/run-master-session.js +88 -49
  28. package/dist/src/command-line/migrate/agentic/master/spawn-master.d.ts +1 -0
  29. package/dist/src/command-line/migrate/agentic/master/spawn-master.js +86 -24
  30. package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.d.ts +2 -2
  31. package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.js +2 -2
  32. package/dist/src/command-line/migrate/agentic/prompts/fragments.d.ts +1 -12
  33. package/dist/src/command-line/migrate/agentic/prompts/fragments.js +8 -17
  34. package/dist/src/command-line/migrate/agentic/prompts/shared-rendering.d.ts +0 -15
  35. package/dist/src/command-line/migrate/agentic/prompts/shared-rendering.js +3 -100
  36. package/dist/src/command-line/migrate/agentic/select.d.ts +12 -6
  37. package/dist/src/command-line/migrate/agentic/select.js +38 -8
  38. package/dist/src/command-line/migrate/agentic/types.d.ts +9 -68
  39. package/dist/src/command-line/migrate/agentic/types.js +6 -8
  40. package/dist/src/command-line/migrate/command-object.js +6 -10
  41. package/dist/src/command-line/migrate/execute-migration.d.ts +6 -6
  42. package/dist/src/command-line/migrate/execute-migration.js +25 -15
  43. package/dist/src/command-line/migrate/migrate-analytics.d.ts +18 -1
  44. package/dist/src/command-line/migrate/migrate-analytics.js +38 -0
  45. package/dist/src/command-line/migrate/migrate-commits.d.ts +29 -17
  46. package/dist/src/command-line/migrate/migrate-commits.js +86 -32
  47. package/dist/src/command-line/migrate/migrate-config.d.ts +6 -6
  48. package/dist/src/command-line/migrate/migrate-config.js +12 -6
  49. package/dist/src/command-line/migrate/migrate-output.d.ts +1 -6
  50. package/dist/src/command-line/migrate/migrate-output.js +1 -10
  51. package/dist/src/command-line/migrate/migrate.d.ts +6 -30
  52. package/dist/src/command-line/migrate/migrate.js +257 -255
  53. package/dist/src/command-line/migrate/resolve-package-version.d.ts +2 -4
  54. package/dist/src/command-line/migrate/resolve-package-version.js +2 -35
  55. package/dist/src/command-line/migrate/run/agent-output.d.ts +2 -0
  56. package/dist/src/command-line/migrate/run/agent-output.js +9 -0
  57. package/dist/src/command-line/migrate/run/broker.d.ts +14 -5
  58. package/dist/src/command-line/migrate/run/broker.js +69 -21
  59. package/dist/src/command-line/migrate/run/clean-retry.js +4 -2
  60. package/dist/src/command-line/migrate/run/existing-run-report.d.ts +1 -1
  61. package/dist/src/command-line/migrate/run/existing-run-report.js +7 -5
  62. package/dist/src/command-line/migrate/run/give-up.d.ts +4 -3
  63. package/dist/src/command-line/migrate/run/give-up.js +8 -5
  64. package/dist/src/command-line/migrate/run/index.d.ts +7 -5
  65. package/dist/src/command-line/migrate/run/index.js +16 -1
  66. package/dist/src/command-line/migrate/run/issues.js +7 -2
  67. package/dist/src/command-line/migrate/run/orchestrator.d.ts +61 -4
  68. package/dist/src/command-line/migrate/run/orchestrator.js +397 -133
  69. package/dist/src/command-line/migrate/run/run-state.d.ts +17 -1
  70. package/dist/src/command-line/migrate/run/run-state.js +41 -2
  71. package/dist/src/command-line/migrate/run/runbook.d.ts +1 -0
  72. package/dist/src/command-line/migrate/run/runbook.js +115 -18
  73. package/dist/src/command-line/migrate/run/state-lock.d.ts +29 -4
  74. package/dist/src/command-line/migrate/run/state-lock.js +102 -10
  75. package/dist/src/command-line/migrate/run/state-machine.js +4 -1
  76. package/dist/src/command-line/migrate/run/util.d.ts +7 -2
  77. package/dist/src/command-line/migrate/run/util.js +30 -3
  78. package/dist/src/command-line/migrate/run/worker.d.ts +1 -1
  79. package/dist/src/command-line/migrate/run/worker.js +252 -250
  80. package/dist/src/command-line/migrate/sort-migrations.d.ts +1 -7
  81. package/dist/src/command-line/migrate/sort-migrations.js +1 -12
  82. package/dist/src/command-line/nx-cloud/connect/connect-to-nx-cloud.js +17 -12
  83. package/dist/src/command-line/release/changelog.js +9 -6
  84. package/dist/src/command-line/release/config/config.d.ts +1 -0
  85. package/dist/src/command-line/release/config/config.js +48 -9
  86. package/dist/src/command-line/release/release.js +2 -2
  87. package/dist/src/command-line/release/utils/git.js +8 -7
  88. package/dist/src/command-line/release/utils/interpolate-release-config.d.ts +6 -0
  89. package/dist/src/command-line/release/utils/interpolate-release-config.js +39 -0
  90. package/dist/src/command-line/release/utils/release-graph.d.ts +5 -0
  91. package/dist/src/command-line/release/utils/release-graph.js +1 -0
  92. package/dist/src/command-line/release/utils/remote-release-clients/github.js +5 -6
  93. package/dist/src/command-line/release/utils/remote-release-clients/gitlab.js +5 -6
  94. package/dist/src/command-line/release/utils/resolve-changelog-renderer.js +2 -2
  95. package/dist/src/command-line/release/utils/shared.js +10 -10
  96. package/dist/src/command-line/release/utils/version-plan-utils.d.ts +3 -12
  97. package/dist/src/command-line/release/utils/version-plan-utils.js +33 -55
  98. package/dist/src/command-line/release/version/version-actions.js +2 -1
  99. package/dist/src/command-line/release/version.js +5 -2
  100. package/dist/src/command-line/reset/reset.js +58 -62
  101. package/dist/src/command-line/run/executor-utils.js +1 -0
  102. package/dist/src/command-line/run/run-one.d.ts +20 -1
  103. package/dist/src/command-line/run/run-one.js +153 -5
  104. package/dist/src/command-line/run/run.js +2 -1
  105. package/dist/src/command-line/show/projects.js +5 -3
  106. package/dist/src/command-line/show/show-target/info.d.ts +10 -1
  107. package/dist/src/command-line/show/show-target/info.js +100 -15
  108. package/dist/src/command-line/show/show-target/inputs.js +10 -2
  109. package/dist/src/command-line/show/show-target/utils.js +1 -0
  110. package/dist/src/command-line/watch/command-object.js +3 -22
  111. package/dist/src/command-line/watch/watch.d.ts +0 -7
  112. package/dist/src/command-line/watch/watch.js +1 -1
  113. package/dist/src/command-line/yargs-utils/shared-options.js +1 -1
  114. package/dist/src/config/misc-interfaces.d.ts +18 -0
  115. package/dist/src/config/nx-json.d.ts +22 -11
  116. package/dist/src/config/task-graph.d.ts +1 -1
  117. package/dist/src/config/workspace-json-project-json.d.ts +88 -0
  118. package/dist/src/core/graph/main.js +1 -1
  119. package/dist/src/core/graph/runtime.js +1 -1
  120. package/dist/src/core/graph/styles.css +1 -1
  121. package/dist/src/core/graph/styles.js +1 -1
  122. package/dist/src/daemon/client/client.d.ts +15 -0
  123. package/dist/src/daemon/client/client.js +181 -71
  124. package/dist/src/daemon/client/daemon-socket-messenger.d.ts +1 -1
  125. package/dist/src/daemon/client/daemon-socket-messenger.js +2 -2
  126. package/dist/src/daemon/server/client-socket-context.js +1 -1
  127. package/dist/src/daemon/server/handle-process-in-background.js +21 -9
  128. package/dist/src/daemon/server/handle-select-affected-tasks.d.ts +2 -1
  129. package/dist/src/daemon/server/handle-select-affected-tasks.js +21 -13
  130. package/dist/src/daemon/server/native-js-loader.d.ts +1 -0
  131. package/dist/src/daemon/server/native-js-loader.js +21 -0
  132. package/dist/src/daemon/server/project-graph-incremental-recomputation.js +4 -8
  133. package/dist/src/daemon/server/server.d.ts +2 -1
  134. package/dist/src/daemon/server/server.js +17 -4
  135. package/dist/src/daemon/server/shutdown-utils.js +0 -3
  136. package/dist/src/daemon/server/start.d.ts +1 -0
  137. package/dist/src/daemon/server/start.js +2 -0
  138. package/dist/src/daemon/socket-utils.d.ts +11 -9
  139. package/dist/src/daemon/socket-utils.js +31 -61
  140. package/dist/src/daemon/tmp-dir.d.ts +19 -14
  141. package/dist/src/daemon/tmp-dir.js +142 -354
  142. package/dist/src/devkit-exports.d.ts +9 -1
  143. package/dist/src/devkit-exports.js +12 -1
  144. package/dist/src/devkit-internals.d.ts +6 -5
  145. package/dist/src/devkit-internals.js +13 -4
  146. package/dist/src/executors/run-commands/run-commands.impl.d.ts +4 -2
  147. package/dist/src/executors/run-commands/run-commands.impl.js +53 -27
  148. package/dist/src/executors/run-commands/running-tasks.d.ts +13 -4
  149. package/dist/src/executors/run-commands/running-tasks.js +148 -95
  150. package/dist/src/executors/run-commands/schema.json +1 -1
  151. package/dist/src/hasher/check-task-files.js +5 -8
  152. package/dist/src/hasher/file-hasher.js +9 -7
  153. package/dist/src/hasher/hash-task.js +4 -0
  154. package/dist/src/hasher/native-task-hasher-impl.js +3 -1
  155. package/dist/src/hasher/task-hasher.d.ts +2 -0
  156. package/dist/src/hasher/task-hasher.js +4 -1
  157. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.d.ts +1 -2
  158. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.js +6 -11
  159. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.md +2 -2
  160. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.d.ts +4 -0
  161. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.js +15 -0
  162. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.md +30 -0
  163. package/dist/src/migrations/update-24-0-0/find-custom-hashers.d.ts +3 -0
  164. package/dist/src/migrations/update-24-0-0/find-custom-hashers.js +100 -0
  165. package/dist/src/migrations/update-24-0-0/find-custom-hashers.md +63 -0
  166. package/dist/src/migrations/update-24-0-0/move-custom-hashers-to-inputs.md +146 -0
  167. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.d.ts +3 -0
  168. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.js +130 -0
  169. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.md +62 -0
  170. package/dist/src/native/assert-supported-platform.js +1 -1
  171. package/dist/src/native/index.d.ts +238 -18
  172. package/dist/src/native/index.js +6 -1
  173. package/dist/src/native/native-bindings.js +15 -6
  174. package/dist/src/native/nx.openharmony-arm64.node +0 -0
  175. package/dist/src/native/nx.wasi-browser.js +1 -0
  176. package/dist/src/native/nx.wasi.cjs +1 -0
  177. package/dist/src/native/nx.wasm32-wasi.debug.wasm +0 -0
  178. package/dist/src/native/nx.wasm32-wasi.wasm +0 -0
  179. package/dist/src/nx-cloud/update-manager.d.ts +14 -0
  180. package/dist/src/nx-cloud/update-manager.js +237 -50
  181. package/dist/src/plugins/js/lock-file/pnpm-parser.js +3 -4
  182. package/dist/src/plugins/js/lock-file/pruned-output.d.ts +2 -2
  183. package/dist/src/plugins/js/lock-file/pruned-output.js +4 -4
  184. package/dist/src/plugins/js/utils/register.js +9 -4
  185. package/dist/src/project-graph/affected/affected-tasks.d.ts +9 -6
  186. package/dist/src/project-graph/affected/affected-tasks.js +31 -7
  187. package/dist/src/project-graph/plugins/isolation/isolated-plugin.js +7 -0
  188. package/dist/src/project-graph/plugins/loaded-nx-plugin.js +49 -6
  189. package/dist/src/project-graph/utils/project-configuration/target-merging.js +1 -1
  190. package/dist/src/project-graph/utils/project-configuration/target-normalization.js +12 -133
  191. package/dist/src/project-graph/utils/project-configuration-utils.js +2 -2
  192. package/dist/src/project-graph/utils/retrieve-workspace-files.js +27 -6
  193. package/dist/src/tasks-runner/create-task-graph.d.ts +8 -7
  194. package/dist/src/tasks-runner/create-task-graph.js +50 -27
  195. package/dist/src/tasks-runner/default-tasks-runner.js +1 -1
  196. package/dist/src/tasks-runner/init-tasks-runner.js +116 -59
  197. package/dist/src/tasks-runner/life-cycle.d.ts +4 -1
  198. package/dist/src/tasks-runner/life-cycle.js +7 -0
  199. package/dist/src/tasks-runner/life-cycles/performance-analysis.d.ts +5 -2
  200. package/dist/src/tasks-runner/life-cycles/performance-analysis.js +13 -7
  201. package/dist/src/tasks-runner/life-cycles/performance-life-cycle.d.ts +4 -3
  202. package/dist/src/tasks-runner/life-cycles/performance-life-cycle.js +9 -2
  203. package/dist/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +5 -2
  204. package/dist/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +4 -1
  205. package/dist/src/tasks-runner/life-cycles/summary-terminal-output-life-cycle.js +5 -1
  206. package/dist/src/tasks-runner/pseudo-ipc.d.ts +1 -0
  207. package/dist/src/tasks-runner/pseudo-ipc.js +4 -0
  208. package/dist/src/tasks-runner/pseudo-terminal.d.ts +1 -1
  209. package/dist/src/tasks-runner/pseudo-terminal.js +2 -2
  210. package/dist/src/tasks-runner/readiness/executor-ready-signal.d.ts +7 -0
  211. package/dist/src/tasks-runner/readiness/executor-ready-signal.js +43 -0
  212. package/dist/src/tasks-runner/readiness/probes.d.ts +14 -0
  213. package/dist/src/tasks-runner/readiness/probes.js +101 -0
  214. package/dist/src/tasks-runner/readiness/ready-signal-server.d.ts +18 -0
  215. package/dist/src/tasks-runner/readiness/ready-signal-server.js +72 -0
  216. package/dist/src/tasks-runner/readiness/ready-signal.d.ts +33 -0
  217. package/dist/src/tasks-runner/readiness/ready-signal.js +92 -0
  218. package/dist/src/tasks-runner/readiness/ready-when.d.ts +84 -0
  219. package/dist/src/tasks-runner/readiness/ready-when.js +371 -0
  220. package/dist/src/tasks-runner/readiness/startup-host.d.ts +1 -0
  221. package/dist/src/tasks-runner/readiness/startup-host.js +32 -0
  222. package/dist/src/tasks-runner/run-command.d.ts +6 -2
  223. package/dist/src/tasks-runner/run-command.js +21 -31
  224. package/dist/src/tasks-runner/run-outcome.d.ts +16 -0
  225. package/dist/src/tasks-runner/run-outcome.js +39 -0
  226. package/dist/src/tasks-runner/running-tasks/batch-process.js +6 -0
  227. package/dist/src/tasks-runner/running-tasks/node-child-process.js +5 -4
  228. package/dist/src/tasks-runner/running-tasks/running-task.d.ts +1 -1
  229. package/dist/src/tasks-runner/task-env.d.ts +10 -0
  230. package/dist/src/tasks-runner/task-env.js +37 -5
  231. package/dist/src/tasks-runner/task-graph-utils.d.ts +9 -6
  232. package/dist/src/tasks-runner/task-graph-utils.js +17 -12
  233. package/dist/src/tasks-runner/task-orchestrator.d.ts +62 -18
  234. package/dist/src/tasks-runner/task-orchestrator.js +750 -150
  235. package/dist/src/tasks-runner/tasks-runner.d.ts +1 -1
  236. package/dist/src/tasks-runner/tasks-schedule.d.ts +18 -1
  237. package/dist/src/tasks-runner/tasks-schedule.js +63 -6
  238. package/dist/src/tasks-runner/tokens.d.ts +54 -0
  239. package/dist/src/tasks-runner/tokens.js +161 -0
  240. package/dist/src/tasks-runner/utils.d.ts +35 -6
  241. package/dist/src/tasks-runner/utils.js +149 -68
  242. package/dist/src/ultracache/ci-status.d.ts +24 -0
  243. package/dist/src/ultracache/ci-status.js +87 -0
  244. package/dist/src/ultracache/config.d.ts +3 -3
  245. package/dist/src/ultracache/config.js +4 -4
  246. package/dist/src/ultracache/fetch.d.ts +2 -0
  247. package/dist/src/ultracache/fetch.js +1 -0
  248. package/dist/src/ultracache/overrides.js +4 -0
  249. package/dist/src/utils/acknowledge-build-scripts.d.ts +34 -1
  250. package/dist/src/utils/acknowledge-build-scripts.js +171 -32
  251. package/dist/src/utils/child-process.js +2 -1
  252. package/dist/src/utils/find-matching-projects.js +9 -6
  253. package/dist/src/utils/git-utils.d.ts +12 -5
  254. package/dist/src/utils/git-utils.js +69 -11
  255. package/dist/src/utils/long-running-target.d.ts +1 -3
  256. package/dist/src/utils/long-running-target.js +1 -3
  257. package/dist/src/utils/output.d.ts +4 -3
  258. package/dist/src/utils/output.js +4 -3
  259. package/dist/src/utils/owned-private-dir.d.ts +1 -17
  260. package/dist/src/utils/owned-private-dir.js +10 -62
  261. package/dist/src/utils/package-manager.d.ts +8 -0
  262. package/dist/src/utils/package-manager.js +65 -8
  263. package/dist/src/utils/perf-hooks.d.ts +1 -0
  264. package/dist/src/utils/plugins/core-plugins.js +5 -1
  265. package/dist/src/utils/progress-topics.d.ts +1 -0
  266. package/dist/src/utils/progress-topics.js +1 -0
  267. package/dist/src/utils/safe-spawn.js +1 -5
  268. package/dist/src/utils/shell-quoting.d.ts +8 -1
  269. package/dist/src/utils/shell-quoting.js +12 -1
  270. package/dist/src/utils/spawn-without-terminal.d.ts +27 -0
  271. package/dist/src/utils/spawn-without-terminal.js +110 -0
  272. package/dist/src/utils/string-similarity.d.ts +38 -0
  273. package/dist/src/utils/string-similarity.js +108 -0
  274. package/migrations.json +20 -6
  275. package/package.json +15 -24
  276. package/schemas/migrations-schema.json +11 -0
  277. package/schemas/nx-schema.json +133 -11
  278. package/schemas/project-schema.json +114 -4
  279. package/dist/src/command-line/migrate/agentic/prompts/generic-validation.d.ts +0 -56
  280. package/dist/src/command-line/migrate/agentic/prompts/generic-validation.js +0 -67
  281. package/dist/src/command-line/migrate/agentic/prompts/hybrid-prompt-migration.d.ts +0 -49
  282. package/dist/src/command-line/migrate/agentic/prompts/hybrid-prompt-migration.js +0 -53
  283. package/dist/src/command-line/migrate/agentic/prompts/prompt-migration.d.ts +0 -26
  284. package/dist/src/command-line/migrate/agentic/prompts/prompt-migration.js +0 -27
  285. package/dist/src/command-line/migrate/agentic/prompts/system-prompt.d.ts +0 -70
  286. package/dist/src/command-line/migrate/agentic/prompts/system-prompt.js +0 -113
  287. package/dist/src/command-line/migrate/agentic/run-step.d.ts +0 -68
  288. package/dist/src/command-line/migrate/agentic/run-step.js +0 -148
  289. package/dist/src/command-line/migrate/agentic/runner.d.ts +0 -21
  290. package/dist/src/command-line/migrate/agentic/runner.js +0 -262
  291. package/dist/src/migrations/update-23-0-0/consolidate-release-tag-config.d.ts +0 -9
  292. package/dist/src/migrations/update-23-0-0/consolidate-release-tag-config.js +0 -18
  293. package/dist/src/tasks-runner/legacy-depends-on-warning.d.ts +0 -18
  294. package/dist/src/tasks-runner/legacy-depends-on-warning.js +0 -109
@@ -5,12 +5,6 @@ interface SortableMigration {
5
5
  }
6
6
  /**
7
7
  * Sorts in place (like `Array.prototype.sort`) and returns the same array.
8
- *
9
- * `hoistHandoffGitignore` is set for agentic runs, which write scratch under
10
- * `.nx/migrate-runs`; see `agentic/handoff-gitignore.ts` for why the v23
11
- * gitignore migration must run first there.
12
8
  */
13
- export declare function sortMigrations<T extends SortableMigration>(migrations: T[], opts: {
14
- hoistHandoffGitignore: boolean;
15
- }): T[];
9
+ export declare function sortMigrations<T extends SortableMigration>(migrations: T[]): T[];
16
10
  export {};
@@ -2,23 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sortMigrations = sortMigrations;
4
4
  const semver_1 = require("semver");
5
- const types_1 = require("./agentic/types");
6
5
  const version_utils_1 = require("./version-utils");
7
6
  /**
8
7
  * Sorts in place (like `Array.prototype.sort`) and returns the same array.
9
- *
10
- * `hoistHandoffGitignore` is set for agentic runs, which write scratch under
11
- * `.nx/migrate-runs`; see `agentic/handoff-gitignore.ts` for why the v23
12
- * gitignore migration must run first there.
13
8
  */
14
- function sortMigrations(migrations, opts) {
9
+ function sortMigrations(migrations) {
15
10
  return migrations.sort((a, b) => {
16
- if (opts.hoistHandoffGitignore) {
17
- if ((0, types_1.isHandoffGitignoreMigration)(a))
18
- return -1;
19
- if ((0, types_1.isHandoffGitignoreMigration)(b))
20
- return 1;
21
- }
22
11
  if (a.name === '15-7-0-split-configuration-into-project-json-files') {
23
12
  return -1;
24
13
  }
@@ -155,23 +155,28 @@ async function runConnectToNxCloud(options, command) {
155
155
  installationSource: command ?? installationSource,
156
156
  });
157
157
  const connectCloudUrl = await (0, url_shorten_1.createNxCloudOnboardingURL)('nx-connect', token, undefined, options?.generateToken === true);
158
+ const manualConnectNote = {
159
+ title: `Your Nx Cloud workspace is ready.`,
160
+ bodyLines: [
161
+ `To claim it, connect it to your Nx Cloud account:`,
162
+ `- Go to the following URL to connect your workspace to Nx Cloud:`,
163
+ '',
164
+ `${connectCloudUrl}`,
165
+ ],
166
+ };
158
167
  try {
159
168
  const cloudConnectSpinner = ora(`Opening Nx Cloud ${connectCloudUrl} in your browser to connect your workspace.`).start();
160
169
  await sleep(2000);
161
- const { default: open } = await new Function('return import("open")')();
162
- await open(connectCloudUrl);
163
- cloudConnectSpinner.succeed();
170
+ if ((0, native_1.openUrl)(connectCloudUrl)) {
171
+ cloudConnectSpinner.succeed();
172
+ }
173
+ else {
174
+ cloudConnectSpinner.fail();
175
+ output_1.output.note(manualConnectNote);
176
+ }
164
177
  }
165
178
  catch (e) {
166
- output_1.output.note({
167
- title: `Your Nx Cloud workspace is ready.`,
168
- bodyLines: [
169
- `To claim it, connect it to your Nx Cloud account:`,
170
- `- Go to the following URL to connect your workspace to Nx Cloud:`,
171
- '',
172
- `${connectCloudUrl}`,
173
- ],
174
- });
179
+ output_1.output.note(manualConnectNote);
175
180
  }
176
181
  return true;
177
182
  }
@@ -13,7 +13,7 @@ const nx_json_1 = require("../../config/nx-json");
13
13
  const tree_1 = require("../../generators/tree");
14
14
  const file_map_utils_1 = require("../../project-graph/file-map-utils");
15
15
  const project_graph_1 = require("../../project-graph/project-graph");
16
- const utils_1 = require("../../tasks-runner/utils");
16
+ const interpolate_release_config_1 = require("./utils/interpolate-release-config");
17
17
  const handle_errors_1 = require("../../utils/handle-errors");
18
18
  const is_ci_1 = require("../../utils/is-ci");
19
19
  const output_1 = require("../../utils/output");
@@ -66,6 +66,9 @@ function createAPI(overrideReleaseConfig, ignoreNxJsonConfig) {
66
66
  if (configError) {
67
67
  return await (0, config_1.handleNxReleaseConfigError)(configError);
68
68
  }
69
+ if (args.gitCommitMessage) {
70
+ (0, config_1.validateCommitMessageTokens)(args.gitCommitMessage);
71
+ }
69
72
  // --print-config exits directly as it is not designed to be combined with any other programmatic operations
70
73
  if (args.printConfig) {
71
74
  return (0, print_config_1.printConfigAndExit)({
@@ -168,9 +171,9 @@ function createAPI(overrideReleaseConfig, ignoreNxJsonConfig) {
168
171
  }
169
172
  }
170
173
  // Set resolved version plans on groups
171
- await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
174
+ await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.allReleaseGroups, Object.keys(projectGraph.nodes), args.verbose);
172
175
  // Validate version plans against the filter after resolution
173
- const versionPlanValidationError = (0, version_plan_utils_2.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
176
+ const versionPlanValidationError = (0, version_plan_utils_2.validateResolvedVersionPlansAgainstFilter)(releaseGraph.allReleaseGroups, releaseGraph.releaseGroupToFilteredProjects);
174
177
  if (versionPlanValidationError) {
175
178
  output_1.output.error(versionPlanValidationError);
176
179
  process.exit(1);
@@ -632,7 +635,7 @@ async function generateChangelogForWorkspace({ tree, args, nxReleaseConfig, work
632
635
  const ChangelogRendererClass = (0, resolve_changelog_renderer_1.resolveChangelogRenderer)(config.renderer);
633
636
  let interpolatedTreePath = config.file || '';
634
637
  if (interpolatedTreePath) {
635
- interpolatedTreePath = (0, utils_1.interpolate)(interpolatedTreePath, {
638
+ interpolatedTreePath = (0, interpolate_release_config_1.interpolateReleaseConfig)(interpolatedTreePath, {
636
639
  projectName: '', // n/a for the workspace changelog
637
640
  projectRoot: '', // n/a for the workspace changelog
638
641
  workspaceRoot: '', // within the tree, workspaceRoot is the root
@@ -725,7 +728,7 @@ async function generateChangelogForProjects({ tree, args, changes, projectsVersi
725
728
  for (const project of projects) {
726
729
  let interpolatedTreePath = config.file || '';
727
730
  if (interpolatedTreePath) {
728
- interpolatedTreePath = (0, utils_1.interpolate)(interpolatedTreePath, {
731
+ interpolatedTreePath = (0, interpolate_release_config_1.interpolateReleaseConfig)(interpolatedTreePath, {
729
732
  projectName: project.name,
730
733
  projectRoot: project.data.root,
731
734
  workspaceRoot: '', // within the tree, workspaceRoot is the root
@@ -761,7 +764,7 @@ async function generateChangelogForProjects({ tree, args, changes, projectsVersi
761
764
  changelogEntryVersion: releaseVersion.rawVersion,
762
765
  project: project.name,
763
766
  entryWhenNoChanges: typeof config.entryWhenNoChanges === 'string'
764
- ? (0, utils_1.interpolate)(config.entryWhenNoChanges, {
767
+ ? (0, interpolate_release_config_1.interpolateReleaseConfig)(config.entryWhenNoChanges, {
765
768
  projectName: project.name,
766
769
  projectRoot: project.data.root,
767
770
  workspaceRoot: '', // within the tree, workspaceRoot is the root
@@ -59,6 +59,7 @@ export declare function createNxReleaseConfig(projectGraph: ProjectGraph, projec
59
59
  nxReleaseConfig: NxReleaseConfig | null;
60
60
  }>;
61
61
  export declare function handleNxReleaseConfigError(error: CreateNxReleaseConfigError): Promise<never>;
62
+ export declare function validateCommitMessageTokens(commitMessage: string): void;
62
63
  /**
63
64
  * Full form of the createRelease config, with the provider, hostname, and apiBaseUrl resolved.
64
65
  */
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_VERSION_ACTIONS_PATH = exports.IMPLICIT_DEFAULT_RELEASE_GROUP = void 0;
4
4
  exports.createNxReleaseConfig = createNxReleaseConfig;
5
5
  exports.handleNxReleaseConfigError = handleNxReleaseConfigError;
6
+ exports.validateCommitMessageTokens = validateCommitMessageTokens;
6
7
  /**
7
8
  * `nx release` is a powerful feature which spans many possible use cases. The possible variations
8
9
  * of configuration are therefore quite complex, particularly when you consider release groups.
@@ -25,18 +26,14 @@ const path_1 = require("../../../utils/path");
25
26
  const workspace_root_1 = require("../../../utils/workspace-root");
26
27
  const github_1 = require("../utils/remote-release-clients/github");
27
28
  const gitlab_1 = require("../utils/remote-release-clients/gitlab");
29
+ const interpolate_release_config_1 = require("../utils/interpolate-release-config");
28
30
  const resolve_changelog_renderer_1 = require("../utils/resolve-changelog-renderer");
29
31
  const resolve_nx_json_error_message_1 = require("../utils/resolve-nx-json-error-message");
30
32
  const conventional_commits_1 = require("./conventional-commits");
31
33
  exports.IMPLICIT_DEFAULT_RELEASE_GROUP = '__default__';
32
34
  exports.DEFAULT_VERSION_ACTIONS_PATH = '@nx/js/src/release/version-actions';
33
- // TODO(v24): remove this helper, the call site in createNxReleaseConfig, and
34
- // the corresponding handleNxReleaseConfigError case. The deprecated flat
35
- // `releaseTagPattern*` properties were moved to the nested `releaseTag`
36
- // object in Nx 22 and the consolidation migration runs again in Nx 23 to
37
- // catch any configs added after the v22 migration. Once Nx 24 lands, configs
38
- // that still carry the legacy keys are expected to have been repaired via
39
- // `nx repair`, and we can drop this back-compat error path entirely.
35
+ // Kept on purpose: these keys are otherwise ignored, so a stale config would
36
+ // silently tag with the default pattern. `nx repair` fixes them (22-0-0 migration).
40
37
  const LEGACY_RELEASE_TAG_PROPERTY_NAMES = [
41
38
  'releaseTagPattern',
42
39
  'releaseTagPatternCheckAllBranchesWhen',
@@ -69,7 +66,6 @@ function detectLegacyReleaseTagProperties(userConfig) {
69
66
  }
70
67
  // Apply default configuration to any optional user configuration and handle known errors
71
68
  async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig = {}) {
72
- // TODO(v24): remove this back-compat error along with detectLegacyReleaseTagProperties
73
69
  const legacyReleaseTagProperties = detectLegacyReleaseTagProperties(userConfig);
74
70
  if (legacyReleaseTagProperties.length > 0) {
75
71
  return {
@@ -630,6 +626,15 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
630
626
  }
631
627
  }
632
628
  }
629
+ // Before validateChangelogConfig, which reports any renderer path error as
630
+ // an unresolvable renderer
631
+ validateReleaseConfigTokens({
632
+ releaseTag: WORKSPACE_DEFAULTS.releaseTag,
633
+ git: rootGitConfig,
634
+ version: rootVersionConfig,
635
+ changelog: rootChangelogConfig,
636
+ groups: releaseGroups,
637
+ });
633
638
  const configError = validateChangelogConfig(releaseGroups, rootChangelogConfig);
634
639
  if (configError) {
635
640
  return {
@@ -775,7 +780,6 @@ async function handleNxReleaseConfigError(error) {
775
780
  });
776
781
  }
777
782
  break;
778
- // TODO(v24): remove this case along with detectLegacyReleaseTagProperties
779
783
  case 'LEGACY_RELEASE_TAG_PATTERN_PROPERTIES_DETECTED':
780
784
  {
781
785
  const properties = error.data.properties;
@@ -1038,6 +1042,41 @@ function isProjectPublic(project, projectGraph, projectFileMap) {
1038
1042
  return false;
1039
1043
  }
1040
1044
  }
1045
+ const releaseTagPatternTokens = ['version', 'projectName', 'releaseGroupName'];
1046
+ const commitMessageTokens = ['version', 'projectName'];
1047
+ const changelogFileTokens = ['projectName', 'projectRoot', 'workspaceRoot'];
1048
+ const changelogRendererTokens = ['workspaceRoot'];
1049
+ /**
1050
+ * A release can interpolate these fields after it writes files, so an invalid
1051
+ * token has to fail when the config is loaded
1052
+ */
1053
+ function validateReleaseConfigTokens(config) {
1054
+ const templates = [
1055
+ [config.releaseTag.pattern, releaseTagPatternTokens],
1056
+ [config.git.commitMessage, commitMessageTokens],
1057
+ [config.version.git.commitMessage, commitMessageTokens],
1058
+ [config.changelog.git.commitMessage, commitMessageTokens],
1059
+ ];
1060
+ const { workspaceChangelog } = config.changelog;
1061
+ if (workspaceChangelog) {
1062
+ // The workspace changelog uses its entryWhenNoChanges as written
1063
+ templates.push([workspaceChangelog.file, changelogFileTokens], [workspaceChangelog.renderer, changelogRendererTokens]);
1064
+ }
1065
+ for (const group of Object.values(config.groups)) {
1066
+ templates.push([group.releaseTag.pattern, releaseTagPatternTokens]);
1067
+ if (group.changelog) {
1068
+ templates.push([group.changelog.file, changelogFileTokens], [group.changelog.entryWhenNoChanges, changelogFileTokens], [group.changelog.renderer, changelogRendererTokens]);
1069
+ }
1070
+ }
1071
+ for (const [template, tokens] of templates) {
1072
+ if (typeof template === 'string') {
1073
+ (0, interpolate_release_config_1.validateReleaseConfigTemplate)(template, tokens);
1074
+ }
1075
+ }
1076
+ }
1077
+ function validateCommitMessageTokens(commitMessage) {
1078
+ (0, interpolate_release_config_1.validateReleaseConfigTemplate)(commitMessage, commitMessageTokens);
1079
+ }
1041
1080
  /**
1042
1081
  * We need to ensure that changelog renderers are resolvable up front so that we do not end up erroring after performing
1043
1082
  * actions later, and we also make sure that any configured createRelease options are valid.
@@ -84,9 +84,9 @@ function createAPI(overrideReleaseConfig, ignoreNxJsonConfig) {
84
84
  });
85
85
  // Suppress the filter log for the changelog command as it would have already been printed by the version command
86
86
  process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG = 'true';
87
- await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
87
+ await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.allReleaseGroups, Object.keys(projectGraph.nodes), args.verbose);
88
88
  // Validate version plans against the filter after resolution
89
- const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
89
+ const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.allReleaseGroups, releaseGraph.releaseGroupToFilteredProjects);
90
90
  if (versionPlanValidationError) {
91
91
  output_1.output.error(versionPlanValidationError);
92
92
  process.exit(1);
@@ -22,7 +22,7 @@ exports.getFirstProjectCommit = getFirstProjectCommit;
22
22
  */
23
23
  const node_path_1 = require("node:path");
24
24
  const semver_1 = require("semver");
25
- const utils_1 = require("../../../tasks-runner/utils");
25
+ const interpolate_release_config_1 = require("./interpolate-release-config");
26
26
  const workspace_root_1 = require("../../../utils/workspace-root");
27
27
  const exec_command_1 = require("./exec-command");
28
28
  const shared_1 = require("./shared");
@@ -103,17 +103,18 @@ function extractTagAndVersion(tag, tagRegexp, options) {
103
103
  */
104
104
  async function getLatestGitTagForPattern(releaseTagPattern, additionalInterpolationData = {}, resolveTags, options) {
105
105
  const { requireSemver, strictPreid, preid, checkAllBranchesWhen } = options;
106
+ // Outside the try: an invalid pattern must fail, not read as "no tags"
107
+ const interpolatedTagPattern = (0, interpolate_release_config_1.interpolateReleaseConfig)(releaseTagPattern, {
108
+ version: '%v%',
109
+ projectName: '%p%',
110
+ releaseGroupName: '%rg%',
111
+ ...additionalInterpolationData,
112
+ });
106
113
  try {
107
114
  let tags = await resolveTags(checkAllBranchesWhen);
108
115
  if (!tags.length) {
109
116
  return null;
110
117
  }
111
- const interpolatedTagPattern = (0, utils_1.interpolate)(releaseTagPattern, {
112
- version: '%v%',
113
- projectName: '%p%',
114
- releaseGroupName: '%rg%',
115
- ...additionalInterpolationData,
116
- });
117
118
  const tagRegexp = `^${escapeRegExp(interpolatedTagPattern)
118
119
  .replace('%v%', '(.+)')
119
120
  .replace('%p%', '(.+)')
@@ -0,0 +1,6 @@
1
+ export declare function interpolateReleaseConfig(template: string, data: Record<string, unknown>): string;
2
+ /**
3
+ * Throws what `interpolateReleaseConfig` throws for `template` when it gets
4
+ * values for `tokens`, so a release can fail before it writes anything
5
+ */
6
+ export declare function validateReleaseConfigTemplate(template: string, tokens: readonly string[]): void;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interpolateReleaseConfig = interpolateReleaseConfig;
4
+ exports.validateReleaseConfigTemplate = validateReleaseConfigTemplate;
5
+ const tokens_1 = require("../../../tasks-runner/tokens");
6
+ const utils_1 = require("../../../tasks-runner/utils");
7
+ // A call site passes only the values it has, so a fallback is found by name
8
+ const releaseTokens = new Set([
9
+ 'version',
10
+ 'projectName',
11
+ 'releaseGroupName',
12
+ 'projectRoot',
13
+ 'workspaceRoot',
14
+ ]);
15
+ function interpolateReleaseConfig(template, data) {
16
+ rejectFallbacks(template);
17
+ return (0, utils_1.interpolate)(template, data, {
18
+ envNotAllowed: (template) => `Release configuration '${template}' is invalid. It can't read environment variables, because every release run must resolve it the same way.`,
19
+ });
20
+ }
21
+ /**
22
+ * Throws what `interpolateReleaseConfig` throws for `template` when it gets
23
+ * values for `tokens`, so a release can fail before it writes anything
24
+ */
25
+ function validateReleaseConfigTemplate(template, tokens) {
26
+ interpolateReleaseConfig(template, Object.fromEntries(tokens.map((token) => [token, ''])));
27
+ }
28
+ // Tags, commit messages and the previous-tag lookup fill in different values,
29
+ // so a fallback wouldn't resolve the same way in each
30
+ function rejectFallbacks(template) {
31
+ const nodes = (0, tokens_1.parseTokens)(template, {
32
+ isToken: (name) => name === 'env' || releaseTokens.has(name),
33
+ read: () => undefined,
34
+ noValue: (token) => token,
35
+ });
36
+ if (nodes.some((node) => node.kind === 'token' && node.parts.length > 1)) {
37
+ throw new Error(`Release configuration '${template}' is invalid. It can't use ?? fallbacks.`);
38
+ }
39
+ }
@@ -107,6 +107,11 @@ export declare class ReleaseGraph {
107
107
  title: string;
108
108
  bodyLines: string[];
109
109
  } | null;
110
+ /**
111
+ * Every configured release group, regardless of filters. Version plans must be resolved
112
+ * against these, as pending plans may target projects outside the current filter.
113
+ */
114
+ readonly allReleaseGroups: ReleaseGroupWithName[];
110
115
  constructor(releaseGroups: ReleaseGroupWithName[], filters: {
111
116
  projects?: string[];
112
117
  groups?: string[];
@@ -57,6 +57,7 @@ class ReleaseGraph {
57
57
  * Null if no filters were applied.
58
58
  */
59
59
  this.filterLog = null;
60
+ this.allReleaseGroups = [...releaseGroups];
60
61
  }
61
62
  /**
62
63
  * Initialize the graph by building all relationships and caches
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const pc = tslib_1.__importStar(require("picocolors"));
6
6
  const prompt_helpers_1 = require("../../../../utils/prompt-helpers");
7
7
  const node_child_process_1 = require("node:child_process");
8
+ const native_1 = require("../../../../native");
8
9
  const node_fs_1 = require("node:fs");
9
10
  const node_os_1 = require("node:os");
10
11
  const output_1 = require("../../../../utils/output");
@@ -238,18 +239,16 @@ class GithubRemoteReleaseClient extends remote_release_client_1.RemoteReleaseCli
238
239
  if (!shouldContinueInGitHub) {
239
240
  return;
240
241
  }
241
- const { default: open } = await new Function('return import("open")')();
242
- await open(result.url)
243
- .then(() => {
242
+ if ((0, native_1.openUrl)(result.url)) {
244
243
  console.info(`\nFollow up in the browser to manually create the release:\n\n` +
245
244
  pc.underline(pc.cyan(result.url)) +
246
245
  `\n`);
247
- })
248
- .catch(() => {
246
+ }
247
+ else {
249
248
  console.info(`Open this link to manually create a release: \n` +
250
249
  pc.underline(pc.cyan(result.url)) +
251
250
  '\n');
252
- });
251
+ }
253
252
  }
254
253
  async promptForContinueInGitHub() {
255
254
  try {
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const pc = tslib_1.__importStar(require("picocolors"));
6
6
  const prompt_helpers_1 = require("../../../../utils/prompt-helpers");
7
7
  const node_child_process_1 = require("node:child_process");
8
+ const native_1 = require("../../../../native");
8
9
  const output_1 = require("../../../../utils/output");
9
10
  const extract_repo_slug_1 = require("./extract-repo-slug");
10
11
  const remote_release_client_1 = require("./remote-release-client");
@@ -157,18 +158,16 @@ class GitLabRemoteReleaseClient extends remote_release_client_1.RemoteReleaseCli
157
158
  if (!shouldContinueInGitLab) {
158
159
  return;
159
160
  }
160
- const { default: open } = await new Function('return import("open")')();
161
- await open(result.url)
162
- .then(() => {
161
+ if ((0, native_1.openUrl)(result.url)) {
163
162
  console.info(`\nFollow up in the browser to manually create the release:\n\n` +
164
163
  pc.underline(pc.cyan(result.url)) +
165
164
  `\n`);
166
- })
167
- .catch(() => {
165
+ }
166
+ else {
168
167
  console.info(`Open this link to manually create a release: \n` +
169
168
  pc.underline(pc.cyan(result.url)) +
170
169
  '\n');
171
- });
170
+ }
172
171
  }
173
172
  async promptForContinueInGitLab() {
174
173
  try {
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveChangelogRenderer = resolveChangelogRenderer;
4
4
  const register_1 = require("../../../plugins/js/utils/register");
5
- const utils_1 = require("../../../tasks-runner/utils");
5
+ const interpolate_release_config_1 = require("./interpolate-release-config");
6
6
  const workspace_root_1 = require("../../../utils/workspace-root");
7
7
  function resolveChangelogRenderer(changelogRendererPathOrImplementation) {
8
8
  // An implementation was provided directly via the programmatic API
9
9
  if (typeof changelogRendererPathOrImplementation === 'function') {
10
10
  return changelogRendererPathOrImplementation;
11
11
  }
12
- const interpolatedChangelogRendererPath = (0, utils_1.interpolate)(changelogRendererPathOrImplementation, {
12
+ const interpolatedChangelogRendererPath = (0, interpolate_release_config_1.interpolateReleaseConfig)(changelogRendererPathOrImplementation, {
13
13
  workspaceRoot: workspace_root_1.workspaceRoot,
14
14
  });
15
15
  // TS renderers go through loadTsFile (native-strip -> swc/ts-node + paths).
@@ -12,7 +12,7 @@ exports.getCommitsRelevantToProjects = getCommitsRelevantToProjects;
12
12
  const tslib_1 = require("tslib");
13
13
  const pc = tslib_1.__importStar(require("picocolors"));
14
14
  const semver_1 = require("semver");
15
- const utils_1 = require("../../../tasks-runner/utils");
15
+ const interpolate_release_config_1 = require("./interpolate-release-config");
16
16
  const output_1 = require("../../../utils/output");
17
17
  const git_1 = require("./git");
18
18
  const find_matching_projects_1 = require("../../../utils/find-matching-projects");
@@ -34,7 +34,7 @@ class ReleaseVersion {
34
34
  releaseGroupName, // optional release group name to interpolate into the releaseTagPattern
35
35
  }) {
36
36
  this.rawVersion = version;
37
- this.gitTag = (0, utils_1.interpolate)(releaseTagPattern, {
37
+ this.gitTag = (0, interpolate_release_config_1.interpolateReleaseConfig)(releaseTagPattern, {
38
38
  version,
39
39
  projectName: projectName
40
40
  ? (0, git_1.sanitizeProjectNameForGitTag)(projectName)
@@ -83,7 +83,7 @@ function createCommitMessageValues(releaseGroups, releaseGroupToFilteredProjects
83
83
  releaseTagPattern: releaseGroup.releaseTag.pattern,
84
84
  releaseGroupName: releaseGroup.name,
85
85
  });
86
- commitMessageValues[0] = (0, utils_1.interpolate)(commitMessageValues[0], {
86
+ commitMessageValues[0] = (0, interpolate_release_config_1.interpolateReleaseConfig)(commitMessageValues[0], {
87
87
  version: releaseVersion.rawVersion,
88
88
  }).trim();
89
89
  return commitMessageValues;
@@ -106,7 +106,7 @@ function createCommitMessageValues(releaseGroups, releaseGroupToFilteredProjects
106
106
  projectName: releaseGroupProjectNames[0],
107
107
  releaseGroupName: releaseGroup.name,
108
108
  });
109
- commitMessageValues[0] = (0, utils_1.interpolate)(commitMessageValues[0], {
109
+ commitMessageValues[0] = (0, interpolate_release_config_1.interpolateReleaseConfig)(commitMessageValues[0], {
110
110
  version: releaseVersion.rawVersion,
111
111
  projectName: releaseGroupProjectNames[0],
112
112
  }).trim();
@@ -199,14 +199,14 @@ function createGitTagValues(releaseGroups, releaseGroupToFilteredProjects, versi
199
199
  if (preferDockerVersion === 'both') {
200
200
  // Create tags for both docker and semver versions
201
201
  if (projectVersionData.dockerVersion) {
202
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
202
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
203
203
  version: projectVersionData.dockerVersion,
204
204
  projectName: (0, git_1.sanitizeProjectNameForGitTag)(project),
205
205
  releaseGroupName: releaseGroup.name,
206
206
  }));
207
207
  }
208
208
  if (projectVersionData.newVersion) {
209
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
209
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
210
210
  version: projectVersionData.newVersion,
211
211
  projectName: (0, git_1.sanitizeProjectNameForGitTag)(project),
212
212
  releaseGroupName: releaseGroup.name,
@@ -221,7 +221,7 @@ function createGitTagValues(releaseGroups, releaseGroupToFilteredProjects, versi
221
221
  : (projectVersionData.newVersion ??
222
222
  projectVersionData.dockerVersion);
223
223
  if (version) {
224
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
224
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
225
225
  version,
226
226
  projectName: (0, git_1.sanitizeProjectNameForGitTag)(project),
227
227
  releaseGroupName: releaseGroup.name,
@@ -241,13 +241,13 @@ function createGitTagValues(releaseGroups, releaseGroupToFilteredProjects, versi
241
241
  if (preferDockerVersion === 'both') {
242
242
  // Create tags for both docker and semver versions
243
243
  if (projectVersionData.dockerVersion) {
244
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
244
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
245
245
  version: projectVersionData.dockerVersion,
246
246
  releaseGroupName: releaseGroup.name,
247
247
  }));
248
248
  }
249
249
  if (projectVersionData.newVersion) {
250
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
250
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
251
251
  version: projectVersionData.newVersion,
252
252
  releaseGroupName: releaseGroup.name,
253
253
  }));
@@ -259,7 +259,7 @@ function createGitTagValues(releaseGroups, releaseGroupToFilteredProjects, versi
259
259
  ? (projectVersionData.dockerVersion ?? projectVersionData.newVersion)
260
260
  : (projectVersionData.newVersion ?? projectVersionData.dockerVersion);
261
261
  if (version) {
262
- tags.push((0, utils_1.interpolate)(releaseGroup.releaseTag.pattern, {
262
+ tags.push((0, interpolate_release_config_1.interpolateReleaseConfig)(releaseGroup.releaseTag.pattern, {
263
263
  version,
264
264
  releaseGroupName: releaseGroup.name,
265
265
  }));
@@ -1,10 +1,10 @@
1
1
  import { GroupVersionPlan, ProjectsVersionPlan } from '../config/version-plans';
2
2
  import { ReleaseGroupWithName } from '../config/filter-release-groups';
3
3
  /**
4
- * Validates that all projects in resolved version plans are included in the filtered projects.
5
- * This validation ensures that version plans don't contain projects that aren't being released.
4
+ * Validates that no version plan mixes projects being released with projects outside the release filter,
5
+ * as such a plan could neither be fully applied nor safely deleted.
6
6
  *
7
- * @param releaseGroups - The release groups to validate
7
+ * @param releaseGroups - All configured release groups, so that plans spanning groups outside the filter are caught
8
8
  * @param releaseGroupToFilteredProjects - Map of release groups to their filtered projects
9
9
  * @returns An error object if validation fails, null otherwise
10
10
  */
@@ -29,12 +29,3 @@ export declare function getProjectsAffectedByVersionPlan(plan: GroupVersionPlan
29
29
  * @returns True if ALL projects in the version plan are being filtered/released
30
30
  */
31
31
  export declare function areAllVersionPlanProjectsFiltered(plan: GroupVersionPlan | ProjectsVersionPlan, releaseGroup: ReleaseGroupWithName, filteredProjects: Set<string> | undefined): boolean;
32
- /**
33
- * Finds projects in a version plan that are NOT included in the filtered projects set.
34
- *
35
- * @param plan - The version plan to check
36
- * @param releaseGroup - The release group containing the version plan
37
- * @param filteredProjects - Set of projects that are being released (filtered)
38
- * @returns Array of project names that are in the version plan but not in the filter
39
- */
40
- export declare function getVersionPlanProjectsOutsideFilter(plan: GroupVersionPlan | ProjectsVersionPlan, releaseGroup: ReleaseGroupWithName, filteredProjects: Set<string> | undefined): string[];