@ohos-ports/nx 23.3.0-beta.2 → 24.0.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/README.md +3 -6
  2. package/dist/bin/nx.js +2 -2
  3. package/dist/bin/post-install.js +5 -3
  4. package/dist/nx-cloud-internals.d.ts +1 -0
  5. package/dist/nx-cloud-internals.js +7 -1
  6. package/dist/src/adapter/ngcli-adapter.js +2 -2
  7. package/dist/src/ai/clone-ai-config-repo.js +49 -12
  8. package/dist/src/command-line/add/add.d.ts +2 -0
  9. package/dist/src/command-line/add/add.js +23 -5
  10. package/dist/src/command-line/affected/affected.js +2 -2
  11. package/dist/src/command-line/configure-ai-agents/configure-ai-agents.js +0 -12
  12. package/dist/src/command-line/graph/graph.js +38 -10
  13. package/dist/src/command-line/init/command-object.js +0 -12
  14. package/dist/src/command-line/init/implementation/add-nx-to-nest.js +21 -62
  15. package/dist/src/command-line/init/init-v2.js +0 -2
  16. package/dist/src/command-line/migrate/agentic/close-agent-session.d.ts +1 -1
  17. package/dist/src/command-line/migrate/agentic/close-agent-session.js +4 -3
  18. package/dist/src/command-line/migrate/agentic/definitions.d.ts +1 -3
  19. package/dist/src/command-line/migrate/agentic/definitions.js +5 -97
  20. package/dist/src/command-line/migrate/agentic/handoff-gitignore.d.ts +7 -45
  21. package/dist/src/command-line/migrate/agentic/handoff-gitignore.js +9 -51
  22. package/dist/src/command-line/migrate/agentic/handoff.d.ts +1 -43
  23. package/dist/src/command-line/migrate/agentic/handoff.js +3 -119
  24. package/dist/src/command-line/migrate/agentic/instruction-files.d.ts +0 -21
  25. package/dist/src/command-line/migrate/agentic/instruction-files.js +6 -27
  26. package/dist/src/command-line/migrate/agentic/master/run-master-session.d.ts +19 -1
  27. package/dist/src/command-line/migrate/agentic/master/run-master-session.js +88 -49
  28. package/dist/src/command-line/migrate/agentic/master/spawn-master.d.ts +1 -0
  29. package/dist/src/command-line/migrate/agentic/master/spawn-master.js +86 -24
  30. package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.d.ts +2 -2
  31. package/dist/src/command-line/migrate/agentic/print-dropped-agent-context.js +2 -2
  32. package/dist/src/command-line/migrate/agentic/prompts/fragments.d.ts +1 -12
  33. package/dist/src/command-line/migrate/agentic/prompts/fragments.js +8 -17
  34. package/dist/src/command-line/migrate/agentic/prompts/shared-rendering.d.ts +0 -15
  35. package/dist/src/command-line/migrate/agentic/prompts/shared-rendering.js +3 -100
  36. package/dist/src/command-line/migrate/agentic/select.d.ts +12 -6
  37. package/dist/src/command-line/migrate/agentic/select.js +38 -8
  38. package/dist/src/command-line/migrate/agentic/types.d.ts +9 -68
  39. package/dist/src/command-line/migrate/agentic/types.js +6 -8
  40. package/dist/src/command-line/migrate/command-object.js +6 -10
  41. package/dist/src/command-line/migrate/execute-migration.d.ts +6 -6
  42. package/dist/src/command-line/migrate/execute-migration.js +25 -15
  43. package/dist/src/command-line/migrate/migrate-analytics.d.ts +18 -1
  44. package/dist/src/command-line/migrate/migrate-analytics.js +38 -0
  45. package/dist/src/command-line/migrate/migrate-commits.d.ts +29 -17
  46. package/dist/src/command-line/migrate/migrate-commits.js +86 -32
  47. package/dist/src/command-line/migrate/migrate-config.d.ts +6 -6
  48. package/dist/src/command-line/migrate/migrate-config.js +12 -6
  49. package/dist/src/command-line/migrate/migrate-output.d.ts +1 -6
  50. package/dist/src/command-line/migrate/migrate-output.js +1 -10
  51. package/dist/src/command-line/migrate/migrate.d.ts +6 -30
  52. package/dist/src/command-line/migrate/migrate.js +257 -255
  53. package/dist/src/command-line/migrate/resolve-package-version.d.ts +2 -4
  54. package/dist/src/command-line/migrate/resolve-package-version.js +2 -35
  55. package/dist/src/command-line/migrate/run/agent-output.d.ts +2 -0
  56. package/dist/src/command-line/migrate/run/agent-output.js +9 -0
  57. package/dist/src/command-line/migrate/run/broker.d.ts +14 -5
  58. package/dist/src/command-line/migrate/run/broker.js +69 -21
  59. package/dist/src/command-line/migrate/run/clean-retry.js +4 -2
  60. package/dist/src/command-line/migrate/run/existing-run-report.d.ts +1 -1
  61. package/dist/src/command-line/migrate/run/existing-run-report.js +7 -5
  62. package/dist/src/command-line/migrate/run/give-up.d.ts +4 -3
  63. package/dist/src/command-line/migrate/run/give-up.js +8 -5
  64. package/dist/src/command-line/migrate/run/index.d.ts +7 -5
  65. package/dist/src/command-line/migrate/run/index.js +16 -1
  66. package/dist/src/command-line/migrate/run/issues.js +7 -2
  67. package/dist/src/command-line/migrate/run/orchestrator.d.ts +61 -4
  68. package/dist/src/command-line/migrate/run/orchestrator.js +397 -133
  69. package/dist/src/command-line/migrate/run/run-state.d.ts +17 -1
  70. package/dist/src/command-line/migrate/run/run-state.js +41 -2
  71. package/dist/src/command-line/migrate/run/runbook.d.ts +1 -0
  72. package/dist/src/command-line/migrate/run/runbook.js +115 -18
  73. package/dist/src/command-line/migrate/run/state-lock.d.ts +29 -4
  74. package/dist/src/command-line/migrate/run/state-lock.js +102 -10
  75. package/dist/src/command-line/migrate/run/state-machine.js +4 -1
  76. package/dist/src/command-line/migrate/run/util.d.ts +7 -2
  77. package/dist/src/command-line/migrate/run/util.js +30 -3
  78. package/dist/src/command-line/migrate/run/worker.d.ts +1 -1
  79. package/dist/src/command-line/migrate/run/worker.js +252 -250
  80. package/dist/src/command-line/migrate/sort-migrations.d.ts +1 -7
  81. package/dist/src/command-line/migrate/sort-migrations.js +1 -12
  82. package/dist/src/command-line/nx-cloud/connect/connect-to-nx-cloud.js +17 -12
  83. package/dist/src/command-line/release/changelog.js +9 -6
  84. package/dist/src/command-line/release/config/config.d.ts +1 -0
  85. package/dist/src/command-line/release/config/config.js +48 -9
  86. package/dist/src/command-line/release/release.js +2 -2
  87. package/dist/src/command-line/release/utils/git.js +8 -7
  88. package/dist/src/command-line/release/utils/interpolate-release-config.d.ts +6 -0
  89. package/dist/src/command-line/release/utils/interpolate-release-config.js +39 -0
  90. package/dist/src/command-line/release/utils/release-graph.d.ts +5 -0
  91. package/dist/src/command-line/release/utils/release-graph.js +1 -0
  92. package/dist/src/command-line/release/utils/remote-release-clients/github.js +5 -6
  93. package/dist/src/command-line/release/utils/remote-release-clients/gitlab.js +5 -6
  94. package/dist/src/command-line/release/utils/resolve-changelog-renderer.js +2 -2
  95. package/dist/src/command-line/release/utils/shared.js +10 -10
  96. package/dist/src/command-line/release/utils/version-plan-utils.d.ts +3 -12
  97. package/dist/src/command-line/release/utils/version-plan-utils.js +33 -55
  98. package/dist/src/command-line/release/version/version-actions.js +2 -1
  99. package/dist/src/command-line/release/version.js +5 -2
  100. package/dist/src/command-line/reset/reset.js +58 -62
  101. package/dist/src/command-line/run/executor-utils.js +1 -0
  102. package/dist/src/command-line/run/run-one.d.ts +20 -1
  103. package/dist/src/command-line/run/run-one.js +153 -5
  104. package/dist/src/command-line/run/run.js +2 -1
  105. package/dist/src/command-line/show/projects.js +5 -3
  106. package/dist/src/command-line/show/show-target/info.d.ts +10 -1
  107. package/dist/src/command-line/show/show-target/info.js +100 -15
  108. package/dist/src/command-line/show/show-target/inputs.js +10 -2
  109. package/dist/src/command-line/show/show-target/utils.js +1 -0
  110. package/dist/src/command-line/watch/command-object.js +3 -22
  111. package/dist/src/command-line/watch/watch.d.ts +0 -7
  112. package/dist/src/command-line/watch/watch.js +1 -1
  113. package/dist/src/command-line/yargs-utils/shared-options.js +1 -1
  114. package/dist/src/config/misc-interfaces.d.ts +18 -0
  115. package/dist/src/config/nx-json.d.ts +22 -11
  116. package/dist/src/config/task-graph.d.ts +1 -1
  117. package/dist/src/config/workspace-json-project-json.d.ts +88 -0
  118. package/dist/src/core/graph/main.js +1 -1
  119. package/dist/src/core/graph/runtime.js +1 -1
  120. package/dist/src/core/graph/styles.css +1 -1
  121. package/dist/src/core/graph/styles.js +1 -1
  122. package/dist/src/daemon/client/client.d.ts +15 -0
  123. package/dist/src/daemon/client/client.js +181 -71
  124. package/dist/src/daemon/client/daemon-socket-messenger.d.ts +1 -1
  125. package/dist/src/daemon/client/daemon-socket-messenger.js +2 -2
  126. package/dist/src/daemon/server/client-socket-context.js +1 -1
  127. package/dist/src/daemon/server/handle-process-in-background.js +21 -9
  128. package/dist/src/daemon/server/handle-select-affected-tasks.d.ts +2 -1
  129. package/dist/src/daemon/server/handle-select-affected-tasks.js +21 -13
  130. package/dist/src/daemon/server/native-js-loader.d.ts +1 -0
  131. package/dist/src/daemon/server/native-js-loader.js +21 -0
  132. package/dist/src/daemon/server/project-graph-incremental-recomputation.js +4 -8
  133. package/dist/src/daemon/server/server.d.ts +2 -1
  134. package/dist/src/daemon/server/server.js +17 -4
  135. package/dist/src/daemon/server/shutdown-utils.js +0 -3
  136. package/dist/src/daemon/server/start.d.ts +1 -0
  137. package/dist/src/daemon/server/start.js +2 -0
  138. package/dist/src/daemon/socket-utils.d.ts +11 -9
  139. package/dist/src/daemon/socket-utils.js +31 -61
  140. package/dist/src/daemon/tmp-dir.d.ts +19 -14
  141. package/dist/src/daemon/tmp-dir.js +142 -354
  142. package/dist/src/devkit-exports.d.ts +9 -1
  143. package/dist/src/devkit-exports.js +12 -1
  144. package/dist/src/devkit-internals.d.ts +6 -5
  145. package/dist/src/devkit-internals.js +13 -4
  146. package/dist/src/executors/run-commands/run-commands.impl.d.ts +4 -2
  147. package/dist/src/executors/run-commands/run-commands.impl.js +53 -27
  148. package/dist/src/executors/run-commands/running-tasks.d.ts +13 -4
  149. package/dist/src/executors/run-commands/running-tasks.js +148 -95
  150. package/dist/src/executors/run-commands/schema.json +1 -1
  151. package/dist/src/hasher/check-task-files.js +5 -8
  152. package/dist/src/hasher/file-hasher.js +9 -7
  153. package/dist/src/hasher/hash-task.js +4 -0
  154. package/dist/src/hasher/native-task-hasher-impl.js +3 -1
  155. package/dist/src/hasher/task-hasher.d.ts +2 -0
  156. package/dist/src/hasher/task-hasher.js +4 -1
  157. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.d.ts +1 -2
  158. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.js +6 -11
  159. package/dist/src/migrations/update-23-2-0/set-cache-on-executor-target-defaults.md +2 -2
  160. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.d.ts +4 -0
  161. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.js +15 -0
  162. package/dist/src/migrations/update-24-0-0/enable-legacy-affected.md +30 -0
  163. package/dist/src/migrations/update-24-0-0/find-custom-hashers.d.ts +3 -0
  164. package/dist/src/migrations/update-24-0-0/find-custom-hashers.js +100 -0
  165. package/dist/src/migrations/update-24-0-0/find-custom-hashers.md +63 -0
  166. package/dist/src/migrations/update-24-0-0/move-custom-hashers-to-inputs.md +146 -0
  167. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.d.ts +3 -0
  168. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.js +130 -0
  169. package/dist/src/migrations/update-24-0-0/rename-ultracache-ignore-options.md +62 -0
  170. package/dist/src/native/assert-supported-platform.js +1 -1
  171. package/dist/src/native/index.d.ts +238 -18
  172. package/dist/src/native/index.js +6 -1
  173. package/dist/src/native/native-bindings.js +15 -6
  174. package/dist/src/native/nx.openharmony-arm64.node +0 -0
  175. package/dist/src/native/nx.wasi-browser.js +1 -0
  176. package/dist/src/native/nx.wasi.cjs +1 -0
  177. package/dist/src/native/nx.wasm32-wasi.debug.wasm +0 -0
  178. package/dist/src/native/nx.wasm32-wasi.wasm +0 -0
  179. package/dist/src/nx-cloud/update-manager.d.ts +14 -0
  180. package/dist/src/nx-cloud/update-manager.js +237 -50
  181. package/dist/src/plugins/js/lock-file/pnpm-parser.js +3 -4
  182. package/dist/src/plugins/js/lock-file/pruned-output.d.ts +2 -2
  183. package/dist/src/plugins/js/lock-file/pruned-output.js +4 -4
  184. package/dist/src/plugins/js/utils/register.js +9 -4
  185. package/dist/src/project-graph/affected/affected-tasks.d.ts +9 -6
  186. package/dist/src/project-graph/affected/affected-tasks.js +31 -7
  187. package/dist/src/project-graph/plugins/isolation/isolated-plugin.js +7 -0
  188. package/dist/src/project-graph/plugins/loaded-nx-plugin.js +49 -6
  189. package/dist/src/project-graph/utils/project-configuration/target-merging.js +1 -1
  190. package/dist/src/project-graph/utils/project-configuration/target-normalization.js +12 -133
  191. package/dist/src/project-graph/utils/project-configuration-utils.js +2 -2
  192. package/dist/src/project-graph/utils/retrieve-workspace-files.js +27 -6
  193. package/dist/src/tasks-runner/create-task-graph.d.ts +8 -7
  194. package/dist/src/tasks-runner/create-task-graph.js +50 -27
  195. package/dist/src/tasks-runner/default-tasks-runner.js +1 -1
  196. package/dist/src/tasks-runner/init-tasks-runner.js +116 -59
  197. package/dist/src/tasks-runner/life-cycle.d.ts +4 -1
  198. package/dist/src/tasks-runner/life-cycle.js +7 -0
  199. package/dist/src/tasks-runner/life-cycles/performance-analysis.d.ts +5 -2
  200. package/dist/src/tasks-runner/life-cycles/performance-analysis.js +13 -7
  201. package/dist/src/tasks-runner/life-cycles/performance-life-cycle.d.ts +4 -3
  202. package/dist/src/tasks-runner/life-cycles/performance-life-cycle.js +9 -2
  203. package/dist/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +5 -2
  204. package/dist/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +4 -1
  205. package/dist/src/tasks-runner/life-cycles/summary-terminal-output-life-cycle.js +5 -1
  206. package/dist/src/tasks-runner/pseudo-ipc.d.ts +1 -0
  207. package/dist/src/tasks-runner/pseudo-ipc.js +4 -0
  208. package/dist/src/tasks-runner/pseudo-terminal.d.ts +1 -1
  209. package/dist/src/tasks-runner/pseudo-terminal.js +2 -2
  210. package/dist/src/tasks-runner/readiness/executor-ready-signal.d.ts +7 -0
  211. package/dist/src/tasks-runner/readiness/executor-ready-signal.js +43 -0
  212. package/dist/src/tasks-runner/readiness/probes.d.ts +14 -0
  213. package/dist/src/tasks-runner/readiness/probes.js +101 -0
  214. package/dist/src/tasks-runner/readiness/ready-signal-server.d.ts +18 -0
  215. package/dist/src/tasks-runner/readiness/ready-signal-server.js +72 -0
  216. package/dist/src/tasks-runner/readiness/ready-signal.d.ts +33 -0
  217. package/dist/src/tasks-runner/readiness/ready-signal.js +92 -0
  218. package/dist/src/tasks-runner/readiness/ready-when.d.ts +84 -0
  219. package/dist/src/tasks-runner/readiness/ready-when.js +371 -0
  220. package/dist/src/tasks-runner/readiness/startup-host.d.ts +1 -0
  221. package/dist/src/tasks-runner/readiness/startup-host.js +32 -0
  222. package/dist/src/tasks-runner/run-command.d.ts +6 -2
  223. package/dist/src/tasks-runner/run-command.js +21 -31
  224. package/dist/src/tasks-runner/run-outcome.d.ts +16 -0
  225. package/dist/src/tasks-runner/run-outcome.js +39 -0
  226. package/dist/src/tasks-runner/running-tasks/batch-process.js +6 -0
  227. package/dist/src/tasks-runner/running-tasks/node-child-process.js +5 -4
  228. package/dist/src/tasks-runner/running-tasks/running-task.d.ts +1 -1
  229. package/dist/src/tasks-runner/task-env.d.ts +10 -0
  230. package/dist/src/tasks-runner/task-env.js +37 -5
  231. package/dist/src/tasks-runner/task-graph-utils.d.ts +9 -6
  232. package/dist/src/tasks-runner/task-graph-utils.js +17 -12
  233. package/dist/src/tasks-runner/task-orchestrator.d.ts +62 -18
  234. package/dist/src/tasks-runner/task-orchestrator.js +750 -150
  235. package/dist/src/tasks-runner/tasks-runner.d.ts +1 -1
  236. package/dist/src/tasks-runner/tasks-schedule.d.ts +18 -1
  237. package/dist/src/tasks-runner/tasks-schedule.js +63 -6
  238. package/dist/src/tasks-runner/tokens.d.ts +54 -0
  239. package/dist/src/tasks-runner/tokens.js +161 -0
  240. package/dist/src/tasks-runner/utils.d.ts +35 -6
  241. package/dist/src/tasks-runner/utils.js +149 -68
  242. package/dist/src/ultracache/ci-status.d.ts +24 -0
  243. package/dist/src/ultracache/ci-status.js +87 -0
  244. package/dist/src/ultracache/config.d.ts +3 -3
  245. package/dist/src/ultracache/config.js +4 -4
  246. package/dist/src/ultracache/fetch.d.ts +2 -0
  247. package/dist/src/ultracache/fetch.js +1 -0
  248. package/dist/src/ultracache/overrides.js +4 -0
  249. package/dist/src/utils/acknowledge-build-scripts.d.ts +34 -1
  250. package/dist/src/utils/acknowledge-build-scripts.js +171 -32
  251. package/dist/src/utils/child-process.js +2 -1
  252. package/dist/src/utils/find-matching-projects.js +9 -6
  253. package/dist/src/utils/git-utils.d.ts +12 -5
  254. package/dist/src/utils/git-utils.js +69 -11
  255. package/dist/src/utils/long-running-target.d.ts +1 -3
  256. package/dist/src/utils/long-running-target.js +1 -3
  257. package/dist/src/utils/output.d.ts +4 -3
  258. package/dist/src/utils/output.js +4 -3
  259. package/dist/src/utils/owned-private-dir.d.ts +1 -17
  260. package/dist/src/utils/owned-private-dir.js +10 -62
  261. package/dist/src/utils/package-manager.d.ts +8 -0
  262. package/dist/src/utils/package-manager.js +65 -8
  263. package/dist/src/utils/perf-hooks.d.ts +1 -0
  264. package/dist/src/utils/plugins/core-plugins.js +5 -1
  265. package/dist/src/utils/progress-topics.d.ts +1 -0
  266. package/dist/src/utils/progress-topics.js +1 -0
  267. package/dist/src/utils/safe-spawn.js +1 -5
  268. package/dist/src/utils/shell-quoting.d.ts +8 -1
  269. package/dist/src/utils/shell-quoting.js +12 -1
  270. package/dist/src/utils/spawn-without-terminal.d.ts +27 -0
  271. package/dist/src/utils/spawn-without-terminal.js +110 -0
  272. package/dist/src/utils/string-similarity.d.ts +38 -0
  273. package/dist/src/utils/string-similarity.js +108 -0
  274. package/migrations.json +20 -6
  275. package/package.json +15 -24
  276. package/schemas/migrations-schema.json +11 -0
  277. package/schemas/nx-schema.json +133 -11
  278. package/schemas/project-schema.json +114 -4
  279. package/dist/src/command-line/migrate/agentic/prompts/generic-validation.d.ts +0 -56
  280. package/dist/src/command-line/migrate/agentic/prompts/generic-validation.js +0 -67
  281. package/dist/src/command-line/migrate/agentic/prompts/hybrid-prompt-migration.d.ts +0 -49
  282. package/dist/src/command-line/migrate/agentic/prompts/hybrid-prompt-migration.js +0 -53
  283. package/dist/src/command-line/migrate/agentic/prompts/prompt-migration.d.ts +0 -26
  284. package/dist/src/command-line/migrate/agentic/prompts/prompt-migration.js +0 -27
  285. package/dist/src/command-line/migrate/agentic/prompts/system-prompt.d.ts +0 -70
  286. package/dist/src/command-line/migrate/agentic/prompts/system-prompt.js +0 -113
  287. package/dist/src/command-line/migrate/agentic/run-step.d.ts +0 -68
  288. package/dist/src/command-line/migrate/agentic/run-step.js +0 -148
  289. package/dist/src/command-line/migrate/agentic/runner.d.ts +0 -21
  290. package/dist/src/command-line/migrate/agentic/runner.js +0 -262
  291. package/dist/src/migrations/update-23-0-0/consolidate-release-tag-config.d.ts +0 -9
  292. package/dist/src/migrations/update-23-0-0/consolidate-release-tag-config.js +0 -18
  293. package/dist/src/tasks-runner/legacy-depends-on-warning.d.ts +0 -18
  294. package/dist/src/tasks-runner/legacy-depends-on-warning.js +0 -109
@@ -155,7 +155,9 @@ async function handleMessage(socket, data) {
155
155
  await handleResult(socket, 'HASH_TASKS_UPFRONT', () => (0, handle_hash_tasks_1.handleHashTasksUpfront)(payload), mode);
156
156
  }
157
157
  else if (payload.type === 'PROCESS_IN_BACKGROUND') {
158
- await handleResult(socket, 'PROCESS_IN_BACKGROUND', () => (0, handle_process_in_background_1.handleProcessInBackground)(payload), mode);
158
+ // The client names the module to run, so its failure says nothing about
159
+ // the daemon's health. Respond, but stay alive for other clients.
160
+ await handleResult(socket, 'PROCESS_IN_BACKGROUND', () => (0, handle_process_in_background_1.handleProcessInBackground)(payload), mode, shutdown_utils_1.respondWithError);
159
161
  }
160
162
  else if (payload.type === 'RECORD_OUTPUTS_HASH_BATCH') {
161
163
  await handleResult(socket, 'RECORD_OUTPUTS_HASH_BATCH', () => (0, handle_outputs_tracking_1.handleRecordOutputsHashBatch)(payload), mode);
@@ -168,6 +170,17 @@ async function handleMessage(socket, data) {
168
170
  }
169
171
  else if (payload.type === 'REGISTER_FILE_WATCHER') {
170
172
  file_watcher_sockets_1.registeredFileWatcherSockets.push({ socket, config: payload.config });
173
+ // A client must not announce readiness until this socket is subscribed.
174
+ // Older clients do not request an acknowledgement and expect only changes.
175
+ if (payload.registrationId) {
176
+ await handleResult(socket, 'REGISTER_FILE_WATCHER', async () => ({
177
+ description: 'File watcher registered',
178
+ response: {
179
+ type: 'FILE_WATCHER_REGISTERED',
180
+ registrationId: payload.registrationId,
181
+ },
182
+ }), mode);
183
+ }
171
184
  }
172
185
  else if ((0, register_project_graph_listener_1.isRegisterProjectGraphListenerMessage)(payload)) {
173
186
  project_graph_listener_sockets_1.registeredProjectGraphListenerSockets.push(socket);
@@ -218,7 +231,7 @@ async function handleMessage(socket, data) {
218
231
  await handleResult(socket, get_plugin_capabilities_1.GET_PLUGIN_CAPABILITIES, () => (0, handle_get_plugin_capabilities_1.handleGetPluginCapabilities)(), mode);
219
232
  }
220
233
  else if ((0, select_affected_tasks_1.isHandleSelectAffectedTasksMessage)(payload)) {
221
- await handleResult(socket, select_affected_tasks_1.SELECT_AFFECTED_TASKS, () => (0, handle_select_affected_tasks_1.handleSelectAffectedTasks)(payload.request), mode);
234
+ await handleResult(socket, select_affected_tasks_1.SELECT_AFFECTED_TASKS, () => (0, handle_select_affected_tasks_1.handleSelectAffectedTasks)(payload.request, socket), mode);
222
235
  }
223
236
  else if ((0, update_workspace_context_1.isHandleUpdateWorkspaceContextMessage)(payload)) {
224
237
  await handleResult(socket, update_workspace_context_1.UPDATE_WORKSPACE_CONTEXT, () => (0, handle_update_workspace_context_1.handleUpdateWorkspaceContext)(payload.createdFiles, payload.updatedFiles, payload.deletedFiles), mode);
@@ -245,7 +258,7 @@ async function handleMessage(socket, data) {
245
258
  await (0, shutdown_utils_1.respondWithErrorAndExit)(socket, `Invalid payload from the client`, new Error(`Unsupported payload sent to daemon server: ${(0, consume_messages_from_socket_1.describeMessage)(unparsedPayload, { maxBytes: 200 })}`));
246
259
  }
247
260
  }
248
- async function handleResult(socket, type, hrFn, mode) {
261
+ async function handleResult(socket, type, hrFn, mode, respondToError = shutdown_utils_1.respondWithErrorAndExit) {
249
262
  let hr;
250
263
  const startMark = new Date();
251
264
  try {
@@ -256,7 +269,7 @@ async function handleResult(socket, type, hrFn, mode) {
256
269
  }
257
270
  const doneHandlingMark = new Date();
258
271
  if (hr.error) {
259
- await (0, shutdown_utils_1.respondWithErrorAndExit)(socket, hr.description, hr.error);
272
+ await respondToError(socket, hr.description, hr.error);
260
273
  }
261
274
  else {
262
275
  logger_1.serverLogger.log(`Serializing response for ${type} message in ${mode} mode`);
@@ -11,7 +11,6 @@ const workspace_root_1 = require("../../utils/workspace-root");
11
11
  const logger_1 = require("../logger");
12
12
  const socket_utils_1 = require("../socket-utils");
13
13
  const cache_1 = require("../cache");
14
- const workspace_context_1 = require("../../utils/workspace-context");
15
14
  const error_types_1 = require("../../project-graph/error-types");
16
15
  const get_plugins_1 = require("../../project-graph/plugins/get-plugins");
17
16
  const consume_messages_from_socket_1 = require("../../utils/consume-messages-from-socket");
@@ -78,8 +77,6 @@ async function performShutdown(server, reason, sockets) {
78
77
  socket.destroy();
79
78
  }
80
79
  });
81
- (0, workspace_context_1.stopWatchingWorkspaceContext)();
82
- logger_1.serverLogger.watcherLog(`Stopping the watch for ${workspace_root_1.workspaceRoot}`);
83
80
  (0, cache_1.deleteDaemonJsonProcessCache)();
84
81
  (0, get_plugins_1.cleanupPlugins)();
85
82
  // Clean up shared latest Nx installation
@@ -1 +1,2 @@
1
1
  import '../../utils/enable-compile-cache';
2
+ import './native-js-loader';
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  // Must be the first import — see enable-compile-cache.ts.
5
5
  require("../../utils/enable-compile-cache");
6
+ // Captures Node's .js loader before user code can hook it, see native-js-loader.ts.
7
+ require("./native-js-loader");
6
8
  const output_1 = require("../../utils/output");
7
9
  const server_1 = require("./server");
8
10
  const process = tslib_1.__importStar(require("process"));
@@ -1,15 +1,20 @@
1
1
  import type { Socket } from 'net';
2
2
  export declare const isWindows: boolean;
3
3
  /**
4
- * For IPC with the daemon server we use unix sockets or windows named pipes, depending on the user's operating system.
4
+ * For IPC with the daemon server we use unix sockets or windows named pipes,
5
+ * depending on the user's operating system.
5
6
  *
6
- * See https://nodejs.org/dist/latest-v14.x/docs/api/net.html#net_identifying_paths_for_ipc_connections for a full breakdown
7
- * of OS differences between Unix domain sockets and named pipes.
7
+ * The paths themselves — the directory, the file name, the named-pipe form, and
8
+ * the length budget — are all decided in `native/utils/socket_path.rs`, so that
9
+ * Nx and Nx Console cannot disagree about where a socket lives.
10
+ *
11
+ * See https://nodejs.org/dist/latest-v14.x/docs/api/net.html#net_identifying_paths_for_ipc_connections
12
+ * for a full breakdown of OS differences between Unix domain sockets and named
13
+ * pipes.
8
14
  */
9
15
  export declare const getFullOsSocketPath: () => string;
10
16
  export declare const getForkedProcessOsSocketPath: (id: string) => string;
11
17
  export declare const getPluginOsSocketPath: (id: string) => string;
12
- export declare function getPluginSocketFileName(id: string): string;
13
18
  export declare function killSocketOrPath(): void;
14
19
  export declare function serializeResult(error: Error | null, serializedProjectGraph: string | null, serializedSourceMaps: string | null): string | null;
15
20
  /**
@@ -26,12 +31,9 @@ export declare function serializeWithFallback(data: any, preferred: 'v8' | 'json
26
31
  * Serialize data for IPC using the format the user configured.
27
32
  *
28
33
  * @param data Data to serialize
29
- * @param force Use this format without falling back. For callers whose data is
30
- * known to be unrepresentable in the other format, where a fallback
31
- * would only swap one failure for a less obvious one.
32
34
  * @returns Serialized data as bytes ready to be framed onto a socket
33
35
  */
34
- export declare function serialize(data: any, force?: 'v8' | 'json'): Buffer;
36
+ export declare function serialize(data: any): Buffer;
35
37
  /**
36
38
  * Serialize `data` and write it as one framed message.
37
39
  *
@@ -40,4 +42,4 @@ export declare function serialize(data: any, force?: 'v8' | 'json'): Buffer;
40
42
  * already hold bytes, and having it reach back into the daemon's serializer
41
43
  * would invert the dependency.
42
44
  */
43
- export declare function sendMessage(socket: Socket, data: any, force?: 'v8' | 'json', callback?: (err?: Error) => void): void;
45
+ export declare function sendMessage(socket: Socket, data: any, callback?: (err?: Error) => void): void;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPluginOsSocketPath = exports.getForkedProcessOsSocketPath = exports.getFullOsSocketPath = exports.isWindows = void 0;
4
- exports.getPluginSocketFileName = getPluginSocketFileName;
5
4
  exports.killSocketOrPath = killSocketOrPath;
6
5
  exports.serializeResult = serializeResult;
7
6
  exports.serializeWithFallback = serializeWithFallback;
@@ -9,7 +8,6 @@ exports.serialize = serialize;
9
8
  exports.sendMessage = sendMessage;
10
9
  const fs_1 = require("fs");
11
10
  const os_1 = require("os");
12
- const path_1 = require("path");
13
11
  const tmp_dir_1 = require("./tmp-dir");
14
12
  const serializable_error_1 = require("../utils/serializable-error");
15
13
  const is_v8_serializer_enabled_1 = require("./is-v8-serializer-enabled");
@@ -17,58 +15,23 @@ const v8_1 = require("v8");
17
15
  const consume_messages_from_socket_1 = require("../utils/consume-messages-from-socket");
18
16
  exports.isWindows = (0, os_1.platform)() === 'win32';
19
17
  /**
20
- * For IPC with the daemon server we use unix sockets or windows named pipes, depending on the user's operating system.
18
+ * For IPC with the daemon server we use unix sockets or windows named pipes,
19
+ * depending on the user's operating system.
21
20
  *
22
- * See https://nodejs.org/dist/latest-v14.x/docs/api/net.html#net_identifying_paths_for_ipc_connections for a full breakdown
23
- * of OS differences between Unix domain sockets and named pipes.
21
+ * The paths themselves — the directory, the file name, the named-pipe form, and
22
+ * the length budget — are all decided in `native/utils/socket_path.rs`, so that
23
+ * Nx and Nx Console cannot disagree about where a socket lives.
24
+ *
25
+ * See https://nodejs.org/dist/latest-v14.x/docs/api/net.html#net_identifying_paths_for_ipc_connections
26
+ * for a full breakdown of OS differences between Unix domain sockets and named
27
+ * pipes.
24
28
  */
25
- const getFullOsSocketPath = () => {
26
- const path = (0, path_1.resolve)((0, tmp_dir_1.getDaemonSocketDir)());
27
- assertValidSocketPath(path);
28
- return exports.isWindows ? '\\\\.\\pipe\\nx\\' + path : path;
29
- };
29
+ const getFullOsSocketPath = () => (0, tmp_dir_1.getDaemonSocketPath)();
30
30
  exports.getFullOsSocketPath = getFullOsSocketPath;
31
- const getForkedProcessOsSocketPath = (id) => {
32
- let path = (0, path_1.resolve)((0, path_1.join)((0, tmp_dir_1.getSocketDir)(), 'fp' + id + '.sock'));
33
- assertValidSocketPath(path);
34
- return exports.isWindows ? '\\\\.\\pipe\\nx\\' + path : path;
35
- };
31
+ const getForkedProcessOsSocketPath = (id) => (0, tmp_dir_1.getForkedProcessSocketPath)(id);
36
32
  exports.getForkedProcessOsSocketPath = getForkedProcessOsSocketPath;
37
- const getPluginOsSocketPath = (id) => {
38
- let path = (0, path_1.resolve)((0, path_1.join)((0, tmp_dir_1.getPluginSocketDir)(), getPluginSocketFileName(id)));
39
- assertValidSocketPath(path);
40
- return exports.isWindows ? '\\\\.\\pipe\\nx\\' + path : path;
41
- };
33
+ const getPluginOsSocketPath = (id) => (0, tmp_dir_1.getPluginSocketPath)(id);
42
34
  exports.getPluginOsSocketPath = getPluginOsSocketPath;
43
- function getPluginSocketFileName(id) {
44
- return `p${id}.sock`;
45
- }
46
- function assertValidSocketPath(path) {
47
- if (path.length > 95) {
48
- const fallbackCause = (0, tmp_dir_1.getSocketDirFallbackCause)();
49
- const refusedConfiguredSocketDir = (0, tmp_dir_1.getRefusedConfiguredSocketDir)();
50
- throw new Error([
51
- 'Attempted to open socket that exceeds the maximum socket length.',
52
- ...(fallbackCause === undefined
53
- ? []
54
- : [
55
- `Nx fell back to ${(0, path_1.dirname)(path)} because the default socket directory could not be used.`,
56
- 'Run the command with --verbose to see why the default directory was rejected.',
57
- ]),
58
- '',
59
- ...(refusedConfiguredSocketDir === undefined
60
- ? [
61
- `Set NX_SOCKET_DIR to a shorter path (e.g. ${exports.isWindows ? '%TMP%/nx-tmp' : '/tmp/nx-tmp'}) to avoid this issue.`,
62
- ]
63
- : [
64
- // Saying "set a shorter path" here would be advice they already
65
- // followed: they set one, and it was refused for another reason.
66
- `The directory set in NX_SOCKET_DIR (${refusedConfiguredSocketDir}) could not be used — see the warning above — so Nx fell back to a longer path.`,
67
- 'Point NX_SOCKET_DIR at a short directory your user owns.',
68
- ]),
69
- ].join('\n'), fallbackCause === undefined ? undefined : { cause: fallbackCause });
70
- }
71
- }
72
35
  function killSocketOrPath() {
73
36
  try {
74
37
  (0, fs_1.unlinkSync)((0, exports.getFullOsSocketPath)());
@@ -80,6 +43,9 @@ function serializeResult(error, serializedProjectGraph, serializedSourceMaps) {
80
43
  // We do not want to repeat work `JSON.stringify`ing an object containing the potentially large project graph so merge as strings
81
44
  return `{ "error": ${JSON.stringify(error ? (0, serializable_error_1.createSerializableError)(error) : error)}, "projectGraph": ${serializedProjectGraph}, "sourceMaps": ${serializedSourceMaps} }`;
82
45
  }
46
+ function stackOf(e) {
47
+ return e instanceof Error ? (e.stack ?? String(e)) : String(e);
48
+ }
83
49
  function serializeAs(data, format) {
84
50
  return format === 'v8'
85
51
  ? (0, v8_1.serialize)(data)
@@ -98,25 +64,29 @@ function serializeWithFallback(data, preferred) {
98
64
  try {
99
65
  return serializeAs(data, preferred);
100
66
  }
101
- catch (e) {
67
+ catch (preferredError) {
102
68
  const fallback = preferred === 'v8' ? 'json' : 'v8';
103
- console.warn(`Data could not be serialized using ${preferred} serialization: ${e}. Falling back to ${fallback} serialization.`);
104
- return serializeAs(data, fallback);
69
+ console.warn(`Data could not be serialized using ${preferred} serialization: ${preferredError}. Falling back to ${fallback} serialization.`);
70
+ try {
71
+ return serializeAs(data, fallback);
72
+ }
73
+ catch (fallbackError) {
74
+ throw new Error([
75
+ `Data could not be serialized using either ${preferred} or ${fallback} serialization.`,
76
+ `${preferred} failed with: ${stackOf(preferredError)}`,
77
+ `${fallback} failed with: ${stackOf(fallbackError)}`,
78
+ ].join('\n\n'), { cause: fallbackError });
79
+ }
105
80
  }
106
81
  }
107
82
  /**
108
83
  * Serialize data for IPC using the format the user configured.
109
84
  *
110
85
  * @param data Data to serialize
111
- * @param force Use this format without falling back. For callers whose data is
112
- * known to be unrepresentable in the other format, where a fallback
113
- * would only swap one failure for a less obvious one.
114
86
  * @returns Serialized data as bytes ready to be framed onto a socket
115
87
  */
116
- function serialize(data, force) {
117
- return force
118
- ? serializeAs(data, force)
119
- : serializeWithFallback(data, (0, is_v8_serializer_enabled_1.isV8SerializerEnabled)() ? 'v8' : 'json');
88
+ function serialize(data) {
89
+ return serializeWithFallback(data, (0, is_v8_serializer_enabled_1.isV8SerializerEnabled)() ? 'v8' : 'json');
120
90
  }
121
91
  /**
122
92
  * Serialize `data` and write it as one framed message.
@@ -126,6 +96,6 @@ function serialize(data, force) {
126
96
  * already hold bytes, and having it reach back into the daemon's serializer
127
97
  * would invert the dependency.
128
98
  */
129
- function sendMessage(socket, data, force, callback) {
130
- (0, consume_messages_from_socket_1.writeMessage)(socket, serialize(data, force), callback);
99
+ function sendMessage(socket, data, callback) {
100
+ (0, consume_messages_from_socket_1.writeMessage)(socket, serialize(data), callback);
131
101
  }
@@ -24,7 +24,6 @@ export declare class InvalidSocketDirConfigured extends Error {
24
24
  }
25
25
  export declare const DAEMON_DIR_FOR_CURRENT_WORKSPACE: string;
26
26
  export declare const DAEMON_OUTPUT_LOG_FILE: string;
27
- export declare const getDaemonSocketDir: () => string;
28
27
  export declare function writeDaemonLogs(error?: string): string;
29
28
  export declare function markDaemonAsDisabled(reason: string): void;
30
29
  /**
@@ -38,25 +37,31 @@ export declare function markDaemonAsDisabled(reason: string): void;
38
37
  */
39
38
  export declare function disableDaemonForThisProcess(reason: string): void;
40
39
  export declare function isDaemonDisabled(): boolean;
41
- export declare function getSocketDir(): string;
42
- /**
43
- * Plugin worker sockets get their own workspace-scoped directory rather than
44
- * sitting in the shared system temp dir, which cannot be locked down.
45
- */
46
- export declare function getPluginSocketDir(): string;
47
40
  /**
48
41
  * Exported for tests: both fallback warnings fire once per process, so a suite
49
42
  * that stages either fallback more than once has to clear the latches between
50
43
  * cases.
51
44
  */
52
45
  export declare function resetSocketDirWarningsForTesting(): void;
53
- export declare function getSocketDirFallbackCause(): unknown;
46
+ /** The daemon's own socket. */
47
+ export declare function getDaemonSocketPath(): string;
48
+ /** A forked task process's socket, in the daemon's per-run directory. */
49
+ export declare function getForkedProcessSocketPath(id: string): string;
50
+ /**
51
+ * Plugin worker sockets get their own workspace-scoped directory rather than
52
+ * sitting in the shared system temp dir, which cannot be locked down.
53
+ */
54
+ export declare function getPluginSocketPath(id: string): string;
54
55
  /**
55
- * The NX_SOCKET_DIR that was refused, if that is why we are in the fallback.
56
- * Reflects the most recent resolution only — both accessors are cleared at the
57
- * top of every `createOwnerOnlySocketDir` call, and the daemon and plugin socket
58
- * paths each drive one. Read it immediately after the call that produced the
59
- * path, which is what `assertValidSocketPath` does.
56
+ * Where the Nx Console socket lives, for whoever binds or connects to it.
57
+ *
58
+ * Nx Console is the server here and Nx the client, so the extension listens
59
+ * where this says and Nx dials it.
60
+ *
61
+ * @param workspaceRootOverride the workspace to resolve for, when the caller is
62
+ * not itself running inside it (Nx Console runs in the editor's extension host)
63
+ * @param env the environment to read `NX_SOCKET_DIR` from, for callers that
64
+ * load a workspace `.env` into a copy rather than into `process.env`
60
65
  */
61
- export declare function getRefusedConfiguredSocketDir(): string | undefined;
66
+ export declare function getNxConsoleSocketPath(workspaceRootOverride?: string, env?: Record<string, string>): string;
62
67
  export declare function removeSocketDir(): void;