@ohos-ports/nx 19.8.4-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 (840) hide show
  1. package/.eslintrc.json +140 -0
  2. package/LICENSE +22 -0
  3. package/README.md +66 -0
  4. package/bin/init-local.d.ts +8 -0
  5. package/bin/init-local.js +183 -0
  6. package/bin/nx-cloud.d.ts +3 -0
  7. package/bin/nx-cloud.js +47 -0
  8. package/bin/nx.d.ts +2 -0
  9. package/bin/nx.js +226 -0
  10. package/bin/post-install.d.ts +1 -0
  11. package/bin/post-install.js +64 -0
  12. package/bin/run-executor.d.ts +1 -0
  13. package/bin/run-executor.js +66 -0
  14. package/executors.json +19 -0
  15. package/generators.json +10 -0
  16. package/migrations.json +94 -0
  17. package/node_modules/@nrwl/tao/LICENSE +22 -0
  18. package/node_modules/@nrwl/tao/README.md +18 -0
  19. package/node_modules/@nrwl/tao/index.d.ts +1 -0
  20. package/node_modules/@nrwl/tao/index.js +7 -0
  21. package/node_modules/@nrwl/tao/package.json +41 -0
  22. package/node_modules/@nrwl/tao/src/commands/ngcli-adapter.d.ts +1 -0
  23. package/node_modules/@nrwl/tao/src/commands/ngcli-adapter.js +5 -0
  24. package/node_modules/@nrwl/tao/src/shared/logger.d.ts +1 -0
  25. package/node_modules/@nrwl/tao/src/shared/logger.js +5 -0
  26. package/node_modules/@nrwl/tao/src/shared/nx.d.ts +1 -0
  27. package/node_modules/@nrwl/tao/src/shared/nx.js +5 -0
  28. package/node_modules/@nrwl/tao/src/shared/package-manager.d.ts +1 -0
  29. package/node_modules/@nrwl/tao/src/shared/package-manager.js +5 -0
  30. package/node_modules/@nrwl/tao/src/shared/project-graph.d.ts +1 -0
  31. package/node_modules/@nrwl/tao/src/shared/project-graph.js +5 -0
  32. package/node_modules/@nrwl/tao/src/shared/tree.d.ts +1 -0
  33. package/node_modules/@nrwl/tao/src/shared/tree.js +5 -0
  34. package/node_modules/@nrwl/tao/src/utils/app-root.d.ts +1 -0
  35. package/node_modules/@nrwl/tao/src/utils/app-root.js +5 -0
  36. package/package.json +198 -0
  37. package/plugins/package-json.d.ts +1 -0
  38. package/plugins/package-json.js +12 -0
  39. package/presets/core.json +1 -0
  40. package/presets/npm.json +7 -0
  41. package/release/changelog-renderer/index.d.ts +80 -0
  42. package/release/changelog-renderer/index.js +315 -0
  43. package/release/index.d.ts +4 -0
  44. package/release/index.js +12 -0
  45. package/schemas/nx-schema.json +819 -0
  46. package/schemas/project-schema.json +331 -0
  47. package/schemas/workspace-schema.json +185 -0
  48. package/src/adapter/angular-json.d.ts +10 -0
  49. package/src/adapter/angular-json.js +128 -0
  50. package/src/adapter/compat.d.ts +2 -0
  51. package/src/adapter/compat.js +143 -0
  52. package/src/adapter/decorate-cli.d.ts +1 -0
  53. package/src/adapter/decorate-cli.js +24 -0
  54. package/src/adapter/ngcli-adapter.d.ts +90 -0
  55. package/src/adapter/ngcli-adapter.js +854 -0
  56. package/src/adapter/rxjs-for-await.d.ts +109 -0
  57. package/src/adapter/rxjs-for-await.js +362 -0
  58. package/src/command-line/activate-powerpack/activate-powerpack.d.ts +2 -0
  59. package/src/command-line/activate-powerpack/activate-powerpack.js +34 -0
  60. package/src/command-line/activate-powerpack/command-object.d.ts +6 -0
  61. package/src/command-line/activate-powerpack/command-object.js +26 -0
  62. package/src/command-line/add/add.d.ts +3 -0
  63. package/src/command-line/add/add.js +150 -0
  64. package/src/command-line/add/command-object.d.ts +8 -0
  65. package/src/command-line/add/command-object.js +27 -0
  66. package/src/command-line/affected/affected.d.ts +10 -0
  67. package/src/command-line/affected/affected.js +88 -0
  68. package/src/command-line/affected/command-object.d.ts +6 -0
  69. package/src/command-line/affected/command-object.js +82 -0
  70. package/src/command-line/connect/command-object.d.ts +3 -0
  71. package/src/command-line/connect/command-object.js +32 -0
  72. package/src/command-line/connect/connect-to-nx-cloud.d.ts +12 -0
  73. package/src/command-line/connect/connect-to-nx-cloud.js +149 -0
  74. package/src/command-line/connect/view-logs.d.ts +1 -0
  75. package/src/command-line/connect/view-logs.js +55 -0
  76. package/src/command-line/daemon/command-object.d.ts +2 -0
  77. package/src/command-line/daemon/command-object.js +21 -0
  78. package/src/command-line/daemon/daemon.d.ts +2 -0
  79. package/src/command-line/daemon/daemon.js +26 -0
  80. package/src/command-line/deprecated/command-objects.d.ts +9 -0
  81. package/src/command-line/deprecated/command-objects.js +48 -0
  82. package/src/command-line/examples.d.ts +5 -0
  83. package/src/command-line/examples.js +379 -0
  84. package/src/command-line/exec/command-object.d.ts +2 -0
  85. package/src/command-line/exec/command-object.js +19 -0
  86. package/src/command-line/exec/exec.d.ts +1 -0
  87. package/src/command-line/exec/exec.js +142 -0
  88. package/src/command-line/format/command-object.d.ts +3 -0
  89. package/src/command-line/format/command-object.js +46 -0
  90. package/src/command-line/format/format.d.ts +2 -0
  91. package/src/command-line/format/format.js +195 -0
  92. package/src/command-line/generate/command-object.d.ts +2 -0
  93. package/src/command-line/generate/command-object.js +67 -0
  94. package/src/command-line/generate/generate.d.ts +21 -0
  95. package/src/command-line/generate/generate.js +262 -0
  96. package/src/command-line/generate/generator-utils.d.ts +18 -0
  97. package/src/command-line/generate/generator-utils.js +86 -0
  98. package/src/command-line/graph/command-object.d.ts +25 -0
  99. package/src/command-line/graph/command-object.js +75 -0
  100. package/src/command-line/graph/graph.d.ts +68 -0
  101. package/src/command-line/graph/graph.js +806 -0
  102. package/src/command-line/import/command-object.d.ts +2 -0
  103. package/src/command-line/import/command-object.js +44 -0
  104. package/src/command-line/import/import.d.ts +25 -0
  105. package/src/command-line/import/import.js +328 -0
  106. package/src/command-line/import/utils/merge-remote-source.d.ts +2 -0
  107. package/src/command-line/import/utils/merge-remote-source.js +14 -0
  108. package/src/command-line/import/utils/needs-install.d.ts +3 -0
  109. package/src/command-line/import/utils/needs-install.js +31 -0
  110. package/src/command-line/import/utils/prepare-source-repo.d.ts +2 -0
  111. package/src/command-line/import/utils/prepare-source-repo.js +27 -0
  112. package/src/command-line/init/command-object.d.ts +2 -0
  113. package/src/command-line/init/command-object.js +83 -0
  114. package/src/command-line/init/implementation/add-nx-to-monorepo.d.ts +6 -0
  115. package/src/command-line/init/implementation/add-nx-to-monorepo.js +130 -0
  116. package/src/command-line/init/implementation/add-nx-to-nest.d.ts +5 -0
  117. package/src/command-line/init/implementation/add-nx-to-nest.js +345 -0
  118. package/src/command-line/init/implementation/add-nx-to-npm-repo.d.ts +6 -0
  119. package/src/command-line/init/implementation/add-nx-to-npm-repo.js +72 -0
  120. package/src/command-line/init/implementation/angular/index.d.ts +2 -0
  121. package/src/command-line/init/implementation/angular/index.js +125 -0
  122. package/src/command-line/init/implementation/angular/integrated-workspace.d.ts +1 -0
  123. package/src/command-line/init/implementation/angular/integrated-workspace.js +12 -0
  124. package/src/command-line/init/implementation/angular/legacy-angular-versions.d.ts +2 -0
  125. package/src/command-line/init/implementation/angular/legacy-angular-versions.js +122 -0
  126. package/src/command-line/init/implementation/angular/standalone-workspace.d.ts +1 -0
  127. package/src/command-line/init/implementation/angular/standalone-workspace.js +175 -0
  128. package/src/command-line/init/implementation/angular/types.d.ts +20 -0
  129. package/src/command-line/init/implementation/angular/types.js +2 -0
  130. package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts +8 -0
  131. package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +106 -0
  132. package/src/command-line/init/implementation/dot-nx/nxw.d.ts +1 -0
  133. package/src/command-line/init/implementation/dot-nx/nxw.js +117 -0
  134. package/src/command-line/init/implementation/react/add-craco-commands-to-package-scripts.d.ts +1 -0
  135. package/src/command-line/init/implementation/react/add-craco-commands-to-package-scripts.js +21 -0
  136. package/src/command-line/init/implementation/react/add-vite-commands-to-package-scripts.d.ts +1 -0
  137. package/src/command-line/init/implementation/react/add-vite-commands-to-package-scripts.js +18 -0
  138. package/src/command-line/init/implementation/react/check-for-custom-webpack-setup.d.ts +1 -0
  139. package/src/command-line/init/implementation/react/check-for-custom-webpack-setup.js +17 -0
  140. package/src/command-line/init/implementation/react/check-for-uncommitted-changes.d.ts +1 -0
  141. package/src/command-line/init/implementation/react/check-for-uncommitted-changes.js +20 -0
  142. package/src/command-line/init/implementation/react/clean-up-files.d.ts +1 -0
  143. package/src/command-line/init/implementation/react/clean-up-files.js +30 -0
  144. package/src/command-line/init/implementation/react/index.d.ts +4 -0
  145. package/src/command-line/init/implementation/react/index.js +230 -0
  146. package/src/command-line/init/implementation/react/read-name-from-package-json.d.ts +1 -0
  147. package/src/command-line/init/implementation/react/read-name-from-package-json.js +16 -0
  148. package/src/command-line/init/implementation/react/rename-js-to-jsx.d.ts +1 -0
  149. package/src/command-line/init/implementation/react/rename-js-to-jsx.js +22 -0
  150. package/src/command-line/init/implementation/react/tsconfig-setup.d.ts +1 -0
  151. package/src/command-line/init/implementation/react/tsconfig-setup.js +108 -0
  152. package/src/command-line/init/implementation/react/write-craco-config.d.ts +1 -0
  153. package/src/command-line/init/implementation/react/write-craco-config.js +61 -0
  154. package/src/command-line/init/implementation/react/write-vite-config.d.ts +1 -0
  155. package/src/command-line/init/implementation/react/write-vite-config.js +37 -0
  156. package/src/command-line/init/implementation/react/write-vite-index-html.d.ts +1 -0
  157. package/src/command-line/init/implementation/react/write-vite-index-html.js +24 -0
  158. package/src/command-line/init/implementation/utils.d.ts +16 -0
  159. package/src/command-line/init/implementation/utils.js +205 -0
  160. package/src/command-line/init/init-v1.d.ts +11 -0
  161. package/src/command-line/init/init-v1.js +130 -0
  162. package/src/command-line/init/init-v2.d.ts +14 -0
  163. package/src/command-line/init/init-v2.js +239 -0
  164. package/src/command-line/list/command-object.d.ts +2 -0
  165. package/src/command-line/list/command-object.js +15 -0
  166. package/src/command-line/list/list.d.ts +13 -0
  167. package/src/command-line/list/list.js +44 -0
  168. package/src/command-line/login/command-object.d.ts +2 -0
  169. package/src/command-line/login/command-object.js +16 -0
  170. package/src/command-line/login/login.d.ts +5 -0
  171. package/src/command-line/login/login.js +16 -0
  172. package/src/command-line/logout/command-object.d.ts +2 -0
  173. package/src/command-line/logout/command-object.js +12 -0
  174. package/src/command-line/logout/logout.d.ts +4 -0
  175. package/src/command-line/logout/logout.js +13 -0
  176. package/src/command-line/migrate/command-object.d.ts +3 -0
  177. package/src/command-line/migrate/command-object.js +171 -0
  178. package/src/command-line/migrate/migrate.d.ts +114 -0
  179. package/src/command-line/migrate/migrate.js +1110 -0
  180. package/src/command-line/new/command-object.d.ts +2 -0
  181. package/src/command-line/new/command-object.js +25 -0
  182. package/src/command-line/new/new.d.ts +3 -0
  183. package/src/command-line/new/new.js +30 -0
  184. package/src/command-line/nx-commands.d.ts +10 -0
  185. package/src/command-line/nx-commands.js +128 -0
  186. package/src/command-line/release/changelog.d.ts +34 -0
  187. package/src/command-line/release/changelog.js +997 -0
  188. package/src/command-line/release/command-object.d.ts +69 -0
  189. package/src/command-line/release/command-object.js +297 -0
  190. package/src/command-line/release/config/config.d.ts +54 -0
  191. package/src/command-line/release/config/config.js +864 -0
  192. package/src/command-line/release/config/conventional-commits.d.ts +2 -0
  193. package/src/command-line/release/config/conventional-commits.js +98 -0
  194. package/src/command-line/release/config/deep-merge-json.d.ts +1 -0
  195. package/src/command-line/release/config/deep-merge-json.js +28 -0
  196. package/src/command-line/release/config/filter-release-groups.d.ts +15 -0
  197. package/src/command-line/release/config/filter-release-groups.js +150 -0
  198. package/src/command-line/release/config/version-plans.d.ts +42 -0
  199. package/src/command-line/release/config/version-plans.js +220 -0
  200. package/src/command-line/release/index.d.ts +30 -0
  201. package/src/command-line/release/index.js +37 -0
  202. package/src/command-line/release/plan-check.d.ts +4 -0
  203. package/src/command-line/release/plan-check.js +169 -0
  204. package/src/command-line/release/plan.d.ts +4 -0
  205. package/src/command-line/release/plan.js +259 -0
  206. package/src/command-line/release/publish.d.ts +4 -0
  207. package/src/command-line/release/publish.js +164 -0
  208. package/src/command-line/release/release.d.ts +5 -0
  209. package/src/command-line/release/release.js +242 -0
  210. package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts +7 -0
  211. package/src/command-line/release/utils/batch-projects-by-generator-config.js +36 -0
  212. package/src/command-line/release/utils/exec-command.d.ts +1 -0
  213. package/src/command-line/release/utils/exec-command.js +34 -0
  214. package/src/command-line/release/utils/generate-version-plan-content.d.ts +1 -0
  215. package/src/command-line/release/utils/generate-version-plan-content.js +20 -0
  216. package/src/command-line/release/utils/get-touched-projects-for-group.d.ts +7 -0
  217. package/src/command-line/release/utils/get-touched-projects-for-group.js +78 -0
  218. package/src/command-line/release/utils/git.d.ts +67 -0
  219. package/src/command-line/release/utils/git.js +407 -0
  220. package/src/command-line/release/utils/github.d.ts +31 -0
  221. package/src/command-line/release/utils/github.js +322 -0
  222. package/src/command-line/release/utils/launch-editor.d.ts +1 -0
  223. package/src/command-line/release/utils/launch-editor.js +46 -0
  224. package/src/command-line/release/utils/markdown.d.ts +6 -0
  225. package/src/command-line/release/utils/markdown.js +28 -0
  226. package/src/command-line/release/utils/print-changes.d.ts +6 -0
  227. package/src/command-line/release/utils/print-changes.js +61 -0
  228. package/src/command-line/release/utils/print-config.d.ts +7 -0
  229. package/src/command-line/release/utils/print-config.js +36 -0
  230. package/src/command-line/release/utils/resolve-changelog-renderer.d.ts +2 -0
  231. package/src/command-line/release/utils/resolve-changelog-renderer.js +30 -0
  232. package/src/command-line/release/utils/resolve-nx-json-error-message.d.ts +1 -0
  233. package/src/command-line/release/utils/resolve-nx-json-error-message.js +52 -0
  234. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +4 -0
  235. package/src/command-line/release/utils/resolve-semver-specifier.js +57 -0
  236. package/src/command-line/release/utils/semver.d.ts +11 -0
  237. package/src/command-line/release/utils/semver.js +58 -0
  238. package/src/command-line/release/utils/shared.d.ts +53 -0
  239. package/src/command-line/release/utils/shared.js +219 -0
  240. package/src/command-line/release/version.d.ts +60 -0
  241. package/src/command-line/release/version.js +463 -0
  242. package/src/command-line/repair/command-object.d.ts +2 -0
  243. package/src/command-line/repair/command-object.js +20 -0
  244. package/src/command-line/repair/repair.d.ts +3 -0
  245. package/src/command-line/repair/repair.js +36 -0
  246. package/src/command-line/report/command-object.d.ts +2 -0
  247. package/src/command-line/report/command-object.js +11 -0
  248. package/src/command-line/report/report.d.ts +57 -0
  249. package/src/command-line/report/report.js +303 -0
  250. package/src/command-line/reset/command-object.d.ts +8 -0
  251. package/src/command-line/reset/command-object.js +26 -0
  252. package/src/command-line/reset/reset.d.ts +2 -0
  253. package/src/command-line/reset/reset.js +131 -0
  254. package/src/command-line/run/command-object.d.ts +6 -0
  255. package/src/command-line/run/command-object.js +42 -0
  256. package/src/command-line/run/executor-utils.d.ts +7 -0
  257. package/src/command-line/run/executor-utils.js +86 -0
  258. package/src/command-line/run/run-one.d.ts +7 -0
  259. package/src/command-line/run/run-one.js +116 -0
  260. package/src/command-line/run/run.d.ts +51 -0
  261. package/src/command-line/run/run.js +179 -0
  262. package/src/command-line/run-many/command-object.d.ts +2 -0
  263. package/src/command-line/run-many/command-object.js +17 -0
  264. package/src/command-line/run-many/run-many.d.ts +10 -0
  265. package/src/command-line/run-many/run-many.js +92 -0
  266. package/src/command-line/show/command-object.d.ts +26 -0
  267. package/src/command-line/show/command-object.js +115 -0
  268. package/src/command-line/show/project.d.ts +2 -0
  269. package/src/command-line/show/project.js +60 -0
  270. package/src/command-line/show/projects.d.ts +2 -0
  271. package/src/command-line/show/projects.js +77 -0
  272. package/src/command-line/sync/command-object.d.ts +6 -0
  273. package/src/command-line/sync/command-object.js +20 -0
  274. package/src/command-line/sync/sync.d.ts +6 -0
  275. package/src/command-line/sync/sync.js +114 -0
  276. package/src/command-line/watch/command-object.d.ts +2 -0
  277. package/src/command-line/watch/command-object.js +64 -0
  278. package/src/command-line/watch/watch.d.ts +23 -0
  279. package/src/command-line/watch/watch.js +173 -0
  280. package/src/command-line/yargs-utils/documentation.d.ts +2 -0
  281. package/src/command-line/yargs-utils/documentation.js +11 -0
  282. package/src/command-line/yargs-utils/shared-options.d.ts +75 -0
  283. package/src/command-line/yargs-utils/shared-options.js +253 -0
  284. package/src/commands-runner/command-graph.d.ts +13 -0
  285. package/src/commands-runner/command-graph.js +2 -0
  286. package/src/commands-runner/create-command-graph.d.ts +4 -0
  287. package/src/commands-runner/create-command-graph.js +67 -0
  288. package/src/commands-runner/get-command-projects.d.ts +3 -0
  289. package/src/commands-runner/get-command-projects.js +18 -0
  290. package/src/config/calculate-default-project-name.d.ts +4 -0
  291. package/src/config/calculate-default-project-name.js +41 -0
  292. package/src/config/configuration.d.ts +8 -0
  293. package/src/config/configuration.js +17 -0
  294. package/src/config/misc-interfaces.d.ts +212 -0
  295. package/src/config/misc-interfaces.js +2 -0
  296. package/src/config/nx-json.d.ts +479 -0
  297. package/src/config/nx-json.js +39 -0
  298. package/src/config/project-graph.d.ts +137 -0
  299. package/src/config/project-graph.js +37 -0
  300. package/src/config/schema-utils.d.ts +15 -0
  301. package/src/config/schema-utils.js +58 -0
  302. package/src/config/task-graph.d.ts +104 -0
  303. package/src/config/task-graph.js +2 -0
  304. package/src/config/to-project-name.d.ts +5 -0
  305. package/src/config/to-project-name.js +12 -0
  306. package/src/config/workspace-json-project-json.d.ts +225 -0
  307. package/src/config/workspace-json-project-json.js +2 -0
  308. package/src/core/graph/environment.js +1 -0
  309. package/src/core/graph/favicon.ico +0 -0
  310. package/src/core/graph/index.html +30 -0
  311. package/src/core/graph/main.js +1 -0
  312. package/src/core/graph/runtime.js +1 -0
  313. package/src/core/graph/styles.css +3 -0
  314. package/src/core/graph/styles.js +1 -0
  315. package/src/daemon/cache.d.ts +9 -0
  316. package/src/daemon/cache.js +68 -0
  317. package/src/daemon/client/client.d.ts +72 -0
  318. package/src/daemon/client/client.js +505 -0
  319. package/src/daemon/client/daemon-socket-messenger.d.ts +12 -0
  320. package/src/daemon/client/daemon-socket-messenger.js +26 -0
  321. package/src/daemon/client/exec-is-server-available.d.ts +1 -0
  322. package/src/daemon/client/exec-is-server-available.js +11 -0
  323. package/src/daemon/client/generate-help-output.d.ts +1 -0
  324. package/src/daemon/client/generate-help-output.js +26 -0
  325. package/src/daemon/is-on-daemon.d.ts +1 -0
  326. package/src/daemon/is-on-daemon.js +6 -0
  327. package/src/daemon/message-types/flush-sync-generator-changes-to-disk.d.ts +6 -0
  328. package/src/daemon/message-types/flush-sync-generator-changes-to-disk.js +11 -0
  329. package/src/daemon/message-types/force-shutdown.d.ts +5 -0
  330. package/src/daemon/message-types/force-shutdown.js +11 -0
  331. package/src/daemon/message-types/get-context-file-data.d.ts +5 -0
  332. package/src/daemon/message-types/get-context-file-data.js +11 -0
  333. package/src/daemon/message-types/get-files-in-directory.d.ts +6 -0
  334. package/src/daemon/message-types/get-files-in-directory.js +11 -0
  335. package/src/daemon/message-types/get-nx-workspace-files.d.ts +6 -0
  336. package/src/daemon/message-types/get-nx-workspace-files.js +11 -0
  337. package/src/daemon/message-types/get-registered-sync-generators.d.ts +5 -0
  338. package/src/daemon/message-types/get-registered-sync-generators.js +11 -0
  339. package/src/daemon/message-types/get-sync-generator-changes.d.ts +6 -0
  340. package/src/daemon/message-types/get-sync-generator-changes.js +11 -0
  341. package/src/daemon/message-types/glob.d.ts +7 -0
  342. package/src/daemon/message-types/glob.js +11 -0
  343. package/src/daemon/message-types/hash-glob.d.ts +7 -0
  344. package/src/daemon/message-types/hash-glob.js +11 -0
  345. package/src/daemon/message-types/task-history.d.ts +19 -0
  346. package/src/daemon/message-types/task-history.js +27 -0
  347. package/src/daemon/message-types/update-workspace-context.d.ts +8 -0
  348. package/src/daemon/message-types/update-workspace-context.js +11 -0
  349. package/src/daemon/server/file-watching/changed-projects.d.ts +10 -0
  350. package/src/daemon/server/file-watching/changed-projects.js +44 -0
  351. package/src/daemon/server/file-watching/file-watcher-sockets.d.ts +12 -0
  352. package/src/daemon/server/file-watching/file-watcher-sockets.js +66 -0
  353. package/src/daemon/server/handle-context-file-data.d.ts +2 -0
  354. package/src/daemon/server/handle-context-file-data.js +12 -0
  355. package/src/daemon/server/handle-flush-sync-generator-changes-to-disk.d.ts +2 -0
  356. package/src/daemon/server/handle-flush-sync-generator-changes-to-disk.js +11 -0
  357. package/src/daemon/server/handle-force-shutdown.d.ts +5 -0
  358. package/src/daemon/server/handle-force-shutdown.js +18 -0
  359. package/src/daemon/server/handle-get-files-in-directory.d.ts +2 -0
  360. package/src/daemon/server/handle-get-files-in-directory.js +12 -0
  361. package/src/daemon/server/handle-get-registered-sync-generators.d.ts +2 -0
  362. package/src/daemon/server/handle-get-registered-sync-generators.js +11 -0
  363. package/src/daemon/server/handle-get-sync-generator-changes.d.ts +2 -0
  364. package/src/daemon/server/handle-get-sync-generator-changes.js +19 -0
  365. package/src/daemon/server/handle-glob.d.ts +2 -0
  366. package/src/daemon/server/handle-glob.js +12 -0
  367. package/src/daemon/server/handle-hash-glob.d.ts +2 -0
  368. package/src/daemon/server/handle-hash-glob.js +12 -0
  369. package/src/daemon/server/handle-hash-tasks.d.ts +10 -0
  370. package/src/daemon/server/handle-hash-tasks.js +35 -0
  371. package/src/daemon/server/handle-nx-workspace-files.d.ts +2 -0
  372. package/src/daemon/server/handle-nx-workspace-files.js +12 -0
  373. package/src/daemon/server/handle-outputs-tracking.d.ts +15 -0
  374. package/src/daemon/server/handle-outputs-tracking.js +35 -0
  375. package/src/daemon/server/handle-process-in-background.d.ts +6 -0
  376. package/src/daemon/server/handle-process-in-background.js +32 -0
  377. package/src/daemon/server/handle-request-project-graph.d.ts +2 -0
  378. package/src/daemon/server/handle-request-project-graph.js +36 -0
  379. package/src/daemon/server/handle-request-shutdown.d.ts +5 -0
  380. package/src/daemon/server/handle-request-shutdown.js +27 -0
  381. package/src/daemon/server/handle-task-history.d.ts +13 -0
  382. package/src/daemon/server/handle-task-history.js +30 -0
  383. package/src/daemon/server/handle-update-workspace-context.d.ts +2 -0
  384. package/src/daemon/server/handle-update-workspace-context.js +11 -0
  385. package/src/daemon/server/logger.d.ts +18 -0
  386. package/src/daemon/server/logger.js +37 -0
  387. package/src/daemon/server/outputs-tracking.d.ts +8 -0
  388. package/src/daemon/server/outputs-tracking.js +93 -0
  389. package/src/daemon/server/plugins.d.ts +3 -0
  390. package/src/daemon/server/plugins.js +32 -0
  391. package/src/daemon/server/project-graph-incremental-recomputation.d.ts +24 -0
  392. package/src/daemon/server/project-graph-incremental-recomputation.js +300 -0
  393. package/src/daemon/server/server.d.ts +9 -0
  394. package/src/daemon/server/server.js +380 -0
  395. package/src/daemon/server/shutdown-utils.d.ts +17 -0
  396. package/src/daemon/server/shutdown-utils.js +89 -0
  397. package/src/daemon/server/start.d.ts +1 -0
  398. package/src/daemon/server/start.js +17 -0
  399. package/src/daemon/server/sync-generators.d.ts +13 -0
  400. package/src/daemon/server/sync-generators.js +357 -0
  401. package/src/daemon/server/watcher.d.ts +11 -0
  402. package/src/daemon/server/watcher.js +103 -0
  403. package/src/daemon/socket-utils.d.ts +12 -0
  404. package/src/daemon/socket-utils.js +55 -0
  405. package/src/daemon/tmp-dir.d.ts +12 -0
  406. package/src/daemon/tmp-dir.js +70 -0
  407. package/src/devkit-exports.d.ts +136 -0
  408. package/src/devkit-exports.js +142 -0
  409. package/src/devkit-internals.d.ts +26 -0
  410. package/src/devkit-internals.js +52 -0
  411. package/src/devkit-testing-exports.d.ts +2 -0
  412. package/src/devkit-testing-exports.js +8 -0
  413. package/src/executors/noop/noop.impl.d.ts +3 -0
  414. package/src/executors/noop/noop.impl.js +6 -0
  415. package/src/executors/noop/schema.json +10 -0
  416. package/src/executors/run-commands/run-commands.impl.d.ts +57 -0
  417. package/src/executors/run-commands/run-commands.impl.js +480 -0
  418. package/src/executors/run-commands/schema.json +184 -0
  419. package/src/executors/run-script/run-script.impl.d.ts +8 -0
  420. package/src/executors/run-script/run-script.impl.js +57 -0
  421. package/src/executors/run-script/schema.json +28 -0
  422. package/src/executors/utils/convert-nx-executor.d.ts +10 -0
  423. package/src/executors/utils/convert-nx-executor.js +85 -0
  424. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts +14 -0
  425. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +58 -0
  426. package/src/generators/testing-utils/create-tree-with-empty-workspace.d.ts +11 -0
  427. package/src/generators/testing-utils/create-tree-with-empty-workspace.js +52 -0
  428. package/src/generators/testing-utils/create-tree.d.ts +5 -0
  429. package/src/generators/testing-utils/create-tree.js +10 -0
  430. package/src/generators/tree.d.ts +125 -0
  431. package/src/generators/tree.js +309 -0
  432. package/src/generators/utils/glob.d.ts +22 -0
  433. package/src/generators/utils/glob.js +51 -0
  434. package/src/generators/utils/json.d.ts +28 -0
  435. package/src/generators/utils/json.js +48 -0
  436. package/src/generators/utils/nx-json.d.ts +11 -0
  437. package/src/generators/utils/nx-json.js +58 -0
  438. package/src/generators/utils/project-configuration.d.ts +42 -0
  439. package/src/generators/utils/project-configuration.js +278 -0
  440. package/src/hasher/create-task-hasher.d.ts +4 -0
  441. package/src/hasher/create-task-hasher.js +15 -0
  442. package/src/hasher/file-hasher.d.ts +2 -0
  443. package/src/hasher/file-hasher.js +18 -0
  444. package/src/hasher/hash-task.d.ts +8 -0
  445. package/src/hasher/hash-task.js +85 -0
  446. package/src/hasher/native-task-hasher-impl.d.ts +18 -0
  447. package/src/hasher/native-task-hasher-impl.js +37 -0
  448. package/src/hasher/node-task-hasher-impl.d.ts +48 -0
  449. package/src/hasher/node-task-hasher-impl.js +449 -0
  450. package/src/hasher/task-hasher.d.ts +128 -0
  451. package/src/hasher/task-hasher.js +266 -0
  452. package/src/index.d.ts +1 -0
  453. package/src/index.js +5 -0
  454. package/src/migrations/update-15-0-0/migrate-to-inputs.d.ts +2 -0
  455. package/src/migrations/update-15-0-0/migrate-to-inputs.js +102 -0
  456. package/src/migrations/update-15-0-0/prefix-outputs.d.ts +2 -0
  457. package/src/migrations/update-15-0-0/prefix-outputs.js +49 -0
  458. package/src/migrations/update-16-0-0/remove-nrwl-cli.d.ts +2 -0
  459. package/src/migrations/update-16-0-0/remove-nrwl-cli.js +16 -0
  460. package/src/migrations/update-16-0-0/update-depends-on-to-tokens.d.ts +2 -0
  461. package/src/migrations/update-16-0-0/update-depends-on-to-tokens.js +97 -0
  462. package/src/migrations/update-16-0-0/update-nx-cloud-runner.d.ts +2 -0
  463. package/src/migrations/update-16-0-0/update-nx-cloud-runner.js +29 -0
  464. package/src/migrations/update-16-2-0/remove-run-commands-output-path.d.ts +2 -0
  465. package/src/migrations/update-16-2-0/remove-run-commands-output-path.js +45 -0
  466. package/src/migrations/update-16-8-0/escape-dollar-sign-env-variables.d.ts +12 -0
  467. package/src/migrations/update-16-8-0/escape-dollar-sign-env-variables.js +67 -0
  468. package/src/migrations/update-16-9-0/remove-project-name-and-root-format.d.ts +2 -0
  469. package/src/migrations/update-16-9-0/remove-project-name-and-root-format.js +21 -0
  470. package/src/migrations/update-17-0-0/move-cache-directory.d.ts +2 -0
  471. package/src/migrations/update-17-0-0/move-cache-directory.js +35 -0
  472. package/src/migrations/update-17-0-0/rm-default-collection-npm-scope.d.ts +2 -0
  473. package/src/migrations/update-17-0-0/rm-default-collection-npm-scope.js +72 -0
  474. package/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.d.ts +2 -0
  475. package/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.js +122 -0
  476. package/src/migrations/update-17-2-0/move-default-base.d.ts +5 -0
  477. package/src/migrations/update-17-2-0/move-default-base.js +21 -0
  478. package/src/migrations/update-17-3-0/nx-release-path.d.ts +3 -0
  479. package/src/migrations/update-17-3-0/nx-release-path.js +47 -0
  480. package/src/migrations/update-17-3-0/update-nxw.d.ts +2 -0
  481. package/src/migrations/update-17-3-0/update-nxw.js +7 -0
  482. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.d.ts +2 -0
  483. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.js +11 -0
  484. package/src/migrations/update-19-2-0/move-workspace-data-directory.d.ts +4 -0
  485. package/src/migrations/update-19-2-0/move-workspace-data-directory.js +33 -0
  486. package/src/migrations/update-19-2-4/set-project-name.d.ts +2 -0
  487. package/src/migrations/update-19-2-4/set-project-name.js +34 -0
  488. package/src/native/assert-supported-platform.d.ts +1 -0
  489. package/src/native/assert-supported-platform.js +38 -0
  490. package/src/native/browser.js +1 -0
  491. package/src/native/index.d.ts +282 -0
  492. package/src/native/index.js +94 -0
  493. package/src/native/native-bindings.js +405 -0
  494. package/src/native/native-file-cache-location.d.ts +1 -0
  495. package/src/native/native-file-cache-location.js +22 -0
  496. package/src/native/nx.openharmony-arm64.node +0 -0
  497. package/src/native/nx.wasi-browser.js +114 -0
  498. package/src/native/nx.wasi.cjs +145 -0
  499. package/src/native/nx.wasm32-wasi.wasm +0 -0
  500. package/src/native/transform-objects.d.ts +3 -0
  501. package/src/native/transform-objects.js +51 -0
  502. package/src/native/wasi-worker-browser.mjs +32 -0
  503. package/src/native/wasi-worker.mjs +63 -0
  504. package/src/nx-cloud/debug-logger.d.ts +1 -0
  505. package/src/nx-cloud/debug-logger.js +8 -0
  506. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +14 -0
  507. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +159 -0
  508. package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +41 -0
  509. package/src/nx-cloud/models/onboarding-status.d.ts +1 -0
  510. package/src/nx-cloud/models/onboarding-status.js +2 -0
  511. package/src/nx-cloud/nx-cloud-tasks-runner-shell.d.ts +16 -0
  512. package/src/nx-cloud/nx-cloud-tasks-runner-shell.js +41 -0
  513. package/src/nx-cloud/resolution-helpers.d.ts +1 -0
  514. package/src/nx-cloud/resolution-helpers.js +19 -0
  515. package/src/nx-cloud/update-manager.d.ts +19 -0
  516. package/src/nx-cloud/update-manager.js +240 -0
  517. package/src/nx-cloud/utilities/axios.d.ts +2 -0
  518. package/src/nx-cloud/utilities/axios.js +24 -0
  519. package/src/nx-cloud/utilities/client.d.ts +10 -0
  520. package/src/nx-cloud/utilities/client.js +35 -0
  521. package/src/nx-cloud/utilities/environment.d.ts +3 -0
  522. package/src/nx-cloud/utilities/environment.js +47 -0
  523. package/src/nx-cloud/utilities/get-cloud-options.d.ts +5 -0
  524. package/src/nx-cloud/utilities/get-cloud-options.js +23 -0
  525. package/src/nx-cloud/utilities/is-workspace-claimed.d.ts +1 -0
  526. package/src/nx-cloud/utilities/is-workspace-claimed.js +25 -0
  527. package/src/nx-cloud/utilities/onboarding.d.ts +5 -0
  528. package/src/nx-cloud/utilities/onboarding.js +28 -0
  529. package/src/nx-cloud/utilities/url-shorten.d.ts +10 -0
  530. package/src/nx-cloud/utilities/url-shorten.js +156 -0
  531. package/src/plugins/js/hasher/hasher.d.ts +5 -0
  532. package/src/plugins/js/hasher/hasher.js +51 -0
  533. package/src/plugins/js/index.d.ts +4 -0
  534. package/src/plugins/js/index.js +106 -0
  535. package/src/plugins/js/lock-file/lock-file.d.ts +34 -0
  536. package/src/plugins/js/lock-file/lock-file.js +211 -0
  537. package/src/plugins/js/lock-file/npm-parser.d.ts +7 -0
  538. package/src/plugins/js/lock-file/npm-parser.js +475 -0
  539. package/src/plugins/js/lock-file/pnpm-parser.d.ts +7 -0
  540. package/src/plugins/js/lock-file/pnpm-parser.js +466 -0
  541. package/src/plugins/js/lock-file/project-graph-pruning.d.ts +7 -0
  542. package/src/plugins/js/lock-file/project-graph-pruning.js +154 -0
  543. package/src/plugins/js/lock-file/utils/package-json.d.ts +10 -0
  544. package/src/plugins/js/lock-file/utils/package-json.js +33 -0
  545. package/src/plugins/js/lock-file/utils/pnpm-normalizer.d.ts +20 -0
  546. package/src/plugins/js/lock-file/utils/pnpm-normalizer.js +854 -0
  547. package/src/plugins/js/lock-file/yarn-parser.d.ts +7 -0
  548. package/src/plugins/js/lock-file/yarn-parser.js +436 -0
  549. package/src/plugins/js/package-json/create-package-json.d.ts +29 -0
  550. package/src/plugins/js/package-json/create-package-json.js +247 -0
  551. package/src/plugins/js/project-graph/affected/lock-file-changes.d.ts +4 -0
  552. package/src/plugins/js/project-graph/affected/lock-file-changes.js +28 -0
  553. package/src/plugins/js/project-graph/affected/npm-packages.d.ts +4 -0
  554. package/src/plugins/js/project-graph/affected/npm-packages.js +68 -0
  555. package/src/plugins/js/project-graph/affected/touched-projects.d.ts +2 -0
  556. package/src/plugins/js/project-graph/affected/touched-projects.js +18 -0
  557. package/src/plugins/js/project-graph/affected/tsconfig-json-changes.d.ts +4 -0
  558. package/src/plugins/js/project-graph/affected/tsconfig-json-changes.js +63 -0
  559. package/src/plugins/js/project-graph/build-dependencies/build-dependencies.d.ts +6 -0
  560. package/src/plugins/js/project-graph/build-dependencies/build-dependencies.js +45 -0
  561. package/src/plugins/js/project-graph/build-dependencies/explicit-package-json-dependencies.d.ts +4 -0
  562. package/src/plugins/js/project-graph/build-dependencies/explicit-package-json-dependencies.js +94 -0
  563. package/src/plugins/js/project-graph/build-dependencies/explicit-project-dependencies.d.ts +4 -0
  564. package/src/plugins/js/project-graph/build-dependencies/explicit-project-dependencies.js +88 -0
  565. package/src/plugins/js/project-graph/build-dependencies/strip-source-code.d.ts +7 -0
  566. package/src/plugins/js/project-graph/build-dependencies/strip-source-code.js +155 -0
  567. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts +59 -0
  568. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +296 -0
  569. package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.d.ts +16 -0
  570. package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.js +120 -0
  571. package/src/plugins/js/project-graph/build-nodes/build-npm-package-nodes.d.ts +2 -0
  572. package/src/plugins/js/project-graph/build-nodes/build-npm-package-nodes.js +31 -0
  573. package/src/plugins/js/utils/config.d.ts +2 -0
  574. package/src/plugins/js/utils/config.js +68 -0
  575. package/src/plugins/js/utils/register.d.ts +152 -0
  576. package/src/plugins/js/utils/register.js +343 -0
  577. package/src/plugins/js/utils/resolve-relative-to-dir.d.ts +5 -0
  578. package/src/plugins/js/utils/resolve-relative-to-dir.js +17 -0
  579. package/src/plugins/js/utils/typescript.d.ts +14 -0
  580. package/src/plugins/js/utils/typescript.js +97 -0
  581. package/src/plugins/js/versions.d.ts +1 -0
  582. package/src/plugins/js/versions.js +4 -0
  583. package/src/plugins/package-json/create-nodes.d.ts +20 -0
  584. package/src/plugins/package-json/create-nodes.js +187 -0
  585. package/src/plugins/package-json/index.d.ts +2 -0
  586. package/src/plugins/package-json/index.js +6 -0
  587. package/src/plugins/project-json/build-nodes/project-json.d.ts +6 -0
  588. package/src/plugins/project-json/build-nodes/project-json.js +45 -0
  589. package/src/project-graph/affected/affected-project-graph-models.d.ts +11 -0
  590. package/src/project-graph/affected/affected-project-graph-models.js +2 -0
  591. package/src/project-graph/affected/affected-project-graph.d.ts +4 -0
  592. package/src/project-graph/affected/affected-project-graph.js +82 -0
  593. package/src/project-graph/affected/locators/project-glob-changes.d.ts +2 -0
  594. package/src/project-graph/affected/locators/project-glob-changes.js +31 -0
  595. package/src/project-graph/affected/locators/workspace-json-changes.d.ts +4 -0
  596. package/src/project-graph/affected/locators/workspace-json-changes.js +47 -0
  597. package/src/project-graph/affected/locators/workspace-projects.d.ts +3 -0
  598. package/src/project-graph/affected/locators/workspace-projects.js +74 -0
  599. package/src/project-graph/build-project-graph.d.ts +22 -0
  600. package/src/project-graph/build-project-graph.js +292 -0
  601. package/src/project-graph/error-types.d.ts +135 -0
  602. package/src/project-graph/error-types.js +305 -0
  603. package/src/project-graph/file-map-utils.d.ts +15 -0
  604. package/src/project-graph/file-map-utils.js +55 -0
  605. package/src/project-graph/file-utils.d.ts +30 -0
  606. package/src/project-graph/file-utils.js +179 -0
  607. package/src/project-graph/nx-deps-cache.d.ts +48 -0
  608. package/src/project-graph/nx-deps-cache.js +227 -0
  609. package/src/project-graph/operators.d.ts +12 -0
  610. package/src/project-graph/operators.js +114 -0
  611. package/src/project-graph/plugins/index.d.ts +3 -0
  612. package/src/project-graph/plugins/index.js +10 -0
  613. package/src/project-graph/plugins/internal-api.d.ts +29 -0
  614. package/src/project-graph/plugins/internal-api.js +134 -0
  615. package/src/project-graph/plugins/isolation/index.d.ts +3 -0
  616. package/src/project-graph/plugins/isolation/index.js +14 -0
  617. package/src/project-graph/plugins/isolation/messaging.d.ts +125 -0
  618. package/src/project-graph/plugins/isolation/messaging.js +46 -0
  619. package/src/project-graph/plugins/isolation/plugin-pool.d.ts +3 -0
  620. package/src/project-graph/plugins/isolation/plugin-pool.js +301 -0
  621. package/src/project-graph/plugins/isolation/plugin-worker.d.ts +1 -0
  622. package/src/project-graph/plugins/isolation/plugin-worker.js +158 -0
  623. package/src/project-graph/plugins/loader.d.ts +24 -0
  624. package/src/project-graph/plugins/loader.js +220 -0
  625. package/src/project-graph/plugins/public-api.d.ts +130 -0
  626. package/src/project-graph/plugins/public-api.js +4 -0
  627. package/src/project-graph/plugins/utils.d.ts +8 -0
  628. package/src/project-graph/plugins/utils.js +63 -0
  629. package/src/project-graph/project-graph-builder.d.ts +133 -0
  630. package/src/project-graph/project-graph-builder.js +379 -0
  631. package/src/project-graph/project-graph.d.ts +51 -0
  632. package/src/project-graph/project-graph.js +261 -0
  633. package/src/project-graph/utils/build-all-workspace-files.d.ts +2 -0
  634. package/src/project-graph/utils/build-all-workspace-files.js +14 -0
  635. package/src/project-graph/utils/find-project-for-path.d.ts +20 -0
  636. package/src/project-graph/utils/find-project-for-path.js +55 -0
  637. package/src/project-graph/utils/implicit-project-dependencies.d.ts +3 -0
  638. package/src/project-graph/utils/implicit-project-dependencies.js +18 -0
  639. package/src/project-graph/utils/normalize-project-nodes.d.ts +6 -0
  640. package/src/project-graph/utils/normalize-project-nodes.js +88 -0
  641. package/src/project-graph/utils/project-configuration-utils.d.ts +74 -0
  642. package/src/project-graph/utils/project-configuration-utils.js +781 -0
  643. package/src/project-graph/utils/retrieve-workspace-files.d.ts +30 -0
  644. package/src/project-graph/utils/retrieve-workspace-files.js +88 -0
  645. package/src/tasks-runner/batch/batch-messages.d.ts +33 -0
  646. package/src/tasks-runner/batch/batch-messages.js +9 -0
  647. package/src/tasks-runner/batch/run-batch.d.ts +1 -0
  648. package/src/tasks-runner/batch/run-batch.js +77 -0
  649. package/src/tasks-runner/cache.d.ts +64 -0
  650. package/src/tasks-runner/cache.js +399 -0
  651. package/src/tasks-runner/create-task-graph.d.ts +28 -0
  652. package/src/tasks-runner/create-task-graph.js +242 -0
  653. package/src/tasks-runner/default-tasks-runner.d.ts +26 -0
  654. package/src/tasks-runner/default-tasks-runner.js +62 -0
  655. package/src/tasks-runner/fork.d.ts +1 -0
  656. package/src/tasks-runner/fork.js +30 -0
  657. package/src/tasks-runner/forked-process-task-runner.d.ts +42 -0
  658. package/src/tasks-runner/forked-process-task-runner.js +405 -0
  659. package/src/tasks-runner/init-tasks-runner.d.ts +13 -0
  660. package/src/tasks-runner/init-tasks-runner.js +61 -0
  661. package/src/tasks-runner/life-cycle.d.ts +43 -0
  662. package/src/tasks-runner/life-cycle.js +71 -0
  663. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts +25 -0
  664. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +353 -0
  665. package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.d.ts +24 -0
  666. package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js +228 -0
  667. package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.d.ts +5 -0
  668. package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.js +16 -0
  669. package/src/tasks-runner/life-cycles/formatting-utils.d.ts +3 -0
  670. package/src/tasks-runner/life-cycles/formatting-utils.js +55 -0
  671. package/src/tasks-runner/life-cycles/invoke-runner-terminal-output-life-cycle.d.ts +13 -0
  672. package/src/tasks-runner/life-cycles/invoke-runner-terminal-output-life-cycle.js +67 -0
  673. package/src/tasks-runner/life-cycles/pretty-time.d.ts +4 -0
  674. package/src/tasks-runner/life-cycles/pretty-time.js +73 -0
  675. package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.d.ts +29 -0
  676. package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +106 -0
  677. package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.d.ts +28 -0
  678. package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +97 -0
  679. package/src/tasks-runner/life-cycles/store-run-information-life-cycle.d.ts +17 -0
  680. package/src/tasks-runner/life-cycles/store-run-information-life-cycle.js +87 -0
  681. package/src/tasks-runner/life-cycles/task-history-life-cycle-old.d.ts +9 -0
  682. package/src/tasks-runner/life-cycles/task-history-life-cycle-old.js +54 -0
  683. package/src/tasks-runner/life-cycles/task-history-life-cycle.d.ts +10 -0
  684. package/src/tasks-runner/life-cycles/task-history-life-cycle.js +55 -0
  685. package/src/tasks-runner/life-cycles/task-profiling-life-cycle.d.ts +14 -0
  686. package/src/tasks-runner/life-cycles/task-profiling-life-cycle.js +73 -0
  687. package/src/tasks-runner/life-cycles/task-results-life-cycle.d.ts +6 -0
  688. package/src/tasks-runner/life-cycles/task-results-life-cycle.js +17 -0
  689. package/src/tasks-runner/life-cycles/task-timings-life-cycle.d.ts +8 -0
  690. package/src/tasks-runner/life-cycles/task-timings-life-cycle.js +39 -0
  691. package/src/tasks-runner/life-cycles/view-logs-utils.d.ts +1 -0
  692. package/src/tasks-runner/life-cycles/view-logs-utils.js +15 -0
  693. package/src/tasks-runner/pseudo-ipc.d.ts +48 -0
  694. package/src/tasks-runner/pseudo-ipc.js +140 -0
  695. package/src/tasks-runner/pseudo-terminal.d.ts +45 -0
  696. package/src/tasks-runner/pseudo-terminal.js +168 -0
  697. package/src/tasks-runner/remove-old-cache-records.d.ts +1 -0
  698. package/src/tasks-runner/remove-old-cache-records.js +60 -0
  699. package/src/tasks-runner/run-command.d.ts +38 -0
  700. package/src/tasks-runner/run-command.js +590 -0
  701. package/src/tasks-runner/task-env.d.ts +20 -0
  702. package/src/tasks-runner/task-env.js +171 -0
  703. package/src/tasks-runner/task-graph-utils.d.ts +10 -0
  704. package/src/tasks-runner/task-graph-utils.js +88 -0
  705. package/src/tasks-runner/task-orchestrator.d.ts +53 -0
  706. package/src/tasks-runner/task-orchestrator.js +458 -0
  707. package/src/tasks-runner/tasks-runner.d.ts +23 -0
  708. package/src/tasks-runner/tasks-runner.js +2 -0
  709. package/src/tasks-runner/tasks-schedule.d.ts +41 -0
  710. package/src/tasks-runner/tasks-schedule.js +192 -0
  711. package/src/tasks-runner/utils.d.ts +57 -0
  712. package/src/tasks-runner/utils.js +392 -0
  713. package/src/utils/ab-testing.d.ts +51 -0
  714. package/src/utils/ab-testing.js +112 -0
  715. package/src/utils/all-file-data.d.ts +2 -0
  716. package/src/utils/all-file-data.js +8 -0
  717. package/src/utils/app-root.d.ts +8 -0
  718. package/src/utils/app-root.js +12 -0
  719. package/src/utils/assert-workspace-validity.d.ts +3 -0
  720. package/src/utils/assert-workspace-validity.js +84 -0
  721. package/src/utils/async-iterator.d.ts +2 -0
  722. package/src/utils/async-iterator.js +18 -0
  723. package/src/utils/cache-directory.d.ts +7 -0
  724. package/src/utils/cache-directory.js +71 -0
  725. package/src/utils/child-process.d.ts +18 -0
  726. package/src/utils/child-process.js +119 -0
  727. package/src/utils/chunkify.d.ts +11 -0
  728. package/src/utils/chunkify.js +44 -0
  729. package/src/utils/code-frames.d.ts +14 -0
  730. package/src/utils/code-frames.js +118 -0
  731. package/src/utils/collapse-expanded-outputs.d.ts +1 -0
  732. package/src/utils/collapse-expanded-outputs.js +40 -0
  733. package/src/utils/command-line-utils.d.ts +54 -0
  734. package/src/utils/command-line-utils.js +267 -0
  735. package/src/utils/consume-messages-from-socket.d.ts +1 -0
  736. package/src/utils/consume-messages-from-socket.js +21 -0
  737. package/src/utils/db-connection.d.ts +5 -0
  738. package/src/utils/db-connection.js +22 -0
  739. package/src/utils/default-base.d.ts +1 -0
  740. package/src/utils/default-base.js +17 -0
  741. package/src/utils/dotenv.d.ts +7 -0
  742. package/src/utils/dotenv.js +21 -0
  743. package/src/utils/exit-codes.d.ts +5 -0
  744. package/src/utils/exit-codes.js +19 -0
  745. package/src/utils/fileutils.d.ts +75 -0
  746. package/src/utils/fileutils.js +151 -0
  747. package/src/utils/find-matching-projects.d.ts +10 -0
  748. package/src/utils/find-matching-projects.js +210 -0
  749. package/src/utils/find-workspace-root.d.ts +11 -0
  750. package/src/utils/find-workspace-root.js +33 -0
  751. package/src/utils/get-package-name-from-import-path.d.ts +1 -0
  752. package/src/utils/get-package-name-from-import-path.js +17 -0
  753. package/src/utils/git-utils.d.ts +41 -0
  754. package/src/utils/git-utils.index-filter.d.ts +0 -0
  755. package/src/utils/git-utils.index-filter.js +21 -0
  756. package/src/utils/git-utils.js +259 -0
  757. package/src/utils/git-utils.tree-filter.d.ts +11 -0
  758. package/src/utils/git-utils.tree-filter.js +45 -0
  759. package/src/utils/globs.d.ts +3 -0
  760. package/src/utils/globs.js +18 -0
  761. package/src/utils/handle-errors.d.ts +1 -0
  762. package/src/utils/handle-errors.js +71 -0
  763. package/src/utils/ignore.d.ts +8 -0
  764. package/src/utils/ignore.js +75 -0
  765. package/src/utils/installation-directory.d.ts +2 -0
  766. package/src/utils/installation-directory.js +12 -0
  767. package/src/utils/is-ci.d.ts +1 -0
  768. package/src/utils/is-ci.js +20 -0
  769. package/src/utils/json-diff.d.ts +18 -0
  770. package/src/utils/json-diff.js +112 -0
  771. package/src/utils/json.d.ts +44 -0
  772. package/src/utils/json.js +62 -0
  773. package/src/utils/legacy-task-history.d.ts +8 -0
  774. package/src/utils/legacy-task-history.js +87 -0
  775. package/src/utils/logger.d.ts +12 -0
  776. package/src/utils/logger.js +52 -0
  777. package/src/utils/nx-cloud-utils.d.ts +3 -0
  778. package/src/utils/nx-cloud-utils.js +18 -0
  779. package/src/utils/nx-plugin.deprecated.d.ts +31 -0
  780. package/src/utils/nx-plugin.deprecated.js +20 -0
  781. package/src/utils/object-sort.d.ts +1 -0
  782. package/src/utils/object-sort.js +9 -0
  783. package/src/utils/output.d.ts +71 -0
  784. package/src/utils/output.js +240 -0
  785. package/src/utils/package-json.d.ts +103 -0
  786. package/src/utils/package-json.js +173 -0
  787. package/src/utils/package-manager.d.ts +100 -0
  788. package/src/utils/package-manager.js +404 -0
  789. package/src/utils/params.d.ts +137 -0
  790. package/src/utils/params.js +664 -0
  791. package/src/utils/path.d.ts +19 -0
  792. package/src/utils/path.js +37 -0
  793. package/src/utils/perf-logging.d.ts +1 -0
  794. package/src/utils/perf-logging.js +13 -0
  795. package/src/utils/plugins/core-plugins.d.ts +6 -0
  796. package/src/utils/plugins/core-plugins.js +109 -0
  797. package/src/utils/plugins/index.d.ts +4 -0
  798. package/src/utils/plugins/index.js +13 -0
  799. package/src/utils/plugins/installed-plugins.d.ts +5 -0
  800. package/src/utils/plugins/installed-plugins.js +76 -0
  801. package/src/utils/plugins/local-plugins.d.ts +4 -0
  802. package/src/utils/plugins/local-plugins.js +30 -0
  803. package/src/utils/plugins/output.d.ts +6 -0
  804. package/src/utils/plugins/output.js +111 -0
  805. package/src/utils/plugins/plugin-capabilities.d.ts +14 -0
  806. package/src/utils/plugins/plugin-capabilities.js +77 -0
  807. package/src/utils/powerpack.d.ts +5 -0
  808. package/src/utils/powerpack.js +33 -0
  809. package/src/utils/print-help.d.ts +11 -0
  810. package/src/utils/print-help.js +264 -0
  811. package/src/utils/project-graph-utils.d.ts +13 -0
  812. package/src/utils/project-graph-utils.js +73 -0
  813. package/src/utils/promised-based-queue.d.ts +6 -0
  814. package/src/utils/promised-based-queue.js +43 -0
  815. package/src/utils/serializable-error.d.ts +4 -0
  816. package/src/utils/serializable-error.js +33 -0
  817. package/src/utils/serialize-overrides-into-command-line.d.ts +3 -0
  818. package/src/utils/serialize-overrides-into-command-line.js +42 -0
  819. package/src/utils/serialize-target.d.ts +1 -0
  820. package/src/utils/serialize-target.js +6 -0
  821. package/src/utils/split-target.d.ts +3 -0
  822. package/src/utils/split-target.js +48 -0
  823. package/src/utils/strip-indents.d.ts +14 -0
  824. package/src/utils/strip-indents.js +23 -0
  825. package/src/utils/sync-generators.d.ts +64 -0
  826. package/src/utils/sync-generators.js +353 -0
  827. package/src/utils/task-history.d.ts +17 -0
  828. package/src/utils/task-history.js +51 -0
  829. package/src/utils/update-nxw.d.ts +2 -0
  830. package/src/utils/update-nxw.js +11 -0
  831. package/src/utils/versions.d.ts +1 -0
  832. package/src/utils/versions.js +4 -0
  833. package/src/utils/workspace-configuration-check.d.ts +1 -0
  834. package/src/utils/workspace-configuration-check.js +36 -0
  835. package/src/utils/workspace-context.d.ts +19 -0
  836. package/src/utils/workspace-context.js +103 -0
  837. package/src/utils/workspace-root.d.ts +6 -0
  838. package/src/utils/workspace-root.js +39 -0
  839. package/tasks-runners/default.d.ts +1 -0
  840. package/tasks-runners/default.js +5 -0
@@ -0,0 +1,997 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.releaseChangelogCLIHandler = void 0;
4
+ exports.createAPI = createAPI;
5
+ exports.shouldCreateGitHubRelease = shouldCreateGitHubRelease;
6
+ const chalk = require("chalk");
7
+ const enquirer_1 = require("enquirer");
8
+ const node_fs_1 = require("node:fs");
9
+ const semver_1 = require("semver");
10
+ const tmp_1 = require("tmp");
11
+ const nx_json_1 = require("../../config/nx-json");
12
+ const tree_1 = require("../../generators/tree");
13
+ const file_map_utils_1 = require("../../project-graph/file-map-utils");
14
+ const project_graph_1 = require("../../project-graph/project-graph");
15
+ const utils_1 = require("../../tasks-runner/utils");
16
+ const is_ci_1 = require("../../utils/is-ci");
17
+ const output_1 = require("../../utils/output");
18
+ const handle_errors_1 = require("../../utils/handle-errors");
19
+ const path_1 = require("../../utils/path");
20
+ const workspace_root_1 = require("../../utils/workspace-root");
21
+ const config_1 = require("./config/config");
22
+ const deep_merge_json_1 = require("./config/deep-merge-json");
23
+ const filter_release_groups_1 = require("./config/filter-release-groups");
24
+ const version_plans_1 = require("./config/version-plans");
25
+ const git_1 = require("./utils/git");
26
+ const github_1 = require("./utils/github");
27
+ const launch_editor_1 = require("./utils/launch-editor");
28
+ const markdown_1 = require("./utils/markdown");
29
+ const print_changes_1 = require("./utils/print-changes");
30
+ const print_config_1 = require("./utils/print-config");
31
+ const resolve_changelog_renderer_1 = require("./utils/resolve-changelog-renderer");
32
+ const resolve_nx_json_error_message_1 = require("./utils/resolve-nx-json-error-message");
33
+ const shared_1 = require("./utils/shared");
34
+ const releaseChangelogCLIHandler = (args) => (0, handle_errors_1.handleErrors)(args.verbose, () => createAPI({})(args));
35
+ exports.releaseChangelogCLIHandler = releaseChangelogCLIHandler;
36
+ function createAPI(overrideReleaseConfig) {
37
+ /**
38
+ * NOTE: This function is also exported for programmatic usage and forms part of the public API
39
+ * of Nx. We intentionally do not wrap the implementation with handleErrors because users need
40
+ * to have control over their own error handling when using the API.
41
+ */
42
+ return async function releaseChangelog(args) {
43
+ const projectGraph = await (0, project_graph_1.createProjectGraphAsync)({ exitOnError: true });
44
+ const nxJson = (0, nx_json_1.readNxJson)();
45
+ const userProvidedReleaseConfig = (0, deep_merge_json_1.deepMergeJson)(nxJson.release ?? {}, overrideReleaseConfig ?? {});
46
+ // Apply default configuration to any optional user configuration
47
+ const { error: configError, nxReleaseConfig } = await (0, config_1.createNxReleaseConfig)(projectGraph, await (0, file_map_utils_1.createProjectFileMapUsingProjectGraph)(projectGraph), userProvidedReleaseConfig);
48
+ if (configError) {
49
+ return await (0, config_1.handleNxReleaseConfigError)(configError);
50
+ }
51
+ // --print-config exits directly as it is not designed to be combined with any other programmatic operations
52
+ if (args.printConfig) {
53
+ return (0, print_config_1.printConfigAndExit)({
54
+ userProvidedReleaseConfig,
55
+ nxReleaseConfig,
56
+ isDebug: args.printConfig === 'debug',
57
+ });
58
+ }
59
+ // The nx release top level command will always override these three git args. This is how we can tell
60
+ // if the top level release command was used or if the user is using the changelog subcommand.
61
+ // If the user explicitly overrides these args, then it doesn't matter if the top level config is set,
62
+ // as all of the git options would be overridden anyway.
63
+ if ((args.gitCommit === undefined ||
64
+ args.gitTag === undefined ||
65
+ args.stageChanges === undefined) &&
66
+ userProvidedReleaseConfig.git) {
67
+ const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
68
+ 'release',
69
+ 'git',
70
+ ]);
71
+ output_1.output.error({
72
+ title: `The "release.git" property in nx.json may not be used with the "nx release changelog" subcommand or programmatic API. Instead, configure git options for subcommands directly with "release.version.git" and "release.changelog.git".`,
73
+ bodyLines: [nxJsonMessage],
74
+ });
75
+ process.exit(1);
76
+ }
77
+ const { error: filterError, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, args.projects, args.groups);
78
+ if (filterError) {
79
+ output_1.output.error(filterError);
80
+ process.exit(1);
81
+ }
82
+ const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
83
+ await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
84
+ if (args.deleteVersionPlans === undefined) {
85
+ // default to deleting version plans in this command instead of after versioning
86
+ args.deleteVersionPlans = true;
87
+ }
88
+ const changelogGenerationEnabled = !!nxReleaseConfig.changelog.workspaceChangelog ||
89
+ Object.values(nxReleaseConfig.groups).some((g) => g.changelog);
90
+ if (!changelogGenerationEnabled) {
91
+ output_1.output.warn({
92
+ title: `Changelogs are disabled. No changelog entries will be generated`,
93
+ bodyLines: [
94
+ `To explicitly enable changelog generation, configure "release.changelog.workspaceChangelog" or "release.changelog.projectChangelogs" in nx.json.`,
95
+ ],
96
+ });
97
+ return {};
98
+ }
99
+ const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, args.verbose);
100
+ const useAutomaticFromRef = nxReleaseConfig.changelog?.automaticFromRef || args.firstRelease;
101
+ /**
102
+ * For determining the versions to use within changelog files, there are a few different possibilities:
103
+ * - the user is using the nx CLI, and therefore passes a single --version argument which represents the version for any and all changelog
104
+ * files which will be generated (i.e. both the workspace changelog, and all project changelogs, depending on which of those has been enabled)
105
+ * - the user is using the nxReleaseChangelog API programmatically, and:
106
+ * - passes only a version property
107
+ * - this works in the same way as described above for the CLI
108
+ * - passes only a versionData object
109
+ * - this is a special case where the user is providing a version for each project, and therefore the version argument is not needed
110
+ * - NOTE: it is not possible to generate a workspace level changelog with only a versionData object, and this will produce an error
111
+ * - passes both a version and a versionData object
112
+ * - in this case, the version property will be used as the reference for the workspace changelog, and the versionData object will be used
113
+ * to generate project changelogs
114
+ */
115
+ const { workspaceChangelogVersion, projectsVersionData } = resolveChangelogVersions(args, releaseGroups, releaseGroupToFilteredProjects);
116
+ const to = args.to || 'HEAD';
117
+ const toSHA = await (0, git_1.getCommitHash)(to);
118
+ const headSHA = to === 'HEAD' ? toSHA : await (0, git_1.getCommitHash)('HEAD');
119
+ /**
120
+ * Protect the user against attempting to create a new commit when recreating an old release changelog,
121
+ * this seems like it would always be unintentional.
122
+ */
123
+ const autoCommitEnabled = args.gitCommit ?? nxReleaseConfig.changelog.git.commit;
124
+ if (autoCommitEnabled && headSHA !== toSHA) {
125
+ throw new Error(`You are attempting to recreate the changelog for an old release, but you have enabled auto-commit mode. Please disable auto-commit mode by updating your nx.json, or passing --git-commit=false`);
126
+ }
127
+ const commitMessage = args.gitCommitMessage || nxReleaseConfig.changelog.git.commitMessage;
128
+ const commitMessageValues = (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects, projectsVersionData, commitMessage);
129
+ // Resolve any git tags as early as possible so that we can hard error in case of any duplicates before reaching the actual git command
130
+ const gitTagValues = args.gitTag ?? nxReleaseConfig.changelog.git.tag
131
+ ? (0, shared_1.createGitTagValues)(releaseGroups, releaseGroupToFilteredProjects, projectsVersionData)
132
+ : [];
133
+ (0, shared_1.handleDuplicateGitTags)(gitTagValues);
134
+ const postGitTasks = [];
135
+ let workspaceChangelogChanges = [];
136
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
137
+ let workspaceChangelogCommits = [];
138
+ // If there are multiple release groups, we'll just skip the workspace changelog anyway.
139
+ const versionPlansEnabledForWorkspaceChangelog = releaseGroups[0].resolvedVersionPlans;
140
+ if (versionPlansEnabledForWorkspaceChangelog) {
141
+ if (releaseGroups.length === 1) {
142
+ const releaseGroup = releaseGroups[0];
143
+ if (releaseGroup.projectsRelationship === 'fixed') {
144
+ const versionPlans = releaseGroup.resolvedVersionPlans;
145
+ workspaceChangelogChanges = versionPlans
146
+ .flatMap((vp) => {
147
+ const releaseType = versionPlanSemverReleaseTypeToChangelogType(vp.groupVersionBump);
148
+ let githubReferences = [];
149
+ let author = undefined;
150
+ const parsedCommit = vp.commit
151
+ ? (0, git_1.parseGitCommit)(vp.commit, true)
152
+ : null;
153
+ if (parsedCommit) {
154
+ githubReferences = parsedCommit.references;
155
+ author = parsedCommit.author;
156
+ }
157
+ const changes = !vp.triggeredByProjects
158
+ ? {
159
+ type: releaseType.type,
160
+ scope: '',
161
+ description: vp.message,
162
+ body: '',
163
+ isBreaking: releaseType.isBreaking,
164
+ githubReferences,
165
+ author,
166
+ affectedProjects: '*',
167
+ }
168
+ : vp.triggeredByProjects.map((project) => {
169
+ return {
170
+ type: releaseType.type,
171
+ scope: project,
172
+ description: vp.message,
173
+ body: '',
174
+ isBreaking: releaseType.isBreaking,
175
+ githubReferences,
176
+ author,
177
+ affectedProjects: [project],
178
+ };
179
+ });
180
+ return changes;
181
+ })
182
+ .filter(Boolean);
183
+ }
184
+ }
185
+ }
186
+ else {
187
+ let workspaceChangelogFromRef = args.from ||
188
+ (await (0, git_1.getLatestGitTagForPattern)(nxReleaseConfig.releaseTagPattern))
189
+ ?.tag;
190
+ if (!workspaceChangelogFromRef) {
191
+ if (useAutomaticFromRef) {
192
+ workspaceChangelogFromRef = await (0, git_1.getFirstGitCommit)();
193
+ if (args.verbose) {
194
+ console.log(`Determined workspace --from ref from the first commit in the workspace: ${workspaceChangelogFromRef}`);
195
+ }
196
+ }
197
+ else {
198
+ throw new Error(`Unable to determine the previous git tag. If this is the first release of your workspace, use the --first-release option or set the "release.changelog.automaticFromRef" config property in nx.json to generate a changelog from the first commit. Otherwise, be sure to configure the "release.releaseTagPattern" property in nx.json to match the structure of your repository's git tags.`);
199
+ }
200
+ }
201
+ // Make sure that the fromRef is actually resolvable
202
+ const workspaceChangelogFromSHA = await (0, git_1.getCommitHash)(workspaceChangelogFromRef);
203
+ workspaceChangelogCommits = await getCommits(workspaceChangelogFromSHA, toSHA);
204
+ workspaceChangelogChanges = filterHiddenChanges(workspaceChangelogCommits.map((c) => {
205
+ return {
206
+ type: c.type,
207
+ scope: c.scope,
208
+ description: c.description,
209
+ body: c.body,
210
+ isBreaking: c.isBreaking,
211
+ githubReferences: c.references,
212
+ author: c.author,
213
+ shortHash: c.shortHash,
214
+ revertedHashes: c.revertedHashes,
215
+ affectedProjects: '*',
216
+ };
217
+ }), nxReleaseConfig.conventionalCommits);
218
+ }
219
+ const workspaceChangelog = await generateChangelogForWorkspace({
220
+ tree,
221
+ args,
222
+ projectGraph,
223
+ nxReleaseConfig,
224
+ workspaceChangelogVersion,
225
+ changes: workspaceChangelogChanges,
226
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
227
+ commits: filterHiddenCommits(workspaceChangelogCommits, nxReleaseConfig.conventionalCommits),
228
+ });
229
+ if (workspaceChangelog &&
230
+ shouldCreateGitHubRelease(nxReleaseConfig.changelog.workspaceChangelog, args.createRelease)) {
231
+ let hasPushed = false;
232
+ postGitTasks.push(async (latestCommit) => {
233
+ if (!hasPushed) {
234
+ output_1.output.logSingleLine(`Pushing to git remote`);
235
+ // Before we can create/update the release we need to ensure the commit exists on the remote
236
+ await (0, git_1.gitPush)({
237
+ gitRemote: args.gitRemote,
238
+ dryRun: args.dryRun,
239
+ verbose: args.verbose,
240
+ });
241
+ hasPushed = true;
242
+ }
243
+ output_1.output.logSingleLine(`Creating GitHub Release`);
244
+ await (0, github_1.createOrUpdateGithubRelease)(nxReleaseConfig.changelog.workspaceChangelog
245
+ ? nxReleaseConfig.changelog.workspaceChangelog.createRelease
246
+ : config_1.defaultCreateReleaseProvider, workspaceChangelog.releaseVersion, workspaceChangelog.contents, latestCommit, { dryRun: args.dryRun });
247
+ });
248
+ }
249
+ /**
250
+ * Compute any additional dependency bumps up front because there could be cases of circular dependencies,
251
+ * and figuring them out during the main iteration would be too late.
252
+ */
253
+ const projectToAdditionalDependencyBumps = new Map();
254
+ for (const releaseGroup of releaseGroups) {
255
+ if (releaseGroup.projectsRelationship !== 'independent') {
256
+ continue;
257
+ }
258
+ for (const project of releaseGroup.projects) {
259
+ // If the project does not have any changes, do not process its dependents
260
+ if (!projectsVersionData[project] ||
261
+ projectsVersionData[project].newVersion === null) {
262
+ continue;
263
+ }
264
+ const dependentProjects = (projectsVersionData[project].dependentProjects || [])
265
+ .map((dep) => {
266
+ return {
267
+ dependencyName: dep.source,
268
+ newVersion: projectsVersionData[dep.source].newVersion,
269
+ };
270
+ })
271
+ .filter((b) => b.newVersion !== null);
272
+ for (const dependent of dependentProjects) {
273
+ const additionalDependencyBumpsForProject = projectToAdditionalDependencyBumps.has(dependent.dependencyName)
274
+ ? projectToAdditionalDependencyBumps.get(dependent.dependencyName)
275
+ : [];
276
+ additionalDependencyBumpsForProject.push({
277
+ dependencyName: project,
278
+ newVersion: projectsVersionData[project].newVersion,
279
+ });
280
+ projectToAdditionalDependencyBumps.set(dependent.dependencyName, additionalDependencyBumpsForProject);
281
+ }
282
+ }
283
+ }
284
+ const allProjectChangelogs = {};
285
+ for (const releaseGroup of releaseGroups) {
286
+ const config = releaseGroup.changelog;
287
+ // The entire feature is disabled at the release group level, exit early
288
+ if (config === false) {
289
+ continue;
290
+ }
291
+ const projects = args.projects?.length
292
+ ? // If the user has passed a list of projects, we need to use the filtered list of projects within the release group, plus any dependents
293
+ Array.from(releaseGroupToFilteredProjects.get(releaseGroup)).flatMap((project) => {
294
+ return [
295
+ project,
296
+ ...(projectsVersionData[project]?.dependentProjects.map((dep) => dep.source) || []),
297
+ ];
298
+ })
299
+ : // Otherwise, we use the full list of projects within the release group
300
+ releaseGroup.projects;
301
+ const projectNodes = projects.map((name) => projectGraph.nodes[name]);
302
+ if (releaseGroup.projectsRelationship === 'independent') {
303
+ for (const project of projectNodes) {
304
+ let changes = null;
305
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
306
+ let commits;
307
+ if (releaseGroup.resolvedVersionPlans) {
308
+ changes = releaseGroup.resolvedVersionPlans
309
+ .map((vp) => {
310
+ const bumpForProject = vp.projectVersionBumps[project.name];
311
+ if (!bumpForProject) {
312
+ return null;
313
+ }
314
+ const releaseType = versionPlanSemverReleaseTypeToChangelogType(bumpForProject);
315
+ let githubReferences = [];
316
+ let author = undefined;
317
+ const parsedCommit = vp.commit
318
+ ? (0, git_1.parseGitCommit)(vp.commit, true)
319
+ : null;
320
+ if (parsedCommit) {
321
+ githubReferences = parsedCommit.references;
322
+ author = parsedCommit.author;
323
+ }
324
+ return {
325
+ type: releaseType.type,
326
+ scope: project.name,
327
+ description: vp.message,
328
+ body: '',
329
+ isBreaking: releaseType.isBreaking,
330
+ affectedProjects: Object.keys(vp.projectVersionBumps),
331
+ githubReferences,
332
+ author,
333
+ };
334
+ })
335
+ .filter(Boolean);
336
+ }
337
+ else {
338
+ let fromRef = args.from ||
339
+ (await (0, git_1.getLatestGitTagForPattern)(releaseGroup.releaseTagPattern, {
340
+ projectName: project.name,
341
+ releaseGroupName: releaseGroup.name,
342
+ }))?.tag;
343
+ if (!fromRef && useAutomaticFromRef) {
344
+ const firstCommit = await (0, git_1.getFirstGitCommit)();
345
+ const allCommits = await getCommits(firstCommit, toSHA);
346
+ const commitsForProject = allCommits.filter((c) => c.affectedFiles.find((f) => f.startsWith(project.data.root)));
347
+ fromRef = commitsForProject[0]?.shortHash;
348
+ if (args.verbose) {
349
+ console.log(`Determined --from ref for ${project.name} from the first commit in which it exists: ${fromRef}`);
350
+ }
351
+ commits = commitsForProject;
352
+ }
353
+ if (!fromRef && !commits) {
354
+ throw new Error(`Unable to determine the previous git tag. If this is the first release of your workspace, use the --first-release option or set the "release.changelog.automaticFromRef" config property in nx.json to generate a changelog from the first commit. Otherwise, be sure to configure the "release.releaseTagPattern" property in nx.json to match the structure of your repository's git tags.`);
355
+ }
356
+ if (!commits) {
357
+ commits = await getCommits(fromRef, toSHA);
358
+ }
359
+ const { fileMap } = await (0, file_map_utils_1.createFileMapUsingProjectGraph)(projectGraph);
360
+ const fileToProjectMap = createFileToProjectMap(fileMap.projectFileMap);
361
+ changes = filterHiddenChanges(commits.map((c) => ({
362
+ type: c.type,
363
+ scope: c.scope,
364
+ description: c.description,
365
+ body: c.body,
366
+ isBreaking: c.isBreaking,
367
+ githubReferences: c.references,
368
+ author: c.author,
369
+ shortHash: c.shortHash,
370
+ revertedHashes: c.revertedHashes,
371
+ affectedProjects: commitChangesNonProjectFiles(c, fileMap.nonProjectFiles)
372
+ ? '*'
373
+ : getProjectsAffectedByCommit(c, fileToProjectMap),
374
+ })), nxReleaseConfig.conventionalCommits);
375
+ }
376
+ const projectChangelogs = await generateChangelogForProjects({
377
+ tree,
378
+ args,
379
+ projectGraph,
380
+ changes,
381
+ projectsVersionData,
382
+ releaseGroup,
383
+ projects: [project],
384
+ nxReleaseConfig,
385
+ projectToAdditionalDependencyBumps,
386
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
387
+ commits: filterHiddenCommits(commits, nxReleaseConfig.conventionalCommits),
388
+ });
389
+ let hasPushed = false;
390
+ for (const [projectName, projectChangelog] of Object.entries(projectChangelogs)) {
391
+ if (projectChangelogs &&
392
+ shouldCreateGitHubRelease(releaseGroup.changelog, args.createRelease)) {
393
+ postGitTasks.push(async (latestCommit) => {
394
+ if (!hasPushed) {
395
+ output_1.output.logSingleLine(`Pushing to git remote`);
396
+ // Before we can create/update the release we need to ensure the commit exists on the remote
397
+ await (0, git_1.gitPush)({
398
+ gitRemote: args.gitRemote,
399
+ dryRun: args.dryRun,
400
+ verbose: args.verbose,
401
+ });
402
+ hasPushed = true;
403
+ }
404
+ output_1.output.logSingleLine(`Creating GitHub Release`);
405
+ await (0, github_1.createOrUpdateGithubRelease)(releaseGroup.changelog
406
+ ? releaseGroup.changelog.createRelease
407
+ : config_1.defaultCreateReleaseProvider, projectChangelog.releaseVersion, projectChangelog.contents, latestCommit, { dryRun: args.dryRun });
408
+ });
409
+ }
410
+ allProjectChangelogs[projectName] = projectChangelog;
411
+ }
412
+ }
413
+ }
414
+ else {
415
+ let changes = [];
416
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
417
+ let commits = [];
418
+ if (releaseGroup.resolvedVersionPlans) {
419
+ changes = releaseGroup.resolvedVersionPlans
420
+ .flatMap((vp) => {
421
+ const releaseType = versionPlanSemverReleaseTypeToChangelogType(vp.groupVersionBump);
422
+ let githubReferences = [];
423
+ let author = undefined;
424
+ const parsedCommit = vp.commit
425
+ ? (0, git_1.parseGitCommit)(vp.commit, true)
426
+ : null;
427
+ if (parsedCommit) {
428
+ githubReferences = parsedCommit.references;
429
+ author = parsedCommit.author;
430
+ }
431
+ const changes = !vp.triggeredByProjects
432
+ ? {
433
+ type: releaseType.type,
434
+ scope: '',
435
+ description: vp.message,
436
+ body: '',
437
+ isBreaking: releaseType.isBreaking,
438
+ githubReferences,
439
+ author,
440
+ affectedProjects: '*',
441
+ }
442
+ : vp.triggeredByProjects.map((project) => {
443
+ return {
444
+ type: releaseType.type,
445
+ scope: project,
446
+ description: vp.message,
447
+ body: '',
448
+ isBreaking: releaseType.isBreaking,
449
+ githubReferences,
450
+ author,
451
+ affectedProjects: [project],
452
+ };
453
+ });
454
+ return changes;
455
+ })
456
+ .filter(Boolean);
457
+ }
458
+ else {
459
+ let fromRef = args.from ||
460
+ (await (0, git_1.getLatestGitTagForPattern)(releaseGroup.releaseTagPattern))
461
+ ?.tag;
462
+ if (!fromRef) {
463
+ if (useAutomaticFromRef) {
464
+ fromRef = await (0, git_1.getFirstGitCommit)();
465
+ if (args.verbose) {
466
+ console.log(`Determined release group --from ref from the first commit in the workspace: ${fromRef}`);
467
+ }
468
+ }
469
+ else {
470
+ throw new Error(`Unable to determine the previous git tag. If this is the first release of your release group, use the --first-release option or set the "release.changelog.automaticFromRef" config property in nx.json to generate a changelog from the first commit. Otherwise, be sure to configure the "release.releaseTagPattern" property in nx.json to match the structure of your repository's git tags.`);
471
+ }
472
+ }
473
+ // Make sure that the fromRef is actually resolvable
474
+ const fromSHA = await (0, git_1.getCommitHash)(fromRef);
475
+ const { fileMap } = await (0, file_map_utils_1.createFileMapUsingProjectGraph)(projectGraph);
476
+ const fileToProjectMap = createFileToProjectMap(fileMap.projectFileMap);
477
+ commits = await getCommits(fromSHA, toSHA);
478
+ changes = filterHiddenChanges(commits.map((c) => ({
479
+ type: c.type,
480
+ scope: c.scope,
481
+ description: c.description,
482
+ body: c.body,
483
+ isBreaking: c.isBreaking,
484
+ githubReferences: c.references,
485
+ author: c.author,
486
+ shortHash: c.shortHash,
487
+ revertedHashes: c.revertedHashes,
488
+ affectedProjects: commitChangesNonProjectFiles(c, fileMap.nonProjectFiles)
489
+ ? '*'
490
+ : getProjectsAffectedByCommit(c, fileToProjectMap),
491
+ })), nxReleaseConfig.conventionalCommits);
492
+ }
493
+ const projectChangelogs = await generateChangelogForProjects({
494
+ tree,
495
+ args,
496
+ projectGraph,
497
+ changes,
498
+ projectsVersionData,
499
+ releaseGroup,
500
+ projects: projectNodes,
501
+ nxReleaseConfig,
502
+ projectToAdditionalDependencyBumps,
503
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
504
+ commits: filterHiddenCommits(commits, nxReleaseConfig.conventionalCommits),
505
+ });
506
+ let hasPushed = false;
507
+ for (const [projectName, projectChangelog] of Object.entries(projectChangelogs)) {
508
+ if (projectChangelogs &&
509
+ shouldCreateGitHubRelease(releaseGroup.changelog, args.createRelease)) {
510
+ postGitTasks.push(async (latestCommit) => {
511
+ if (!hasPushed) {
512
+ output_1.output.logSingleLine(`Pushing to git remote`);
513
+ // Before we can create/update the release we need to ensure the commit exists on the remote
514
+ await (0, git_1.gitPush)({
515
+ gitRemote: args.gitRemote,
516
+ dryRun: args.dryRun,
517
+ verbose: args.verbose,
518
+ });
519
+ hasPushed = true;
520
+ }
521
+ output_1.output.logSingleLine(`Creating GitHub Release`);
522
+ await (0, github_1.createOrUpdateGithubRelease)(releaseGroup.changelog
523
+ ? releaseGroup.changelog.createRelease
524
+ : config_1.defaultCreateReleaseProvider, projectChangelog.releaseVersion, projectChangelog.contents, latestCommit, { dryRun: args.dryRun });
525
+ });
526
+ }
527
+ allProjectChangelogs[projectName] = projectChangelog;
528
+ }
529
+ }
530
+ }
531
+ await applyChangesAndExit(args, nxReleaseConfig, tree, toSHA, postGitTasks, commitMessageValues, gitTagValues, releaseGroups);
532
+ return {
533
+ workspaceChangelog,
534
+ projectChangelogs: allProjectChangelogs,
535
+ };
536
+ };
537
+ }
538
+ function resolveChangelogVersions(args, releaseGroups, releaseGroupToFilteredProjects) {
539
+ if (!args.version && !args.versionData) {
540
+ throw new Error(`You must provide a version string and/or a versionData object.`);
541
+ }
542
+ /**
543
+ * TODO: revaluate this assumption holistically in a dedicated PR when we add support for calver
544
+ * (e.g. the Release class also uses semver utils to check if prerelease).
545
+ *
546
+ * Right now, the given version must be valid semver in order to proceed
547
+ */
548
+ if (args.version && !(0, semver_1.valid)(args.version)) {
549
+ throw new Error(`The given version "${args.version}" is not a valid semver version. Please provide your version in the format "1.0.0", "1.0.0-beta.1" etc`);
550
+ }
551
+ const versionData = releaseGroups.reduce((versionData, releaseGroup) => {
552
+ const releaseGroupProjectNames = Array.from(releaseGroupToFilteredProjects.get(releaseGroup));
553
+ for (const projectName of releaseGroupProjectNames) {
554
+ if (!args.versionData) {
555
+ versionData[projectName] = {
556
+ newVersion: args.version,
557
+ currentVersion: '', // not relevant within changelog/commit generation
558
+ dependentProjects: [], // not relevant within changelog/commit generation
559
+ };
560
+ continue;
561
+ }
562
+ /**
563
+ * In the case where a versionData object was provided, we need to make sure all projects are present,
564
+ * otherwise it suggests a filtering mismatch between the version and changelog command invocations.
565
+ */
566
+ if (!args.versionData[projectName]) {
567
+ throw new Error(`The provided versionData object does not contain a version for project "${projectName}". This suggests a filtering mismatch between the version and changelog command invocations.`);
568
+ }
569
+ }
570
+ return versionData;
571
+ }, args.versionData || {});
572
+ return {
573
+ workspaceChangelogVersion: args.version,
574
+ projectsVersionData: versionData,
575
+ };
576
+ }
577
+ async function applyChangesAndExit(args, nxReleaseConfig, tree, toSHA, postGitTasks, commitMessageValues, gitTagValues, releaseGroups) {
578
+ let latestCommit = toSHA;
579
+ const changes = tree.listChanges();
580
+ /**
581
+ * In the case where we are expecting changelog file updates, but there is nothing
582
+ * to flush from the tree, we exit early. This could happen we using conventional
583
+ * commits, for example.
584
+ */
585
+ const changelogFilesEnabled = checkChangelogFilesEnabled(nxReleaseConfig);
586
+ if (changelogFilesEnabled && !changes.length) {
587
+ output_1.output.warn({
588
+ title: `No changes detected for changelogs`,
589
+ bodyLines: [
590
+ `No changes were detected for any changelog files, so no changelog entries will be generated.`,
591
+ ],
592
+ });
593
+ if (!postGitTasks.length) {
594
+ // no GitHub releases to create so we can just exit
595
+ return;
596
+ }
597
+ if ((0, is_ci_1.isCI)()) {
598
+ output_1.output.warn({
599
+ title: `Skipped GitHub release creation because no changes were detected for any changelog files.`,
600
+ });
601
+ return;
602
+ }
603
+ // prompt the user to see if they want to create a GitHub release anyway
604
+ // we know that the user has configured GitHub releases because we have postGitTasks
605
+ const shouldCreateGitHubReleaseAnyway = await promptForGitHubRelease();
606
+ if (!shouldCreateGitHubReleaseAnyway) {
607
+ return;
608
+ }
609
+ for (const postGitTask of postGitTasks) {
610
+ await postGitTask(latestCommit);
611
+ }
612
+ return;
613
+ }
614
+ const changedFiles = changes.map((f) => f.path);
615
+ let deletedFiles = [];
616
+ if (args.deleteVersionPlans) {
617
+ const planFiles = new Set();
618
+ releaseGroups.forEach((group) => {
619
+ if (group.resolvedVersionPlans) {
620
+ group.resolvedVersionPlans.forEach((plan) => {
621
+ if (!args.dryRun) {
622
+ (0, node_fs_1.rmSync)(plan.absolutePath, { recursive: true, force: true });
623
+ if (args.verbose) {
624
+ console.log(`Removing ${plan.relativePath}`);
625
+ }
626
+ }
627
+ else {
628
+ if (args.verbose) {
629
+ console.log(`Would remove ${plan.relativePath}, but --dry-run was set`);
630
+ }
631
+ }
632
+ planFiles.add(plan.relativePath);
633
+ });
634
+ }
635
+ });
636
+ deletedFiles = Array.from(planFiles);
637
+ }
638
+ // Generate a new commit for the changes, if configured to do so
639
+ if (args.gitCommit ?? nxReleaseConfig.changelog.git.commit) {
640
+ await (0, shared_1.commitChanges)({
641
+ changedFiles,
642
+ deletedFiles,
643
+ isDryRun: !!args.dryRun,
644
+ isVerbose: !!args.verbose,
645
+ gitCommitMessages: commitMessageValues,
646
+ gitCommitArgs: args.gitCommitArgs || nxReleaseConfig.changelog.git.commitArgs,
647
+ });
648
+ // Resolve the commit we just made
649
+ latestCommit = await (0, git_1.getCommitHash)('HEAD');
650
+ }
651
+ else if ((args.stageChanges ?? nxReleaseConfig.changelog.git.stageChanges) &&
652
+ changes.length) {
653
+ output_1.output.logSingleLine(`Staging changed files with git`);
654
+ await (0, git_1.gitAdd)({
655
+ changedFiles,
656
+ deletedFiles,
657
+ dryRun: args.dryRun,
658
+ verbose: args.verbose,
659
+ });
660
+ }
661
+ // Generate a one or more git tags for the changes, if configured to do so
662
+ if (args.gitTag ?? nxReleaseConfig.changelog.git.tag) {
663
+ output_1.output.logSingleLine(`Tagging commit with git`);
664
+ for (const tag of gitTagValues) {
665
+ await (0, git_1.gitTag)({
666
+ tag,
667
+ message: args.gitTagMessage || nxReleaseConfig.changelog.git.tagMessage,
668
+ additionalArgs: args.gitTagArgs || nxReleaseConfig.changelog.git.tagArgs,
669
+ dryRun: args.dryRun,
670
+ verbose: args.verbose,
671
+ });
672
+ }
673
+ }
674
+ // Run any post-git tasks in series
675
+ for (const postGitTask of postGitTasks) {
676
+ await postGitTask(latestCommit);
677
+ }
678
+ return;
679
+ }
680
+ async function generateChangelogForWorkspace({ tree, args, projectGraph, nxReleaseConfig, workspaceChangelogVersion, changes, commits, }) {
681
+ const config = nxReleaseConfig.changelog.workspaceChangelog;
682
+ // The entire feature is disabled at the workspace level, exit early
683
+ if (config === false) {
684
+ return;
685
+ }
686
+ // If explicitly null it must mean that no changes were detected (e.g. when using conventional commits), so do nothing
687
+ if (workspaceChangelogVersion === null) {
688
+ return;
689
+ }
690
+ // The user explicitly passed workspaceChangelog=true but does not have a workspace changelog config in nx.json
691
+ if (!config) {
692
+ throw new Error(`Workspace changelog is enabled but no configuration was provided. Please provide a workspaceChangelog object in your nx.json`);
693
+ }
694
+ if (Object.entries(nxReleaseConfig.groups).length > 1) {
695
+ output_1.output.warn({
696
+ title: `Workspace changelog is enabled, but you have multiple release groups configured. This is not supported, so workspace changelog will be disabled.`,
697
+ bodyLines: [
698
+ `A single workspace version cannot be determined when defining multiple release groups because versions can differ between each group.`,
699
+ `Project level changelogs can be enabled with the "release.changelog.projectChangelogs" property.`,
700
+ ],
701
+ });
702
+ return;
703
+ }
704
+ if (Object.values(nxReleaseConfig.groups)[0].projectsRelationship ===
705
+ 'independent') {
706
+ output_1.output.warn({
707
+ title: `Workspace changelog is enabled, but you have configured an independent projects relationship. This is not supported, so workspace changelog will be disabled.`,
708
+ bodyLines: [
709
+ `A single workspace version cannot be determined when using independent projects because versions can differ between each project.`,
710
+ `Project level changelogs can be enabled with the "release.changelog.projectChangelogs" property.`,
711
+ ],
712
+ });
713
+ return;
714
+ }
715
+ // Only trigger interactive mode for the workspace changelog if the user explicitly requested it via "all" or "workspace"
716
+ const interactive = args.interactive === 'all' || args.interactive === 'workspace';
717
+ const dryRun = !!args.dryRun;
718
+ const gitRemote = args.gitRemote;
719
+ const changelogRenderer = (0, resolve_changelog_renderer_1.resolveChangelogRenderer)(config.renderer);
720
+ let interpolatedTreePath = config.file || '';
721
+ if (interpolatedTreePath) {
722
+ interpolatedTreePath = (0, utils_1.interpolate)(interpolatedTreePath, {
723
+ projectName: '', // n/a for the workspace changelog
724
+ projectRoot: '', // n/a for the workspace changelog
725
+ workspaceRoot: '', // within the tree, workspaceRoot is the root
726
+ });
727
+ }
728
+ const releaseVersion = new shared_1.ReleaseVersion({
729
+ version: workspaceChangelogVersion,
730
+ releaseTagPattern: nxReleaseConfig.releaseTagPattern,
731
+ });
732
+ if (interpolatedTreePath) {
733
+ const prefix = dryRun ? 'Previewing' : 'Generating';
734
+ output_1.output.log({
735
+ title: `${prefix} an entry in ${interpolatedTreePath} for ${chalk.white(releaseVersion.gitTag)}`,
736
+ });
737
+ }
738
+ const githubRepoData = (0, github_1.getGitHubRepoData)(gitRemote, config.createRelease);
739
+ let contents = await changelogRenderer({
740
+ projectGraph,
741
+ changes,
742
+ commits,
743
+ releaseVersion: releaseVersion.rawVersion,
744
+ project: null,
745
+ repoSlug: githubRepoData?.slug,
746
+ repoData: githubRepoData,
747
+ entryWhenNoChanges: config.entryWhenNoChanges,
748
+ changelogRenderOptions: config.renderOptions,
749
+ conventionalCommitsConfig: nxReleaseConfig.conventionalCommits,
750
+ });
751
+ /**
752
+ * If interactive mode, make the changelog contents available for the user to modify in their editor of choice,
753
+ * in a similar style to git interactive rebases/merges.
754
+ */
755
+ if (interactive) {
756
+ const tmpDir = (0, tmp_1.dirSync)().name;
757
+ const changelogPath = (0, path_1.joinPathFragments)(tmpDir,
758
+ // Include the tree path in the name so that it is easier to identify which changelog file is being edited
759
+ `PREVIEW__${interpolatedTreePath.replace(/\//g, '_')}`);
760
+ (0, node_fs_1.writeFileSync)(changelogPath, contents);
761
+ await (0, launch_editor_1.launchEditor)(changelogPath);
762
+ contents = (0, node_fs_1.readFileSync)(changelogPath, 'utf-8');
763
+ }
764
+ if (interpolatedTreePath) {
765
+ let rootChangelogContents = tree.exists(interpolatedTreePath)
766
+ ? tree.read(interpolatedTreePath).toString()
767
+ : '';
768
+ if (rootChangelogContents) {
769
+ // NOTE: right now existing releases are always expected to be in markdown format, but in the future we could potentially support others via a custom parser option
770
+ const changelogReleases = (0, markdown_1.parseChangelogMarkdown)(rootChangelogContents).releases;
771
+ const existingVersionToUpdate = changelogReleases.find((r) => r.version === releaseVersion.rawVersion);
772
+ if (existingVersionToUpdate) {
773
+ rootChangelogContents = rootChangelogContents.replace(`## ${releaseVersion.rawVersion}\n\n\n${existingVersionToUpdate.body}`, contents);
774
+ }
775
+ else {
776
+ // No existing version, simply prepend the new release to the top of the file
777
+ rootChangelogContents = `${contents}\n\n${rootChangelogContents}`;
778
+ }
779
+ }
780
+ else {
781
+ // No existing changelog contents, simply create a new one using the generated contents
782
+ rootChangelogContents = contents;
783
+ }
784
+ tree.write(interpolatedTreePath, rootChangelogContents);
785
+ (0, print_changes_1.printAndFlushChanges)(tree, !!dryRun, 3, false, shared_1.noDiffInChangelogMessage);
786
+ }
787
+ return {
788
+ releaseVersion,
789
+ contents,
790
+ };
791
+ }
792
+ async function generateChangelogForProjects({ tree, args, projectGraph, changes, commits, projectsVersionData, releaseGroup, projects, nxReleaseConfig, projectToAdditionalDependencyBumps, }) {
793
+ const config = releaseGroup.changelog;
794
+ // The entire feature is disabled at the release group level, exit early
795
+ if (config === false) {
796
+ return;
797
+ }
798
+ // Only trigger interactive mode for the project changelog if the user explicitly requested it via "all" or "projects"
799
+ const interactive = args.interactive === 'all' || args.interactive === 'projects';
800
+ const dryRun = !!args.dryRun;
801
+ const gitRemote = args.gitRemote;
802
+ const changelogRenderer = (0, resolve_changelog_renderer_1.resolveChangelogRenderer)(config.renderer);
803
+ const projectChangelogs = {};
804
+ for (const project of projects) {
805
+ let interpolatedTreePath = config.file || '';
806
+ if (interpolatedTreePath) {
807
+ interpolatedTreePath = (0, utils_1.interpolate)(interpolatedTreePath, {
808
+ projectName: project.name,
809
+ projectRoot: project.data.root,
810
+ workspaceRoot: '', // within the tree, workspaceRoot is the root
811
+ });
812
+ }
813
+ /**
814
+ * newVersion will be null in the case that no changes were detected (e.g. in conventional commits mode),
815
+ * no changelog entry is relevant in that case.
816
+ */
817
+ if (projectsVersionData[project.name].newVersion === null) {
818
+ continue;
819
+ }
820
+ const releaseVersion = new shared_1.ReleaseVersion({
821
+ version: projectsVersionData[project.name].newVersion,
822
+ releaseTagPattern: releaseGroup.releaseTagPattern,
823
+ projectName: project.name,
824
+ });
825
+ if (interpolatedTreePath) {
826
+ const prefix = dryRun ? 'Previewing' : 'Generating';
827
+ output_1.output.log({
828
+ title: `${prefix} an entry in ${interpolatedTreePath} for ${chalk.white(releaseVersion.gitTag)}`,
829
+ });
830
+ }
831
+ const githubRepoData = (0, github_1.getGitHubRepoData)(gitRemote, config.createRelease);
832
+ let contents = await changelogRenderer({
833
+ projectGraph,
834
+ changes,
835
+ commits,
836
+ releaseVersion: releaseVersion.rawVersion,
837
+ project: project.name,
838
+ repoSlug: githubRepoData?.slug,
839
+ repoData: githubRepoData,
840
+ entryWhenNoChanges: typeof config.entryWhenNoChanges === 'string'
841
+ ? (0, utils_1.interpolate)(config.entryWhenNoChanges, {
842
+ projectName: project.name,
843
+ projectRoot: project.data.root,
844
+ workspaceRoot: '', // within the tree, workspaceRoot is the root
845
+ })
846
+ : false,
847
+ changelogRenderOptions: config.renderOptions,
848
+ conventionalCommitsConfig: releaseGroup.versionPlans
849
+ ? null
850
+ : nxReleaseConfig.conventionalCommits,
851
+ dependencyBumps: projectToAdditionalDependencyBumps.get(project.name),
852
+ });
853
+ /**
854
+ * If interactive mode, make the changelog contents available for the user to modify in their editor of choice,
855
+ * in a similar style to git interactive rebases/merges.
856
+ */
857
+ if (interactive) {
858
+ const tmpDir = (0, tmp_1.dirSync)().name;
859
+ const changelogPath = (0, path_1.joinPathFragments)(tmpDir,
860
+ // Include the tree path in the name so that it is easier to identify which changelog file is being edited
861
+ `PREVIEW__${interpolatedTreePath.replace(/\//g, '_')}`);
862
+ (0, node_fs_1.writeFileSync)(changelogPath, contents);
863
+ await (0, launch_editor_1.launchEditor)(changelogPath);
864
+ contents = (0, node_fs_1.readFileSync)(changelogPath, 'utf-8');
865
+ }
866
+ if (interpolatedTreePath) {
867
+ let changelogContents = tree.exists(interpolatedTreePath)
868
+ ? tree.read(interpolatedTreePath).toString()
869
+ : '';
870
+ if (changelogContents) {
871
+ // NOTE: right now existing releases are always expected to be in markdown format, but in the future we could potentially support others via a custom parser option
872
+ const changelogReleases = (0, markdown_1.parseChangelogMarkdown)(changelogContents).releases;
873
+ const existingVersionToUpdate = changelogReleases.find((r) => r.version === releaseVersion.rawVersion);
874
+ if (existingVersionToUpdate) {
875
+ changelogContents = changelogContents.replace(`## ${releaseVersion.rawVersion}\n\n\n${existingVersionToUpdate.body}`, contents);
876
+ }
877
+ else {
878
+ // No existing version, simply prepend the new release to the top of the file
879
+ changelogContents = `${contents}\n\n${changelogContents}`;
880
+ }
881
+ }
882
+ else {
883
+ // No existing changelog contents, simply create a new one using the generated contents
884
+ changelogContents = contents;
885
+ }
886
+ tree.write(interpolatedTreePath, changelogContents);
887
+ (0, print_changes_1.printAndFlushChanges)(tree, !!dryRun, 3, false, shared_1.noDiffInChangelogMessage,
888
+ // Only print the change for the current changelog file at this point
889
+ (f) => f.path === interpolatedTreePath);
890
+ }
891
+ projectChangelogs[project.name] = {
892
+ releaseVersion,
893
+ contents,
894
+ };
895
+ }
896
+ return projectChangelogs;
897
+ }
898
+ function checkChangelogFilesEnabled(nxReleaseConfig) {
899
+ if (nxReleaseConfig.changelog.workspaceChangelog &&
900
+ nxReleaseConfig.changelog.workspaceChangelog.file) {
901
+ return true;
902
+ }
903
+ for (const releaseGroup of Object.values(nxReleaseConfig.groups)) {
904
+ if (releaseGroup.changelog && releaseGroup.changelog.file) {
905
+ return true;
906
+ }
907
+ }
908
+ return false;
909
+ }
910
+ async function getCommits(fromSHA, toSHA) {
911
+ const rawCommits = await (0, git_1.getGitDiff)(fromSHA, toSHA);
912
+ // Parse as conventional commits
913
+ return (0, git_1.parseCommits)(rawCommits);
914
+ }
915
+ function filterHiddenChanges(changes, conventionalCommitsConfig) {
916
+ return changes.filter((change) => {
917
+ const type = change.type;
918
+ const typeConfig = conventionalCommitsConfig.types[type];
919
+ if (!typeConfig) {
920
+ // don't include changes with unknown types
921
+ return false;
922
+ }
923
+ return !typeConfig.changelog.hidden;
924
+ });
925
+ }
926
+ // TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
927
+ function filterHiddenCommits(commits, conventionalCommitsConfig) {
928
+ if (!commits) {
929
+ return [];
930
+ }
931
+ return commits.filter((commit) => {
932
+ const type = commit.type;
933
+ const typeConfig = conventionalCommitsConfig.types[type];
934
+ if (!typeConfig) {
935
+ // don't include commits with unknown types
936
+ return false;
937
+ }
938
+ return !typeConfig.changelog.hidden;
939
+ });
940
+ }
941
+ function shouldCreateGitHubRelease(changelogConfig, createReleaseArg = undefined) {
942
+ if (createReleaseArg !== undefined) {
943
+ return createReleaseArg === 'github';
944
+ }
945
+ return (changelogConfig || {}).createRelease !== false;
946
+ }
947
+ async function promptForGitHubRelease() {
948
+ try {
949
+ const result = await (0, enquirer_1.prompt)([
950
+ {
951
+ name: 'confirmation',
952
+ message: 'Do you want to create a GitHub release anyway?',
953
+ type: 'confirm',
954
+ },
955
+ ]);
956
+ return result.confirmation;
957
+ }
958
+ catch (e) {
959
+ // Handle the case where the user exits the prompt with ctrl+c
960
+ return false;
961
+ }
962
+ }
963
+ function getProjectsAffectedByCommit(commit, fileToProjectMap) {
964
+ const affectedProjects = new Set();
965
+ for (const file of commit.affectedFiles) {
966
+ affectedProjects.add(fileToProjectMap[file]);
967
+ }
968
+ return Array.from(affectedProjects);
969
+ }
970
+ function commitChangesNonProjectFiles(commit, nonProjectFiles) {
971
+ return nonProjectFiles.some((fileData) => commit.affectedFiles.includes(fileData.file));
972
+ }
973
+ function createFileToProjectMap(projectFileMap) {
974
+ const fileToProjectMap = {};
975
+ for (const [projectName, projectFiles] of Object.entries(projectFileMap)) {
976
+ for (const file of projectFiles) {
977
+ fileToProjectMap[file.file] = projectName;
978
+ }
979
+ }
980
+ return fileToProjectMap;
981
+ }
982
+ function versionPlanSemverReleaseTypeToChangelogType(bump) {
983
+ switch (bump) {
984
+ case 'premajor':
985
+ case 'major':
986
+ return { type: 'feat', isBreaking: true };
987
+ case 'preminor':
988
+ case 'minor':
989
+ return { type: 'feat', isBreaking: false };
990
+ case 'prerelease':
991
+ case 'prepatch':
992
+ case 'patch':
993
+ return { type: 'fix', isBreaking: false };
994
+ default:
995
+ throw new Error(`Invalid semver bump type: ${bump}`);
996
+ }
997
+ }