nx 17.0.3 → 17.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/bin/init-local.js +10 -60
  4. package/bin/nx-cloud.js +6 -0
  5. package/bin/nx.js +1 -9
  6. package/bin/post-install.js +5 -1
  7. package/bin/run-executor.js +1 -1
  8. package/migrations.json +18 -0
  9. package/package.json +21 -18
  10. package/plugins/package-json.js +1 -1
  11. package/{changelog-renderer → release/changelog-renderer}/index.d.ts +18 -3
  12. package/{changelog-renderer → release/changelog-renderer}/index.js +78 -34
  13. package/release/index.d.ts +4 -0
  14. package/release/index.js +11 -0
  15. package/schemas/nx-schema.json +203 -19
  16. package/schemas/project-schema.json +20 -0
  17. package/src/adapter/angular-json.js +28 -18
  18. package/src/adapter/compat.d.ts +2 -2
  19. package/src/adapter/compat.js +6 -1
  20. package/src/adapter/ngcli-adapter.d.ts +16 -4
  21. package/src/adapter/ngcli-adapter.js +85 -28
  22. package/src/command-line/add/add.d.ts +2 -0
  23. package/src/command-line/add/add.js +169 -0
  24. package/src/command-line/add/command-object.d.ts +7 -0
  25. package/src/command-line/add/command-object.js +24 -0
  26. package/src/command-line/affected/affected.js +0 -3
  27. package/src/command-line/affected/command-object.d.ts +4 -4
  28. package/src/command-line/affected/command-object.js +53 -26
  29. package/src/command-line/affected/print-affected.js +10 -1
  30. package/src/command-line/connect/command-object.d.ts +1 -2
  31. package/src/command-line/connect/command-object.js +3 -7
  32. package/src/command-line/connect/connect-to-nx-cloud.d.ts +4 -5
  33. package/src/command-line/connect/connect-to-nx-cloud.js +43 -31
  34. package/src/command-line/connect/view-logs.js +5 -21
  35. package/src/command-line/examples.js +18 -0
  36. package/src/command-line/exec/command-object.js +2 -1
  37. package/src/command-line/exec/exec.d.ts +1 -1
  38. package/src/command-line/exec/exec.js +78 -35
  39. package/src/command-line/format/format.js +13 -4
  40. package/src/command-line/generate/generate.js +9 -9
  41. package/src/command-line/generate/generator-utils.d.ts +3 -2
  42. package/src/command-line/generate/generator-utils.js +5 -5
  43. package/src/command-line/graph/graph.d.ts +1 -1
  44. package/src/command-line/graph/graph.js +82 -37
  45. package/src/command-line/init/command-object.js +70 -43
  46. package/src/command-line/init/implementation/add-nx-to-monorepo.d.ts +4 -2
  47. package/src/command-line/init/implementation/add-nx-to-monorepo.js +11 -2
  48. package/src/command-line/init/implementation/add-nx-to-nest.d.ts +1 -1
  49. package/src/command-line/init/implementation/add-nx-to-nest.js +9 -6
  50. package/src/command-line/init/implementation/add-nx-to-npm-repo.d.ts +4 -2
  51. package/src/command-line/init/implementation/add-nx-to-npm-repo.js +14 -4
  52. package/src/command-line/init/implementation/angular/index.js +4 -1
  53. package/src/command-line/init/implementation/angular/legacy-angular-versions.js +10 -5
  54. package/src/command-line/init/implementation/angular/standalone-workspace.js +1 -1
  55. package/src/command-line/init/implementation/angular/types.d.ts +1 -1
  56. package/src/command-line/init/implementation/dot-nx/nxw.js +47 -16
  57. package/src/command-line/init/implementation/react/index.d.ts +1 -1
  58. package/src/command-line/init/implementation/react/index.js +4 -2
  59. package/src/command-line/init/implementation/react/rename-js-to-jsx.js +4 -2
  60. package/src/command-line/init/implementation/utils.d.ts +5 -5
  61. package/src/command-line/init/implementation/utils.js +46 -44
  62. package/src/command-line/init/{init.js → init-v1.js} +5 -13
  63. package/src/command-line/init/init-v2.d.ts +7 -0
  64. package/src/command-line/init/init-v2.js +201 -0
  65. package/src/command-line/list/list.js +6 -5
  66. package/src/command-line/migrate/command-object.js +19 -4
  67. package/src/command-line/migrate/migrate.js +21 -17
  68. package/src/command-line/new/new.js +1 -1
  69. package/src/command-line/nx-commands.js +4 -1
  70. package/src/command-line/release/changelog.d.ts +22 -1
  71. package/src/command-line/release/changelog.js +459 -257
  72. package/src/command-line/release/command-object.d.ts +29 -7
  73. package/src/command-line/release/command-object.js +120 -20
  74. package/src/command-line/release/config/config.d.ts +26 -21
  75. package/src/command-line/release/config/config.js +416 -59
  76. package/src/command-line/release/config/conventional-commits.d.ts +2 -0
  77. package/src/command-line/release/config/conventional-commits.js +98 -0
  78. package/src/command-line/release/config/filter-release-groups.d.ts +1 -2
  79. package/src/command-line/release/config/filter-release-groups.js +38 -1
  80. package/src/command-line/release/index.d.ts +16 -0
  81. package/src/command-line/release/index.js +23 -0
  82. package/src/command-line/release/publish.d.ts +7 -3
  83. package/src/command-line/release/publish.js +89 -37
  84. package/src/command-line/release/release.d.ts +4 -0
  85. package/src/command-line/release/release.js +176 -0
  86. package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts +7 -0
  87. package/src/command-line/release/utils/batch-projects-by-generator-config.js +37 -0
  88. package/src/command-line/release/utils/exec-command.d.ts +1 -0
  89. package/src/command-line/release/utils/exec-command.js +34 -0
  90. package/src/command-line/release/utils/git.d.ts +34 -1
  91. package/src/command-line/release/utils/git.js +238 -34
  92. package/src/command-line/release/utils/github.d.ts +5 -5
  93. package/src/command-line/release/utils/github.js +155 -8
  94. package/src/command-line/release/utils/markdown.js +6 -1
  95. package/src/command-line/release/utils/print-changes.d.ts +1 -1
  96. package/src/command-line/release/utils/print-changes.js +3 -3
  97. package/src/command-line/release/utils/resolve-nx-json-error-message.js +4 -1
  98. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +4 -0
  99. package/src/command-line/release/utils/resolve-semver-specifier.js +58 -0
  100. package/src/command-line/release/utils/semver.d.ts +8 -0
  101. package/src/command-line/release/utils/semver.js +30 -1
  102. package/src/command-line/release/utils/shared.d.ts +39 -0
  103. package/src/command-line/release/utils/shared.js +213 -0
  104. package/src/command-line/release/version.d.ts +37 -3
  105. package/src/command-line/release/version.js +312 -117
  106. package/src/command-line/repair/repair.js +13 -9
  107. package/src/command-line/report/report.d.ts +3 -0
  108. package/src/command-line/report/report.js +22 -5
  109. package/src/command-line/run/command-object.d.ts +4 -0
  110. package/src/command-line/run/command-object.js +18 -2
  111. package/src/command-line/run/executor-utils.d.ts +2 -1
  112. package/src/command-line/run/executor-utils.js +4 -4
  113. package/src/command-line/run/run-one.js +3 -6
  114. package/src/command-line/run/run.js +34 -9
  115. package/src/command-line/run-many/command-object.js +4 -1
  116. package/src/command-line/run-many/run-many.js +0 -3
  117. package/src/command-line/show/command-object.d.ts +3 -0
  118. package/src/command-line/show/command-object.js +29 -2
  119. package/src/command-line/show/show.js +9 -0
  120. package/src/command-line/yargs-utils/shared-options.d.ts +4 -1
  121. package/src/command-line/yargs-utils/shared-options.js +23 -9
  122. package/src/commands-runner/command-graph.d.ts +13 -0
  123. package/src/commands-runner/command-graph.js +2 -0
  124. package/src/commands-runner/create-command-graph.d.ts +4 -0
  125. package/src/commands-runner/create-command-graph.js +44 -0
  126. package/src/commands-runner/get-command-projects.d.ts +3 -0
  127. package/src/commands-runner/get-command-projects.js +19 -0
  128. package/src/config/nx-json.d.ts +160 -25
  129. package/src/config/project-graph.d.ts +3 -3
  130. package/src/config/workspace-json-project-json.d.ts +23 -1
  131. package/src/config/workspaces.d.ts +1 -1
  132. package/src/config/workspaces.js +4 -6
  133. package/src/core/graph/3rdpartylicenses.txt +144 -74
  134. package/src/core/graph/environment.js +1 -1
  135. package/src/core/graph/index.html +4 -6
  136. package/src/core/graph/main.js +1 -1
  137. package/src/core/graph/runtime.js +1 -1
  138. package/src/core/graph/styles.css +3 -3
  139. package/src/core/graph/styles.js +1 -1
  140. package/src/daemon/client/client.d.ts +5 -1
  141. package/src/daemon/client/client.js +27 -8
  142. package/src/daemon/client/{socket-messenger.d.ts → daemon-socket-messenger.d.ts} +1 -1
  143. package/src/daemon/client/{socket-messenger.js → daemon-socket-messenger.js} +3 -3
  144. package/src/daemon/daemon-project-graph-error.d.ts +8 -0
  145. package/src/daemon/daemon-project-graph-error.js +13 -0
  146. package/src/daemon/server/handle-hash-tasks.js +12 -2
  147. package/src/daemon/server/handle-request-project-graph.js +1 -1
  148. package/src/daemon/server/project-graph-incremental-recomputation.d.ts +14 -13
  149. package/src/daemon/server/project-graph-incremental-recomputation.js +98 -33
  150. package/src/daemon/server/shutdown-utils.js +2 -4
  151. package/src/daemon/server/watcher.js +0 -3
  152. package/src/daemon/socket-utils.d.ts +2 -1
  153. package/src/daemon/socket-utils.js +15 -4
  154. package/src/daemon/tmp-dir.d.ts +1 -0
  155. package/src/daemon/tmp-dir.js +4 -4
  156. package/src/devkit-exports.d.ts +2 -2
  157. package/src/devkit-exports.js +3 -2
  158. package/src/devkit-internals.d.ts +3 -0
  159. package/src/devkit-internals.js +7 -1
  160. package/src/executors/noop/schema.json +1 -1
  161. package/src/executors/run-commands/run-commands.impl.d.ts +10 -2
  162. package/src/executors/run-commands/run-commands.impl.js +152 -48
  163. package/src/executors/run-commands/schema.json +11 -1
  164. package/src/executors/run-script/run-script.impl.js +43 -11
  165. package/src/executors/utils/convert-nx-executor.js +1 -1
  166. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts +3 -1
  167. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +4 -2
  168. package/src/generators/testing-utils/create-tree-with-empty-workspace.js +0 -6
  169. package/src/generators/tree.d.ts +1 -0
  170. package/src/generators/utils/glob.js +2 -2
  171. package/src/generators/utils/project-configuration.js +28 -9
  172. package/src/hasher/create-task-hasher.d.ts +4 -0
  173. package/src/hasher/create-task-hasher.js +16 -0
  174. package/src/hasher/hash-task.js +9 -3
  175. package/src/hasher/native-task-hasher-impl.d.ts +19 -0
  176. package/src/hasher/native-task-hasher-impl.js +37 -0
  177. package/src/hasher/node-task-hasher-impl.d.ts +49 -0
  178. package/src/hasher/node-task-hasher-impl.js +431 -0
  179. package/src/hasher/task-hasher.d.ts +33 -21
  180. package/src/hasher/task-hasher.js +30 -428
  181. package/src/migrations/update-15-0-0/migrate-to-inputs.js +5 -5
  182. package/src/migrations/update-15-1-0/set-project-names.js +2 -1
  183. package/src/migrations/update-15-8-2/update-nxw.js +2 -6
  184. package/src/migrations/update-17-0-0/rm-default-collection-npm-scope.js +3 -3
  185. package/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.js +49 -13
  186. package/src/migrations/update-17-2-0/move-default-base.d.ts +5 -0
  187. package/src/migrations/update-17-2-0/move-default-base.js +21 -0
  188. package/src/migrations/update-17-3-0/nx-release-path.d.ts +3 -0
  189. package/src/migrations/update-17-3-0/nx-release-path.js +48 -0
  190. package/src/migrations/update-17-3-0/update-nxw.d.ts +2 -0
  191. package/src/migrations/update-17-3-0/update-nxw.js +7 -0
  192. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.d.ts +2 -0
  193. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.js +9 -0
  194. package/src/native/index.d.ts +65 -15
  195. package/src/native/index.js +6 -2
  196. package/src/native/transform-objects.js +2 -0
  197. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +1 -0
  198. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +13 -12
  199. package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +6 -1
  200. package/src/nx-cloud/update-manager.js +2 -1
  201. package/src/plugins/js/index.d.ts +1 -1
  202. package/src/plugins/js/index.js +3 -3
  203. package/src/plugins/js/lock-file/lock-file.d.ts +2 -2
  204. package/src/plugins/js/lock-file/lock-file.js +15 -3
  205. package/src/plugins/js/package-json/create-package-json.js +1 -1
  206. package/src/plugins/js/project-graph/build-dependencies/strip-source-code.d.ts +1 -1
  207. package/src/plugins/js/project-graph/build-dependencies/strip-source-code.js +1 -1
  208. package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.d.ts +1 -1
  209. package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.js +1 -1
  210. package/src/plugins/js/utils/register.d.ts +1 -1
  211. package/src/plugins/js/utils/register.js +28 -8
  212. package/src/plugins/js/versions.d.ts +1 -1
  213. package/src/plugins/js/versions.js +1 -1
  214. package/{plugins/package-json-workspaces.d.ts → src/plugins/package-json-workspaces/create-nodes.d.ts} +4 -4
  215. package/{plugins/package-json-workspaces.js → src/plugins/package-json-workspaces/create-nodes.js} +34 -12
  216. package/src/plugins/package-json-workspaces/index.d.ts +1 -0
  217. package/src/plugins/package-json-workspaces/index.js +4 -0
  218. package/src/plugins/project-json/build-nodes/package-json-next-to-project-json.d.ts +2 -0
  219. package/src/plugins/project-json/build-nodes/package-json-next-to-project-json.js +47 -0
  220. package/src/plugins/project-json/build-nodes/project-json.d.ts +2 -5
  221. package/src/plugins/project-json/build-nodes/project-json.js +6 -44
  222. package/src/plugins/target-defaults/target-defaults-plugin.d.ts +66 -0
  223. package/src/plugins/target-defaults/target-defaults-plugin.js +182 -0
  224. package/src/project-graph/affected/locators/project-glob-changes.js +3 -3
  225. package/src/project-graph/affected/locators/workspace-projects.d.ts +0 -2
  226. package/src/project-graph/affected/locators/workspace-projects.js +16 -29
  227. package/src/project-graph/build-project-graph.d.ts +20 -1
  228. package/src/project-graph/build-project-graph.js +91 -33
  229. package/src/project-graph/file-map-utils.d.ts +9 -5
  230. package/src/project-graph/file-map-utils.js +16 -63
  231. package/src/project-graph/file-utils.d.ts +1 -1
  232. package/src/project-graph/file-utils.js +44 -2
  233. package/src/project-graph/nx-deps-cache.js +1 -1
  234. package/src/project-graph/project-graph-builder.d.ts +1 -1
  235. package/src/project-graph/project-graph-builder.js +1 -1
  236. package/src/project-graph/project-graph.d.ts +32 -1
  237. package/src/project-graph/project-graph.js +147 -23
  238. package/src/project-graph/utils/build-all-workspace-files.d.ts +2 -0
  239. package/src/project-graph/utils/build-all-workspace-files.js +15 -0
  240. package/src/project-graph/utils/normalize-project-nodes.d.ts +2 -3
  241. package/src/project-graph/utils/normalize-project-nodes.js +7 -33
  242. package/src/project-graph/utils/project-configuration-utils.d.ts +66 -4
  243. package/src/project-graph/utils/project-configuration-utils.js +509 -62
  244. package/src/project-graph/utils/retrieve-workspace-files.d.ts +12 -31
  245. package/src/project-graph/utils/retrieve-workspace-files.js +27 -90
  246. package/src/tasks-runner/batch/run-batch.js +3 -3
  247. package/src/tasks-runner/cache.js +6 -3
  248. package/src/tasks-runner/create-task-graph.js +1 -1
  249. package/src/tasks-runner/fork.d.ts +1 -0
  250. package/src/tasks-runner/fork.js +23 -0
  251. package/src/tasks-runner/forked-process-task-runner.d.ts +13 -5
  252. package/src/tasks-runner/forked-process-task-runner.js +112 -21
  253. package/src/tasks-runner/init-tasks-runner.js +1 -1
  254. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +28 -28
  255. package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js +19 -22
  256. package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.js +1 -3
  257. package/src/tasks-runner/life-cycles/invoke-runner-terminal-output-life-cycle.js +1 -3
  258. package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +2 -4
  259. package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.d.ts +1 -0
  260. package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +11 -5
  261. package/src/tasks-runner/life-cycles/view-logs-utils.js +1 -1
  262. package/src/tasks-runner/pseudo-ipc.d.ts +49 -0
  263. package/src/tasks-runner/pseudo-ipc.js +140 -0
  264. package/src/tasks-runner/pseudo-terminal.d.ts +43 -0
  265. package/src/tasks-runner/pseudo-terminal.js +159 -0
  266. package/src/tasks-runner/run-command.d.ts +1 -1
  267. package/src/tasks-runner/run-command.js +13 -19
  268. package/src/tasks-runner/task-env.js +1 -2
  269. package/src/tasks-runner/task-graph-utils.d.ts +7 -3
  270. package/src/tasks-runner/task-graph-utils.js +15 -15
  271. package/src/tasks-runner/task-orchestrator.js +68 -12
  272. package/src/tasks-runner/tasks-schedule.js +3 -3
  273. package/src/tasks-runner/utils.d.ts +16 -7
  274. package/src/tasks-runner/utils.js +30 -16
  275. package/src/utils/ab-testing.d.ts +36 -2
  276. package/src/utils/ab-testing.js +34 -16
  277. package/src/utils/assert-workspace-validity.js +1 -1
  278. package/src/utils/cache-directory.d.ts +1 -0
  279. package/src/utils/cache-directory.js +5 -1
  280. package/src/utils/child-process.d.ts +15 -1
  281. package/src/utils/child-process.js +91 -1
  282. package/src/utils/command-line-utils.js +2 -1
  283. package/src/utils/exit-codes.d.ts +6 -0
  284. package/src/utils/exit-codes.js +20 -0
  285. package/src/utils/fileutils.d.ts +1 -0
  286. package/src/utils/find-matching-projects.js +5 -5
  287. package/src/utils/find-workspace-root.js +1 -0
  288. package/src/utils/ignore.js +8 -1
  289. package/src/utils/json-diff.d.ts +1 -0
  290. package/src/utils/json-diff.js +2 -1
  291. package/src/utils/json.js +3 -1
  292. package/src/utils/logger.js +1 -1
  293. package/src/utils/nx-cloud-utils.d.ts +1 -1
  294. package/src/utils/nx-cloud-utils.js +9 -4
  295. package/src/utils/nx-plugin.d.ts +32 -15
  296. package/src/utils/nx-plugin.deprecated.d.ts +10 -5
  297. package/src/utils/nx-plugin.deprecated.js +23 -0
  298. package/src/utils/nx-plugin.js +71 -80
  299. package/src/utils/output.d.ts +4 -2
  300. package/src/utils/output.js +44 -9
  301. package/src/utils/package-json.d.ts +4 -4
  302. package/src/utils/package-json.js +18 -12
  303. package/src/utils/package-manager.d.ts +7 -0
  304. package/src/utils/package-manager.js +24 -4
  305. package/src/utils/params.d.ts +12 -4
  306. package/src/utils/params.js +37 -4
  307. package/src/utils/plugins/core-plugins.js +8 -0
  308. package/src/utils/plugins/installed-plugins.d.ts +2 -1
  309. package/src/utils/plugins/installed-plugins.js +2 -2
  310. package/src/utils/plugins/local-plugins.js +1 -1
  311. package/src/utils/plugins/plugin-capabilities.d.ts +3 -2
  312. package/src/utils/plugins/plugin-capabilities.js +7 -7
  313. package/src/utils/typescript.js +1 -1
  314. package/src/utils/update-nxw.d.ts +2 -0
  315. package/src/utils/update-nxw.js +12 -0
  316. package/src/utils/workspace-configuration-check.js +1 -1
  317. package/src/utils/workspace-context.d.ts +6 -4
  318. package/src/utils/workspace-context.js +19 -9
  319. package/src/core/graph/polyfills.js +0 -1
  320. /package/src/command-line/init/{init.d.ts → init-v1.d.ts} +0 -0
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
+ var _ProjectGraphError_errors, _ProjectGraphError_partialProjectGraph, _ProjectGraphError_partialSourceMaps;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProjectGraphAsync = exports.buildProjectGraphWithoutDaemon = exports.readProjectsConfigurationFromProjectGraph = exports.readCachedProjectConfiguration = exports.readCachedProjectGraph = void 0;
4
+ exports.createProjectGraphAndSourceMapsAsync = exports.createProjectGraphAsync = exports.ProjectGraphError = exports.buildProjectGraphAndSourceMapsWithoutDaemon = exports.readProjectsConfigurationFromProjectGraph = exports.readCachedProjectConfiguration = exports.readCachedProjectGraph = void 0;
5
+ const tslib_1 = require("tslib");
4
6
  const nx_deps_cache_1 = require("./nx-deps-cache");
5
7
  const build_project_graph_1 = require("./build-project-graph");
6
8
  const output_1 = require("../utils/output");
@@ -13,6 +15,7 @@ const perf_hooks_1 = require("perf_hooks");
13
15
  const retrieve_workspace_files_1 = require("./utils/retrieve-workspace-files");
14
16
  const nx_json_1 = require("../config/nx-json");
15
17
  const nx_plugin_1 = require("../utils/nx-plugin");
18
+ const project_configuration_utils_1 = require("./utils/project-configuration-utils");
16
19
  /**
17
20
  * Synchronously reads the latest cached copy of the workspace's ProjectGraph.
18
21
  * @throws {Error} if there is no cached ProjectGraph to read from
@@ -24,7 +27,7 @@ function readCachedProjectGraph() {
24
27
  ? (0, strip_indents_1.stripIndents) `
25
28
  Make sure invoke 'node ./decorate-angular-cli.js' in your postinstall script.
26
29
  The decorated CLI will compute the project graph.
27
- 'ng --help' should say 'Smart, Fast and Extensible Build System'.
30
+ 'ng --help' should say 'Smart Monorepos · Fast CI'.
28
31
  `
29
32
  : '';
30
33
  throw new Error((0, strip_indents_1.stripIndents) `
@@ -65,24 +68,132 @@ function readProjectsConfigurationFromProjectGraph(projectGraph) {
65
68
  };
66
69
  }
67
70
  exports.readProjectsConfigurationFromProjectGraph = readProjectsConfigurationFromProjectGraph;
68
- async function buildProjectGraphWithoutDaemon() {
71
+ async function buildProjectGraphAndSourceMapsWithoutDaemon() {
72
+ // Set this globally to allow plugins to know if they are being called from the project graph creation
73
+ global.NX_GRAPH_CREATION = true;
69
74
  const nxJson = (0, nx_json_1.readNxJson)();
70
- const { allWorkspaceFiles, fileMap, projectConfigurations, externalNodes } = await (0, retrieve_workspace_files_1.retrieveWorkspaceFiles)(workspace_root_1.workspaceRoot, nxJson);
75
+ perf_hooks_1.performance.mark('retrieve-project-configurations:start');
76
+ let configurationResult;
77
+ let projectConfigurationsError;
78
+ try {
79
+ configurationResult = await (0, retrieve_workspace_files_1.retrieveProjectConfigurations)(workspace_root_1.workspaceRoot, nxJson);
80
+ }
81
+ catch (e) {
82
+ if (e instanceof project_configuration_utils_1.ProjectConfigurationsError) {
83
+ projectConfigurationsError = e;
84
+ configurationResult = e.partialProjectConfigurationsResult;
85
+ }
86
+ else {
87
+ throw e;
88
+ }
89
+ }
90
+ const { projects, externalNodes, sourceMaps, projectRootMap } = configurationResult;
91
+ perf_hooks_1.performance.mark('retrieve-project-configurations:end');
92
+ perf_hooks_1.performance.mark('retrieve-workspace-files:start');
93
+ const { allWorkspaceFiles, fileMap, rustReferences } = await (0, retrieve_workspace_files_1.retrieveWorkspaceFiles)(workspace_root_1.workspaceRoot, projectRootMap);
94
+ perf_hooks_1.performance.mark('retrieve-workspace-files:end');
71
95
  const cacheEnabled = process.env.NX_CACHE_PROJECT_GRAPH !== 'false';
72
- const projectGraph = (await (0, build_project_graph_1.buildProjectGraphUsingProjectFileMap)(projectConfigurations.projects, externalNodes, fileMap, allWorkspaceFiles, cacheEnabled ? (0, nx_deps_cache_1.readFileMapCache)() : null, cacheEnabled)).projectGraph;
96
+ perf_hooks_1.performance.mark('build-project-graph-using-project-file-map:start');
97
+ let createDependenciesError;
98
+ let projectGraphResult;
99
+ try {
100
+ projectGraphResult = await (0, build_project_graph_1.buildProjectGraphUsingProjectFileMap)(projects, externalNodes, fileMap, allWorkspaceFiles, rustReferences, cacheEnabled ? (0, nx_deps_cache_1.readFileMapCache)() : null);
101
+ }
102
+ catch (e) {
103
+ if (e instanceof build_project_graph_1.CreateDependenciesError) {
104
+ projectGraphResult = {
105
+ projectGraph: e.partialProjectGraph,
106
+ projectFileMapCache: null,
107
+ };
108
+ createDependenciesError = e;
109
+ }
110
+ else {
111
+ throw e;
112
+ }
113
+ }
114
+ const { projectGraph, projectFileMapCache } = projectGraphResult;
115
+ perf_hooks_1.performance.mark('build-project-graph-using-project-file-map:end');
73
116
  (0, nx_plugin_1.unregisterPluginTSTranspiler)();
74
- return projectGraph;
117
+ delete global.NX_GRAPH_CREATION;
118
+ const errors = [
119
+ ...(projectConfigurationsError?.errors ?? []),
120
+ ...(createDependenciesError?.errors ?? []),
121
+ ];
122
+ if (errors.length > 0) {
123
+ throw new ProjectGraphError(errors, projectGraph, sourceMaps);
124
+ }
125
+ else {
126
+ if (cacheEnabled) {
127
+ (0, nx_deps_cache_1.writeCache)(projectFileMapCache, projectGraph);
128
+ }
129
+ return { projectGraph, sourceMaps };
130
+ }
131
+ }
132
+ exports.buildProjectGraphAndSourceMapsWithoutDaemon = buildProjectGraphAndSourceMapsWithoutDaemon;
133
+ class ProjectGraphError extends Error {
134
+ constructor(errors, partialProjectGraph, partialSourceMaps) {
135
+ super(`Failed to process project graph.`);
136
+ _ProjectGraphError_errors.set(this, void 0);
137
+ _ProjectGraphError_partialProjectGraph.set(this, void 0);
138
+ _ProjectGraphError_partialSourceMaps.set(this, void 0);
139
+ this.name = this.constructor.name;
140
+ tslib_1.__classPrivateFieldSet(this, _ProjectGraphError_errors, errors, "f");
141
+ tslib_1.__classPrivateFieldSet(this, _ProjectGraphError_partialProjectGraph, partialProjectGraph, "f");
142
+ tslib_1.__classPrivateFieldSet(this, _ProjectGraphError_partialSourceMaps, partialSourceMaps, "f");
143
+ this.stack = `${this.message}\n ${errors
144
+ .map((error) => error.stack.split('\n').join('\n '))
145
+ .join('\n')}`;
146
+ }
147
+ /**
148
+ * The daemon cannot throw errors which contain methods as they are not serializable.
149
+ *
150
+ * This method creates a new {@link ProjectGraphError} from a {@link DaemonProjectGraphError} with the methods based on the same serialized data.
151
+ */
152
+ static fromDaemonProjectGraphError(e) {
153
+ return new ProjectGraphError(e.errors, e.projectGraph, e.sourceMaps);
154
+ }
155
+ /**
156
+ * This gets the partial project graph despite the errors which occured.
157
+ * This partial project graph may be missing nodes, properties of nodes, or dependencies.
158
+ * This is useful mostly for visualization/debugging. It should not be used for running tasks.
159
+ */
160
+ getPartialProjectGraph() {
161
+ return tslib_1.__classPrivateFieldGet(this, _ProjectGraphError_partialProjectGraph, "f");
162
+ }
163
+ getPartialSourcemaps() {
164
+ return tslib_1.__classPrivateFieldGet(this, _ProjectGraphError_partialSourceMaps, "f");
165
+ }
166
+ getErrors() {
167
+ return tslib_1.__classPrivateFieldGet(this, _ProjectGraphError_errors, "f");
168
+ }
75
169
  }
76
- exports.buildProjectGraphWithoutDaemon = buildProjectGraphWithoutDaemon;
170
+ exports.ProjectGraphError = ProjectGraphError;
171
+ _ProjectGraphError_errors = new WeakMap(), _ProjectGraphError_partialProjectGraph = new WeakMap(), _ProjectGraphError_partialSourceMaps = new WeakMap();
77
172
  function handleProjectGraphError(opts, e) {
78
173
  if (opts.exitOnError) {
79
- const lines = e.message.split('\n');
80
- output_1.output.error({
81
- title: lines[0],
82
- bodyLines: lines.slice(1),
83
- });
84
- if (process.env.NX_VERBOSE_LOGGING === 'true') {
85
- console.error(e);
174
+ const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true';
175
+ if (e instanceof ProjectGraphError) {
176
+ let title = e.message;
177
+ if (isVerbose) {
178
+ title += ' See errors below.';
179
+ }
180
+ const bodyLines = isVerbose
181
+ ? [e.stack]
182
+ : ['Pass --verbose to see the stacktraces.'];
183
+ output_1.output.error({
184
+ title,
185
+ bodyLines: bodyLines,
186
+ });
187
+ }
188
+ else {
189
+ const lines = e.message.split('\n');
190
+ output_1.output.error({
191
+ title: lines[0],
192
+ bodyLines: lines.slice(1),
193
+ });
194
+ if (isVerbose) {
195
+ console.error(e);
196
+ }
86
197
  }
87
198
  process.exit(1);
88
199
  }
@@ -114,11 +225,22 @@ function handleProjectGraphError(opts, e) {
114
225
  async function createProjectGraphAsync(opts = {
115
226
  exitOnError: false,
116
227
  resetDaemonClient: false,
228
+ }) {
229
+ const projectGraphAndSourceMaps = await createProjectGraphAndSourceMapsAsync(opts);
230
+ return projectGraphAndSourceMaps.projectGraph;
231
+ }
232
+ exports.createProjectGraphAsync = createProjectGraphAsync;
233
+ async function createProjectGraphAndSourceMapsAsync(opts = {
234
+ exitOnError: false,
235
+ resetDaemonClient: false,
117
236
  }) {
118
237
  perf_hooks_1.performance.mark('create-project-graph-async:start');
119
238
  if (!client_1.daemonClient.enabled()) {
120
239
  try {
121
- const res = await buildProjectGraphWithoutDaemon();
240
+ const res = await buildProjectGraphAndSourceMapsWithoutDaemon();
241
+ perf_hooks_1.performance.measure('create-project-graph-async >> retrieve-project-configurations', 'retrieve-project-configurations:start', 'retrieve-project-configurations:end');
242
+ perf_hooks_1.performance.measure('create-project-graph-async >> retrieve-workspace-files', 'retrieve-workspace-files:start', 'retrieve-workspace-files:end');
243
+ perf_hooks_1.performance.measure('create-project-graph-async >> build-project-graph-using-project-file-map', 'build-project-graph-using-project-file-map:start', 'build-project-graph-using-project-file-map:end');
122
244
  perf_hooks_1.performance.mark('create-project-graph-async:end');
123
245
  perf_hooks_1.performance.measure('create-project-graph-async', 'create-project-graph-async:start', 'create-project-graph-async:end');
124
246
  return res;
@@ -129,13 +251,10 @@ async function createProjectGraphAsync(opts = {
129
251
  }
130
252
  else {
131
253
  try {
132
- const projectGraph = await client_1.daemonClient.getProjectGraph();
133
- if (opts.resetDaemonClient) {
134
- client_1.daemonClient.reset();
135
- }
254
+ const projectGraphAndSourceMaps = await client_1.daemonClient.getProjectGraphAndSourceMaps();
136
255
  perf_hooks_1.performance.mark('create-project-graph-async:end');
137
256
  perf_hooks_1.performance.measure('create-project-graph-async', 'create-project-graph-async:start', 'create-project-graph-async:end');
138
- return projectGraph;
257
+ return projectGraphAndSourceMaps;
139
258
  }
140
259
  catch (e) {
141
260
  if (e.message.indexOf('inotify_add_watch') > -1) {
@@ -148,7 +267,7 @@ async function createProjectGraphAsync(opts = {
148
267
  ],
149
268
  });
150
269
  (0, tmp_dir_1.markDaemonAsDisabled)();
151
- return buildProjectGraphWithoutDaemon();
270
+ return buildProjectGraphAndSourceMapsWithoutDaemon();
152
271
  }
153
272
  if (e.internalDaemonError) {
154
273
  const errorLogFile = (0, tmp_dir_1.writeDaemonLogs)(e.message);
@@ -161,10 +280,15 @@ async function createProjectGraphAsync(opts = {
161
280
  ],
162
281
  });
163
282
  (0, tmp_dir_1.markDaemonAsDisabled)();
164
- return buildProjectGraphWithoutDaemon();
283
+ return buildProjectGraphAndSourceMapsWithoutDaemon();
165
284
  }
166
285
  handleProjectGraphError(opts, e);
167
286
  }
287
+ finally {
288
+ if (opts.resetDaemonClient) {
289
+ client_1.daemonClient.reset();
290
+ }
291
+ }
168
292
  }
169
293
  }
170
- exports.createProjectGraphAsync = createProjectGraphAsync;
294
+ exports.createProjectGraphAndSourceMapsAsync = createProjectGraphAndSourceMapsAsync;
@@ -0,0 +1,2 @@
1
+ import { FileData, ProjectFileMap } from '../../config/project-graph';
2
+ export declare function buildAllWorkspaceFiles(projectFileMap: ProjectFileMap, globalFiles: FileData[]): FileData[];
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAllWorkspaceFiles = void 0;
4
+ const perf_hooks_1 = require("perf_hooks");
5
+ function buildAllWorkspaceFiles(projectFileMap, globalFiles) {
6
+ perf_hooks_1.performance.mark('get-all-workspace-files:start');
7
+ let fileData = Object.values(projectFileMap).flat();
8
+ fileData = fileData
9
+ .concat(globalFiles)
10
+ .sort((a, b) => a.file.localeCompare(b.file));
11
+ perf_hooks_1.performance.mark('get-all-workspace-files:end');
12
+ perf_hooks_1.performance.measure('get-all-workspace-files', 'get-all-workspace-files:start', 'get-all-workspace-files:end');
13
+ return fileData;
14
+ }
15
+ exports.buildAllWorkspaceFiles = buildAllWorkspaceFiles;
@@ -1,11 +1,10 @@
1
1
  import { ProjectGraphProjectNode } from '../../config/project-graph';
2
2
  import { ProjectGraphBuilder } from '../project-graph-builder';
3
- import { NxJsonConfiguration } from '../../config/nx-json';
4
3
  import { ProjectConfiguration, TargetConfiguration } from '../../config/workspace-json-project-json';
5
4
  import { CreateDependenciesContext } from '../../utils/nx-plugin';
6
- export declare function normalizeProjectNodes(ctx: CreateDependenciesContext, builder: ProjectGraphBuilder, nxJson: NxJsonConfiguration): Promise<void>;
5
+ export declare function normalizeProjectNodes(ctx: CreateDependenciesContext, builder: ProjectGraphBuilder): Promise<void>;
7
6
  /**
8
7
  * Apply target defaults and normalization
9
8
  */
10
- export declare function normalizeProjectTargets(project: ProjectConfiguration, targetDefaults: NxJsonConfiguration['targetDefaults'], projectName: string): Record<string, TargetConfiguration>;
9
+ export declare function normalizeProjectTargets(project: ProjectConfiguration, projectName: string): Record<string, TargetConfiguration>;
11
10
  export declare function normalizeImplicitDependencies(source: string, implicitDependencies: ProjectConfiguration['implicitDependencies'], projects: Record<string, ProjectGraphProjectNode>): string[];
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeImplicitDependencies = exports.normalizeProjectTargets = exports.normalizeProjectNodes = void 0;
4
4
  const find_matching_projects_1 = require("../../utils/find-matching-projects");
5
- const logger_1 = require("../../utils/logger");
6
5
  const project_configuration_utils_1 = require("../utils/project-configuration-utils");
7
- async function normalizeProjectNodes(ctx, builder, nxJson) {
6
+ async function normalizeProjectNodes(ctx, builder) {
8
7
  const toAdd = [];
9
8
  // Sorting projects by name to make sure that the order of projects in the graph is deterministic.
10
9
  // This is important to ensure that expanded properties referencing projects (e.g. implicit dependencies)
@@ -15,7 +14,7 @@ async function normalizeProjectNodes(ctx, builder, nxJson) {
15
14
  const projectConfiguration = ctx.projects[project];
16
15
  graph[project] = {
17
16
  name: project,
18
- type: projectConfiguration.projectType === 'library' ? 'lib' : 'app',
17
+ type: projectConfiguration.projectType === 'library' ? 'lib' : 'app', // missing fallback to `e2e`
19
18
  data: {
20
19
  ...projectConfiguration,
21
20
  },
@@ -25,7 +24,7 @@ async function normalizeProjectNodes(ctx, builder, nxJson) {
25
24
  for (const key of projects) {
26
25
  const p = ctx.projects[key];
27
26
  p.implicitDependencies = normalizeImplicitDependencies(key, p.implicitDependencies, partialProjectGraphNodes);
28
- p.targets = normalizeProjectTargets(p, nxJson.targetDefaults, key);
27
+ p.targets = normalizeProjectTargets(p, key);
29
28
  // TODO: remove in v16
30
29
  const projectType = p.projectType === 'application'
31
30
  ? key.endsWith('-e2e') || key === 'e2e'
@@ -62,19 +61,13 @@ exports.normalizeProjectNodes = normalizeProjectNodes;
62
61
  /**
63
62
  * Apply target defaults and normalization
64
63
  */
65
- function normalizeProjectTargets(project, targetDefaults, projectName) {
64
+ function normalizeProjectTargets(project, projectName) {
66
65
  // Any node on the graph will have a targets object, it just may be empty
67
66
  const targets = project.targets ?? {};
68
67
  for (const target in targets) {
69
- // We need to know the executor for use in readTargetDefaultsForTarget,
70
- // but we haven't resolved the `command` syntactic sugar yet.
71
- const executor = targets[target].executor ??
72
- (targets[target].command ? 'nx:run-commands' : null);
73
- // Allows things like { targetDefaults: { build: { command: tsc } } }
74
- const defaults = resolveCommandSyntacticSugar((0, project_configuration_utils_1.readTargetDefaultsForTarget)(target, targetDefaults, executor), `targetDefaults:${target}`);
75
- targets[target] = resolveCommandSyntacticSugar(targets[target], `${projectName}:${target}`);
76
- if (defaults) {
77
- targets[target] = (0, project_configuration_utils_1.mergeTargetConfigurations)(project, target, defaults);
68
+ if (!targets[target].command && !targets[target].executor) {
69
+ delete targets[target];
70
+ continue;
78
71
  }
79
72
  targets[target].options = (0, project_configuration_utils_1.resolveNxTokensInOptions)(targets[target].options, project, `${projectName}:${target}`);
80
73
  targets[target].configurations ??= {};
@@ -97,22 +90,3 @@ function normalizeImplicitDependencies(source, implicitDependencies, projects) {
97
90
  .concat(implicitDependencies.filter((x) => x.startsWith('!'))));
98
91
  }
99
92
  exports.normalizeImplicitDependencies = normalizeImplicitDependencies;
100
- function resolveCommandSyntacticSugar(target, key) {
101
- const { command, ...config } = target ?? {};
102
- if (!command) {
103
- return target;
104
- }
105
- if (config.executor) {
106
- throw new Error(`${logger_1.NX_PREFIX} ${key} should not have executor and command both configured.`);
107
- }
108
- else {
109
- return {
110
- ...config,
111
- executor: 'nx:run-commands',
112
- options: {
113
- ...config.options,
114
- command: command,
115
- },
116
- };
117
- }
118
- }
@@ -2,13 +2,75 @@ import { NxJsonConfiguration, TargetDefaults } from '../../config/nx-json';
2
2
  import { ProjectGraphExternalNode } from '../../config/project-graph';
3
3
  import { ProjectConfiguration, TargetConfiguration } from '../../config/workspace-json-project-json';
4
4
  import { LoadedNxPlugin } from '../../utils/nx-plugin';
5
- export declare function mergeProjectConfigurationIntoRootMap(projectRootMap: Map<string, ProjectConfiguration>, project: ProjectConfiguration): void;
6
- export declare function buildProjectsConfigurationsFromProjectPathsAndPlugins(nxJson: NxJsonConfiguration, projectFiles: string[], // making this parameter allows devkit to pick up newly created projects
7
- plugins: LoadedNxPlugin[], root?: string): {
5
+ import { ONLY_MODIFIES_EXISTING_TARGET } from '../../plugins/target-defaults/target-defaults-plugin';
6
+ export type SourceInformation = [file: string, plugin: string];
7
+ export type ConfigurationSourceMaps = Record<string, Record<string, SourceInformation>>;
8
+ export declare function mergeProjectConfigurationIntoRootMap(projectRootMap: Map<string, ProjectConfiguration>, project: ProjectConfiguration & {
9
+ targets?: Record<string, TargetConfiguration & {
10
+ [ONLY_MODIFIES_EXISTING_TARGET]?: boolean;
11
+ }>;
12
+ }, configurationSourceMaps?: ConfigurationSourceMaps, sourceInformation?: SourceInformation, skipCommandNormalization?: boolean): void;
13
+ export type ConfigurationResult = {
8
14
  projects: Record<string, ProjectConfiguration>;
9
15
  externalNodes: Record<string, ProjectGraphExternalNode>;
16
+ projectRootMap: Record<string, string>;
17
+ sourceMaps: ConfigurationSourceMaps;
10
18
  };
19
+ /**
20
+ * Transforms a list of project paths into a map of project configurations.
21
+ *
22
+ * @param root The workspace root
23
+ * @param nxJson The NxJson configuration
24
+ * @param workspaceFiles A list of non-ignored workspace files
25
+ * @param plugins The plugins that should be used to infer project configuration
26
+ */
27
+ export declare function createProjectConfigurations(root: string, nxJson: NxJsonConfiguration, workspaceFiles: string[], // making this parameter allows devkit to pick up newly created projects
28
+ plugins: LoadedNxPlugin[]): Promise<ConfigurationResult>;
11
29
  export declare function readProjectConfigurationsFromRootMap(projectRootMap: Map<string, ProjectConfiguration>): Record<string, ProjectConfiguration>;
12
- export declare function mergeTargetConfigurations(projectConfiguration: ProjectConfiguration, target: string, targetDefaults: TargetDefaults[string]): TargetConfiguration;
30
+ export declare class ProjectConfigurationsError extends Error {
31
+ readonly errors: Array<MergeNodesError | CreateNodesError>;
32
+ readonly partialProjectConfigurationsResult: ConfigurationResult;
33
+ constructor(errors: Array<MergeNodesError | CreateNodesError>, partialProjectConfigurationsResult: ConfigurationResult);
34
+ }
35
+ export declare class CreateNodesError extends Error {
36
+ file: string;
37
+ pluginName: string;
38
+ constructor({ file, pluginName, error, }: {
39
+ file: string;
40
+ pluginName: string;
41
+ error: Error;
42
+ });
43
+ }
44
+ export declare class MergeNodesError extends Error {
45
+ file: string;
46
+ pluginName: string;
47
+ constructor({ file, pluginName, error, }: {
48
+ file: string;
49
+ pluginName: string;
50
+ error: Error;
51
+ });
52
+ }
53
+ /**
54
+ * Merges two targets.
55
+ *
56
+ * Most properties from `target` will overwrite any properties from `baseTarget`.
57
+ * Options and configurations are treated differently - they are merged together if the executor definition is compatible.
58
+ *
59
+ * @param target The target definition with higher priority
60
+ * @param baseTarget The target definition that should be overwritten. Can be undefined, in which case the target is returned as-is.
61
+ * @param projectConfigSourceMap The source map to be filled with metadata about where each property came from
62
+ * @param sourceInformation The metadata about where the new target was defined
63
+ * @param targetIdentifier The identifier for the target to merge, used for source map
64
+ * @returns A merged target configuration
65
+ */
66
+ export declare function mergeTargetConfigurations(target: TargetConfiguration, baseTarget?: TargetConfiguration, projectConfigSourceMap?: Record<string, SourceInformation>, sourceInformation?: SourceInformation, targetIdentifier?: string): TargetConfiguration;
67
+ /**
68
+ * Checks if targets options are compatible - used when merging configurations
69
+ * to avoid merging options for @nx/js:tsc into something like @nx/webpack:webpack.
70
+ *
71
+ * If the executors are both specified and don't match, the options aren't considered
72
+ * "compatible" and shouldn't be merged.
73
+ */
74
+ export declare function isCompatibleTarget(a: TargetConfiguration, b: TargetConfiguration): boolean;
13
75
  export declare function resolveNxTokensInOptions<T extends Object | Array<unknown>>(object: T, project: ProjectConfiguration, key: string): T;
14
76
  export declare function readTargetDefaultsForTarget(targetName: string, targetDefaults: TargetDefaults, executor?: string): TargetDefaults[string];